diff --git a/.tx/config b/.tx/config
index 423e742011b31180fa2fa34fa9b876905ef63aed..442e2561d32b970a339c27194210fdd784dc681d 100644
--- a/.tx/config
+++ b/.tx/config
@@ -575,6 +575,7 @@ trans.de = installer/resources/locale-man/man_de.po
 trans.es = installer/resources/locale-man/man_es.po
 trans.fi = installer/resources/locale-man/man_fi.po
 trans.fr = installer/resources/locale-man/man_fr.po
+trans.hu = installer/resources/locale-man/man_hu.po
 trans.id = installer/resources/locale-man/man_id.po
 trans.it = installer/resources/locale-man/man_it.po
 trans.ko = installer/resources/locale-man/man_ko.po
diff --git a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
index a42e610b6b0812d6d95e9a66e7d7489302b92181..a8661176d99d76e39ee981897a194f19b149171e 100644
--- a/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
+++ b/apps/routerconsole/java/src/net/i2p/router/web/helpers/HomeHelper.java
@@ -92,7 +92,7 @@ public class HomeHelper extends HelperBase {
         _x("Project Website") + S + _x("I2P home page") + S + "http://i2p-projekt.i2p/" + S + I + "glass.png" + S +
         //_x("lenta news [ru]") + S + _x("Russian News Feed") + S + "http://lenta.i2p/" + S + I + "lenta_main_logo.png" + S +
         //"Salt" + S + "salt.i2p" + S + "http://salt.i2p/" + S + I + "salt_console.png" + S +
-        _x("The Tin Hat") + S + _x("Privacy guides and tutorials") + S + "http://secure.thetinhat.i2p/" + S + I + "thetinhat.png" + S +
+        //_x("The Tin Hat") + S + _x("Privacy guides and tutorials") + S + "http://secure.thetinhat.i2p/" + S + I + "thetinhat.png" + S +
         //_x("Ugha's Wiki") + S + S + "http://ugha.i2p/" + S + I + "billiard_marker.png" + S +
         //"sponge.i2p" + S + _x("Seedless and the Robert BitTorrent applications") + S + "http://sponge.i2p/" + S + I + "user_astronaut.png" + S +
         "";
diff --git a/core/java/src/net/i2p/time/BuildTime.java b/core/java/src/net/i2p/time/BuildTime.java
index 96706e86e0e687f7923dfd81af9c00137910a860..8a48b071c82739229e92d0c2fea6ee47e2cddd71 100644
--- a/core/java/src/net/i2p/time/BuildTime.java
+++ b/core/java/src/net/i2p/time/BuildTime.java
@@ -34,10 +34,10 @@ public class BuildTime {
     private static final long _latestTime;
     private static final long YEARS_25 = 25L*365*24*60*60*1000;
     /** update this periodically */
-    private static final String EARLIEST = "2021-08-19 12:00:00 UTC";
+    private static final String EARLIEST = "2021-11-23 12:00:00 UTC";
     // fallback if parse fails ticket #1976
     // date -d 202x-xx-xx +%s
-    private static final long EARLIEST_LONG = 1629345600 * 1000L;
+    private static final long EARLIEST_LONG = 1637643600 * 1000L;
 
     static {
         // this is the standard format of build.timestamp as set in the top-level build.xml
diff --git a/debian/i2p-router.manpages b/debian/i2p-router.manpages
index c0cbdb8ad494902639a51ad2c40c480756e92b11..7fd69ecdff0a43f55af9f3654180702c10e2bb28 100644
--- a/debian/i2p-router.manpages
+++ b/debian/i2p-router.manpages
@@ -5,6 +5,7 @@ installer/resources/man/eepget.de.1
 installer/resources/man/eepget.es.1
 installer/resources/man/eepget.fi.1
 installer/resources/man/eepget.fr.1
+installer/resources/man/eepget.hu.1
 installer/resources/man/eepget.it.1
 installer/resources/man/eepget.ko.1
 installer/resources/man/eepget.nl.1
@@ -23,6 +24,7 @@ installer/resources/man/i2prouter-nowrapper.de.1
 installer/resources/man/i2prouter-nowrapper.es.1
 installer/resources/man/i2prouter-nowrapper.fi.1
 installer/resources/man/i2prouter-nowrapper.fr.1
+installer/resources/man/i2prouter-nowrapper.hu.1
 installer/resources/man/i2prouter-nowrapper.it.1
 installer/resources/man/i2prouter-nowrapper.ko.1
 installer/resources/man/i2prouter-nowrapper.nl.1
diff --git a/debian/i2p.manpages b/debian/i2p.manpages
index 1aa65fe4cb621f536743f54cb1274247efc8b108..e94ecad2923d7f1875b7b93410af7ef1e8a72404 100644
--- a/debian/i2p.manpages
+++ b/debian/i2p.manpages
@@ -5,6 +5,7 @@ installer/resources/man/i2prouter.de.1
 installer/resources/man/i2prouter.es.1
 installer/resources/man/i2prouter.fi.1
 installer/resources/man/i2prouter.fr.1
+installer/resources/man/i2prouter.hu.1
 installer/resources/man/i2prouter.it.1
 installer/resources/man/i2prouter.ko.1
 installer/resources/man/i2prouter.nl.1
diff --git a/history.txt b/history.txt
index 32916b8e8a9ce73f8e112b3a0a62c7758892e675..4c48c799bd2f54782d013b9341b246fcf963ccce 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,8 @@
+2021-11-23 zzz
+ * Tunnels:
+   - Drop request if hop throttle exceeded by 50%
+   - Revert banning peer in throttles
+
 2021-11-21 zzz
  * Console: Drop peer when manually banned
  * Tunnels:
diff --git a/installer/resources/locale-man/man_hu.po b/installer/resources/locale-man/man_hu.po
new file mode 100644
index 0000000000000000000000000000000000000000..9ebc922c7abd6465123ced9249e04fdff6c960bc
--- /dev/null
+++ b/installer/resources/locale-man/man_hu.po
@@ -0,0 +1,476 @@
+# I2P
+# Copyright (C) 2017 The I2P Project
+# This file is distributed under the same license as the routerconsole package.
+# To contribute translations, see https://www.transifex.com/otf/I2P/dashboard/
+# zzz <zzz@mail.i2p>, 2017.
+# 
+# Translators:
+# benewfy <benewfy@gmail.com>, 2017
+# Gergő Doma <domag02@gmail.com>, 2019
+# Nyul Csoki <csokinyul@i2pmail.org>, 2021
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: I2P man pages\n"
+"POT-Creation-Date: 2017-01-26 15:24+0000\n"
+"PO-Revision-Date: 2017-01-26 15:31+0000\n"
+"Last-Translator: Nyul Csoki <csokinyul@i2pmail.org>, 2021\n"
+"Language-Team: Hungarian (https://www.transifex.com/otf/teams/12694/hu/)\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Language: hu\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#. type: TH
+#: man/eepget.1:1
+#, no-wrap
+msgid "EEPGET"
+msgstr "EEPGET"
+
+#. type: TH
+#: man/eepget.1:1 man/i2prouter.1:1 man/i2prouter-nowrapper.1:1
+#, no-wrap
+msgid "January 26, 2017"
+msgstr "January 26, 2017"
+
+#. type: TH
+#: man/eepget.1:1 man/i2prouter.1:1 man/i2prouter-nowrapper.1:1
+#, no-wrap
+msgid "I2P"
+msgstr "I2P"
+
+#. type: SH
+#: man/eepget.1:3 man/i2prouter.1:3 man/i2prouter-nowrapper.1:3
+#, no-wrap
+msgid "NAME"
+msgstr "NÉV"
+
+#. type: Plain text
+#: man/eepget.1:5
+msgid "Eepget - I2P downloader"
+msgstr "Eepget - I2P letöltő"
+
+#. type: SH
+#: man/eepget.1:6 man/i2prouter.1:6 man/i2prouter-nowrapper.1:6
+#, no-wrap
+msgid "SYNOPSIS"
+msgstr "ÖSSZEGZÉS"
+
+#. type: Plain text
+#: man/eepget.1:9
+msgid "B<eepget> [I<options>]I<URL>"
+msgstr "B<eepget> [I<options>]I<URL>"
+
+#. type: SH
+#: man/eepget.1:11 man/i2prouter.1:11 man/i2prouter-nowrapper.1:10
+#, no-wrap
+msgid "DESCRIPTION"
+msgstr "LEÍRÁS"
+
+#. type: Plain text
+#: man/eepget.1:15
+msgid ""
+"Download a file non-interactively via HTTP. Transfers through both I2P and "
+"the regular Internet are supported."
+msgstr ""
+"Beavatkozás nélkül HTTP-n keresztül tölt le fájlokat. Mind I2P-n keresztüli,"
+" mint normál Interneten keresztüli átvitel támogatott."
+
+#. type: Plain text
+#: man/eepget.1:21
+msgid ""
+"Eepget is able to cope with slow or unstable network connections; if a "
+"download is not successful because of a network problem, it will keep "
+"retrying until the whole file has been retrieved (if the -n option is set)."
+"  If supported by the remote server, eepget will instruct the server to "
+"continue the download from the point of interruption."
+msgstr ""
+"Az Eepget meg tud birkózni lassú vagy instabil hálózati kapcsolatokkal; ha "
+"hálózati probléma miatt sikertelen a letöltés, addig fogja újrapróbálni, "
+"amíg leszed az egész fájlt (ha a -n opció be van állítva). Ha a távoli "
+"szerver támogatja, eepget utasítani fogja a szervert, hogy folytassa a "
+"letöltést attól a ponttól, ahol megszakadt."
+
+#. type: SH
+#: man/eepget.1:22
+#, no-wrap
+msgid "OPTIONS"
+msgstr "OPCIÓK"
+
+#. type: Plain text
+#: man/eepget.1:25
+msgid "B<-c>"
+msgstr "B<-c>"
+
+#. type: TP
+#: man/eepget.1:25
+#, no-wrap
+msgid "Clearnet. Do not use a proxy. Same as B<-p> :0 ."
+msgstr "Tiszta hálózat. Ne használd proxyként. Ugyanaz, mint B<-p> :0 ."
+
+#. type: Plain text
+#: man/eepget.1:31
+msgid "B<-e> etag"
+msgstr "B<-e> etag"
+
+#. type: TP
+#: man/eepget.1:31
+#, no-wrap
+msgid "Sets the etag value in the request headers."
+msgstr "Beállítja az ecímke értéket a kérési fejlécekben."
+
+#. type: Plain text
+#: man/eepget.1:37
+msgid "B<-h> name=value"
+msgstr "B<-h> name=value"
+
+#. type: TP
+#: man/eepget.1:37
+#, no-wrap
+msgid "Adds an arbitrary request header with the given name and value."
+msgstr "Tetszőleges kérési fejlécet ad hozzá a megadott névvel és értékkel."
+
+#. type: Plain text
+#: man/eepget.1:43
+msgid "B<-l> lineLen"
+msgstr "B<-l> lineLen"
+
+#. type: TP
+#: man/eepget.1:43
+#, no-wrap
+msgid ""
+"Controls the progress display. B<\\ lineLen > is the length of one progress "
+"line in characters. The default is 40."
+msgstr ""
+"A folyamatkijelzőt irányítja. B<\\ lineLen > egy folyamatsor hossza, "
+"karakterekben megadva. Alapértelmezésben 40."
+
+#. type: Plain text
+#: man/eepget.1:49
+msgid "B<-m> markSize"
+msgstr "B<-m> markSize"
+
+#. type: TP
+#: man/eepget.1:49
+#, no-wrap
+msgid ""
+"Controls the progress display. B<\\ markSize > is the number of bytes one "
+"'#' character represents. The default is 1024."
+msgstr ""
+"A folyamatkijelzőt irányítja. B<\\ markSize > a bájtok száma, melyet egy '#'"
+" karakter jelez. Alapértelmezésben 1024."
+
+#. type: Plain text
+#: man/eepget.1:55
+msgid "B<-n> retries"
+msgstr "B<-n> retries"
+
+#. type: TP
+#: man/eepget.1:55
+#, no-wrap
+msgid ""
+"Specify the number of times to retry downloading if the download isn't "
+"successful. If this option is not specified, eepget will not retry."
+msgstr ""
+"Megadja, hogy hányszor próbálja újra a letöltést, ha sikertelen. Ha nincs ez"
+" az opció megadva, eepget nem fogja újrapróbálni."
+
+#. type: Plain text
+#: man/eepget.1:61
+msgid "B<-o> file"
+msgstr "B<-o> file"
+
+#. type: TP
+#: man/eepget.1:61
+#, no-wrap
+msgid ""
+"Sets the output file to write to. If this option is not given, the output "
+"filename will be determined by the URL."
+msgstr ""
+"Beállítja a kimeneti fájlt, mely írásra kerül. Ha nincs ez az opció megadva,"
+" a kimeneti fájlnevet az URL határozza meg."
+
+#. type: Plain text
+#: man/eepget.1:67
+msgid "B<-p> proxy_host[:port]"
+msgstr "B<-p> proxy_host[:port]"
+
+#. type: TP
+#: man/eepget.1:67
+#, no-wrap
+msgid ""
+"Specify an I2P proxy server (eeproxy) to use. If the port is not specified, "
+"eepget will use 4444. If this option is not specified, eepget will use "
+"127.0.0.1:4444. Specify B<-c> or B<-p> :0 to disable the eeproxy."
+msgstr ""
+"Megadja a használandó I2P proxy szervert. Ha nincs port megadva, eepget a "
+"4444-es portot fogja használni. Ha nincs ez az opció megadva, eepget a "
+"127.0.0.1:444-et fogja használni. Add meg ezt: B<-c> vagy ezt: B<-p> :0 az "
+"eeproxy kikapcsolásához."
+
+#. type: Plain text
+#: man/eepget.1:73
+msgid "B<-t> seconds"
+msgstr "B<-t> seconds"
+
+#. type: TP
+#: man/eepget.1:73
+#, no-wrap
+msgid "Sets the inactivity timeout. The default is 60 seconds."
+msgstr "Beállítja a tétlenségi időkorlátot. Alapértelmezésben 60 másodperc."
+
+#. type: Plain text
+#: man/eepget.1:79
+msgid "B<-u> username"
+msgstr "B<-u> username"
+
+#. type: TP
+#: man/eepget.1:79
+#, no-wrap
+msgid "Sets the username for proxy authorization, if required."
+msgstr "Beállítja az felhasználónevet proxy azonosításhoz, ha szükséges."
+
+#. type: Plain text
+#: man/eepget.1:85
+msgid "B<-x> password"
+msgstr "B<-x> password"
+
+#. type: TP
+#: man/eepget.1:85
+#, no-wrap
+msgid ""
+"Sets the password for proxy authorization, if required. If a username is "
+"specified but not a password, EepGet will prompt for the password."
+msgstr ""
+"Beállítja a jelszót a proxy azonosításhoz, ha szükséges. Ha felhasználónév "
+"meg van adva, de a jelszó nincs, EepGet kérni fogja a jelszót"
+
+#. type: SH
+#: man/eepget.1:89
+#, no-wrap
+msgid "EXIT STATUS"
+msgstr "KILÉPÉSI ÁLLAPOT"
+
+#. type: Plain text
+#: man/eepget.1:93
+msgid ""
+"B<eepget> exits with status zero upon successful transfer and non-zero if "
+"there were problems with the download."
+msgstr ""
+"B<eepget> kilép 0 állapottal sikeres átvitel esetén és nem 0 állapottal, ha "
+"probléma volt a letöltéssel."
+
+#. type: SH
+#: man/eepget.1:94 man/i2prouter.1:54 man/i2prouter-nowrapper.1:24
+#, no-wrap
+msgid "REPORTING BUGS"
+msgstr "HIBAJELENTÉS"
+
+#. type: Plain text
+#: man/eepget.1:99 man/i2prouter.1:59 man/i2prouter-nowrapper.1:29
+msgid ""
+"Please enter a ticket on E<.UR https://trac.i2p2.de/> the I2P trac page "
+"E<.UE .>"
+msgstr ""
+"Kérünk, adj le jelentést itt: E<.UR https://trac.i2p2.de/> az I2P trac "
+"oldalon E<.UE .>"
+
+#. type: SH
+#: man/eepget.1:100 man/i2prouter.1:60 man/i2prouter-nowrapper.1:30
+#, no-wrap
+msgid "SEE ALSO"
+msgstr "LÁSD MÉG"
+
+#. type: Plain text
+#: man/eepget.1:104
+msgid "B<i2prouter>(1)  B<curl>(1)  B<wget>(1)"
+msgstr "B<i2prouter>(1)  B<curl>(1)  B<wget>(1)"
+
+#. type: TH
+#: man/i2prouter.1:1
+#, no-wrap
+msgid "I2PROUTER"
+msgstr "I2PROUTER"
+
+#. type: Plain text
+#: man/i2prouter.1:5
+msgid "i2prouter - start and stop the I2P router"
+msgstr "i2prouter - az I2P router indítása és leállítása"
+
+#. type: Plain text
+#: man/i2prouter.1:9
+msgid ""
+"B<i2prouter> "
+"{I<console>|I<start>|I<stop>|I<graceful>|I<restart>|I<condrestart>|I<status>|I<dump>|I<install>|I<remove>}"
+msgstr ""
+"B<i2prouter> "
+"{I<console>|I<start>|I<stop>|I<graceful>|I<restart>|I<condrestart>|I<status>|I<dump>|I<install>|I<remove>}"
+
+#. type: Plain text
+#: man/i2prouter.1:13
+msgid "Control the I2P service."
+msgstr "Az I2P szolgáltatás irányítása."
+
+#. type: IP
+#: man/i2prouter.1:15
+#, no-wrap
+msgid "B<console>"
+msgstr "B<console>"
+
+#. type: Plain text
+#: man/i2prouter.1:17
+msgid "Runs I2P as a console application under the current user."
+msgstr ""
+"Parancssori alkalmazásként futtatja az I2P-t a jelenlegi felhasználóként."
+
+#. type: IP
+#: man/i2prouter.1:19
+#, no-wrap
+msgid "B<start>"
+msgstr "B<start>"
+
+#. type: Plain text
+#: man/i2prouter.1:21
+msgid "Starts the I2P service."
+msgstr "Elindítja az I2P szolgáltatást."
+
+#. type: IP
+#: man/i2prouter.1:23
+#, no-wrap
+msgid "B<stop>"
+msgstr "B<stop>"
+
+#. type: Plain text
+#: man/i2prouter.1:25
+msgid "Stops the I2P service."
+msgstr "Leállítja az I2P szolgáltatást."
+
+#. type: IP
+#: man/i2prouter.1:27
+#, no-wrap
+msgid "B<restart>"
+msgstr "B<restart>"
+
+#. type: Plain text
+#: man/i2prouter.1:29
+msgid "Stops the I2P service and then starts it."
+msgstr "Leállítja, azután elindítja az I2P szolgáltatást."
+
+#. type: IP
+#: man/i2prouter.1:31
+#, no-wrap
+msgid "B<condrestart>"
+msgstr "B<condrestart>"
+
+#. type: Plain text
+#: man/i2prouter.1:33
+msgid "Restart the I2P service only if it is already running."
+msgstr "Újraindítja az I2P szolgáltatást, de csak akkor, ha az már fut."
+
+#. type: IP
+#: man/i2prouter.1:35
+#, no-wrap
+msgid "B<graceful>"
+msgstr "B<graceful>"
+
+#. type: Plain text
+#: man/i2prouter.1:37
+msgid "Stop I2P gracefully (may take up to 11 minutes)"
+msgstr "Óvatosan álltja le az I2P-t (eltarthat akár 11 perig is)"
+
+#. type: IP
+#: man/i2prouter.1:39
+#, no-wrap
+msgid "B<install>"
+msgstr "B<install>"
+
+#. type: Plain text
+#: man/i2prouter.1:41
+msgid "Install initscript to start I2P automatically when the system boots."
+msgstr ""
+"Initscript-et telepít, ami automatikusan elindítja az I2P-t "
+"rendszerindításkor."
+
+#. type: IP
+#: man/i2prouter.1:43
+#, no-wrap
+msgid "B<remove>"
+msgstr "B<remove>"
+
+#. type: Plain text
+#: man/i2prouter.1:45
+msgid "Uninstall initscript that was installed with B<install>"
+msgstr ""
+"Eltávolítja az initscript-et, ami telepítésre került ezzel: B<install>"
+
+#. type: IP
+#: man/i2prouter.1:47
+#, no-wrap
+msgid "B<status>"
+msgstr "B<status>"
+
+#. type: Plain text
+#: man/i2prouter.1:49
+msgid "Prints whether the I2P service is running."
+msgstr "Kiadja, hogy az I2P szolgáltatás fut vagy sem."
+
+#. type: IP
+#: man/i2prouter.1:51
+#, no-wrap
+msgid "B<dump>"
+msgstr "B<dump>"
+
+#. type: Plain text
+#: man/i2prouter.1:53
+msgid "Dumps the current threads into B<wrapper.log>."
+msgstr "Lerakja a jelenlegi szálakat ide: B<wrapper.log>."
+
+#. type: Plain text
+#: man/i2prouter.1:61
+msgid "B<i2prouter-nowrapper>(1)"
+msgstr "B<i2prouter-nowrapper>(1)"
+
+#. type: TH
+#: man/i2prouter-nowrapper.1:1
+#, no-wrap
+msgid "I2PROUTER-NOWRAPPER"
+msgstr "I2PROUTER-NOWRAPPER"
+
+#. type: Plain text
+#: man/i2prouter-nowrapper.1:5
+msgid "i2prouter-nowrapper - start the I2P router"
+msgstr "i2prouter-nowrapper - elindítja az I2P router-t"
+
+#. type: Plain text
+#: man/i2prouter-nowrapper.1:8
+msgid "B<i2prouter-nowrapper>"
+msgstr "B<i2prouter-nowrapper>"
+
+#. type: Plain text
+#: man/i2prouter-nowrapper.1:14
+msgid ""
+"Start the I2P router, without the service wrapper.  This means the router "
+"will not restart if it crashes.  Also, it will use the default memory size, "
+"which may not be enough for I2P."
+msgstr ""
+"A szolgáltatás-burkolat nélkül indítja el az I2P router-t. Ez azt jelenti, "
+"hogy a router nem fog újraindulni összeomlás esetén. Ezen felül az "
+"alapértelmezett memóriaméretet fogja használni, ami nem biztos, hogy elég "
+"lesz az I2P-nek."
+
+#. type: Plain text
+#: man/i2prouter-nowrapper.1:23
+msgid ""
+"You should really use the B<i2prouter>(1)  script instead.  There are no "
+"options.  To stop the router, use your browser to access E<.UR "
+"http://localhost:7657/> the router console E<.UE .>"
+msgstr ""
+"Tényleg a(z) B<i2prouter>(1)  szkriptet kellene használnod ehelyett. Nem "
+"adhatód meg opciók. A router leállításához használd a böngésződ, hogy elérd "
+"ezt: E<.UR http://localhost:7657/> a router konzol E<.UE .>"
+
+#. type: Plain text
+#: man/i2prouter-nowrapper.1:31
+msgid "B<i2prouter>(1)"
+msgstr "B<i2prouter>(1)"
diff --git a/installer/resources/man/eepget.hu.1 b/installer/resources/man/eepget.hu.1
new file mode 100644
index 0000000000000000000000000000000000000000..c78681752a9aaab61dce3df8dd003442a528baf1
--- /dev/null
+++ b/installer/resources/man/eepget.hu.1
@@ -0,0 +1,95 @@
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH EEPGET 1 "January 26, 2017" "" I2P
+
+.SH NÉV
+Eepget \- I2P letöltő
+
+.SH ÖSSZEGZÉS
+\fBeepget\fP [\fIoptions\fP]\fIURL\fP
+.br
+
+.SH LEÍRÁS
+.P
+Beavatkozás nélkül HTTP\-n keresztül tölt le fájlokat. Mind I2P\-n keresztüli,
+mint normál Interneten keresztüli átvitel támogatott.
+.P
+Az Eepget meg tud birkózni lassú vagy instabil hálózati kapcsolatokkal; ha
+hálózati probléma miatt sikertelen a letöltés, addig fogja újrapróbálni,
+amíg leszed az egész fájlt (ha a \-n opció be van állítva). Ha a távoli
+szerver támogatja, eepget utasítani fogja a szervert, hogy folytassa a
+letöltést attól a ponttól, ahol megszakadt.
+
+.SH OPCIÓK
+\fB\-c\fP
+.TP 
+Tiszta hálózat. Ne használd proxyként. Ugyanaz, mint \fB\-p\fP :0 .
+.TP 
+
+\fB\-e\fP etag
+.TP 
+Beállítja az ecímke értéket a kérési fejlécekben.
+.TP 
+
+\fB\-h\fP name=value
+.TP 
+Tetszőleges kérési fejlécet ad hozzá a megadott névvel és értékkel.
+.TP 
+
+\fB\-l\fP lineLen
+.TP 
+A folyamatkijelzőt irányítja. \fB\ lineLen \fP egy folyamatsor hossza, karakterekben megadva. Alapértelmezésben 40.
+.TP 
+
+\fB\-m\fP markSize
+.TP 
+A folyamatkijelzőt irányítja. \fB\ markSize \fP a bájtok száma, melyet egy '#' karakter jelez. Alapértelmezésben 1024.
+.TP 
+
+\fB\-n\fP retries
+.TP 
+Megadja, hogy hányszor próbálja újra a letöltést, ha sikertelen. Ha nincs ez az opció megadva, eepget nem fogja újrapróbálni.
+.TP 
+
+\fB\-o\fP file
+.TP 
+Beállítja a kimeneti fájlt, mely írásra kerül. Ha nincs ez az opció megadva, a kimeneti fájlnevet az URL határozza meg.
+.TP 
+
+\fB\-p\fP proxy_host[:port]
+.TP 
+Megadja a használandó I2P proxy szervert. Ha nincs port megadva, eepget a 4444\-es portot fogja használni. Ha nincs ez az opció megadva, eepget a 127.0.0.1:444\-et fogja használni. Add meg ezt: \fB\-c\fP vagy ezt: \fB\-p\fP :0 az eeproxy kikapcsolásához.
+.TP 
+
+\fB\-t\fP seconds
+.TP 
+Beállítja a tétlenségi időkorlátot. Alapértelmezésben 60 másodperc.
+.TP 
+
+\fB\-u\fP username
+.TP 
+Beállítja az felhasználónevet proxy azonosításhoz, ha szükséges.
+.TP 
+
+\fB\-x\fP password
+.TP 
+Beállítja a jelszót a proxy azonosításhoz, ha szükséges. Ha felhasználónév meg van adva, de a jelszó nincs, EepGet kérni fogja a jelszót
+
+.SH "KILÉPÉSI ÁLLAPOT"
+
+\fBeepget\fP kilép 0 állapottal sikeres átvitel esetén és nem 0 állapottal, ha
+probléma volt a letöltéssel.
+
+.SH HIBAJELENTÉS
+Kérünk, adj le jelentést itt:
+.UR https://trac.i2p2.de/
+az I2P trac
+oldalon
+.UE .
+
+.SH "LÁSD MÉG"
+\fBi2prouter\fP(1)  \fBcurl\fP(1)  \fBwget\fP(1)
+
diff --git a/installer/resources/man/i2prouter-nowrapper.hu.1 b/installer/resources/man/i2prouter-nowrapper.hu.1
new file mode 100644
index 0000000000000000000000000000000000000000..320fbc081f4d0150cb798627a781c3ceb126ab3f
--- /dev/null
+++ b/installer/resources/man/i2prouter-nowrapper.hu.1
@@ -0,0 +1,36 @@
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH I2PROUTER\-NOWRAPPER 1 "January 26, 2017" "" I2P
+
+.SH NÉV
+i2prouter\-nowrapper \- elindítja az I2P router\-t
+
+.SH ÖSSZEGZÉS
+\fBi2prouter\-nowrapper\fP
+.br
+
+.SH LEÍRÁS
+A szolgáltatás\-burkolat nélkül indítja el az I2P router\-t. Ez azt jelenti,
+hogy a router nem fog újraindulni összeomlás esetén. Ezen felül az
+alapértelmezett memóriaméretet fogja használni, ami nem biztos, hogy elég
+lesz az I2P\-nek.
+.P
+Tényleg a(z) \fBi2prouter\fP(1)  szkriptet kellene használnod ehelyett. Nem
+adhatód meg opciók. A router leállításához használd a böngésződ, hogy elérd
+ezt:
+.UR http://localhost:7657/
+a router konzol
+.UE .
+
+.SH HIBAJELENTÉS
+Kérünk, adj le jelentést itt:
+.UR https://trac.i2p2.de/
+az I2P trac
+oldalon
+.UE .
+
+.SH "LÁSD MÉG"
+\fBi2prouter\fP(1)
diff --git a/installer/resources/man/i2prouter.hu.1 b/installer/resources/man/i2prouter.hu.1
new file mode 100644
index 0000000000000000000000000000000000000000..4069454b539c581d4db25b6698e58367b89978f9
--- /dev/null
+++ b/installer/resources/man/i2prouter.hu.1
@@ -0,0 +1,58 @@
+.\"*******************************************************************
+.\"
+.\" This file was generated with po4a. Translate the source file.
+.\"
+.\"*******************************************************************
+.TH I2PROUTER 1 "January 26, 2017" "" I2P
+
+.SH NÉV
+i2prouter \- az I2P router indítása és leállítása
+
+.SH ÖSSZEGZÉS
+\fBi2prouter\fP
+{\fIconsole\fP|\fIstart\fP|\fIstop\fP|\fIgraceful\fP|\fIrestart\fP|\fIcondrestart\fP|\fIstatus\fP|\fIdump\fP|\fIinstall\fP|\fIremove\fP}
+.br
+
+.SH LEÍRÁS
+Az I2P szolgáltatás irányítása.
+
+.IP \fBconsole\fP
+Parancssori alkalmazásként futtatja az I2P\-t a jelenlegi felhasználóként.
+
+.IP \fBstart\fP
+Elindítja az I2P szolgáltatást.
+
+.IP \fBstop\fP
+Leállítja az I2P szolgáltatást.
+
+.IP \fBrestart\fP
+Leállítja, azután elindítja az I2P szolgáltatást.
+
+.IP \fBcondrestart\fP
+Újraindítja az I2P szolgáltatást, de csak akkor, ha az már fut.
+
+.IP \fBgraceful\fP
+Óvatosan álltja le az I2P\-t (eltarthat akár 11 perig is)
+
+.IP \fBinstall\fP
+Initscript\-et telepít, ami automatikusan elindítja az I2P\-t
+rendszerindításkor.
+
+.IP \fBremove\fP
+Eltávolítja az initscript\-et, ami telepítésre került ezzel: \fBinstall\fP
+
+.IP \fBstatus\fP
+Kiadja, hogy az I2P szolgáltatás fut vagy sem.
+
+.IP \fBdump\fP
+Lerakja a jelenlegi szálakat ide: \fBwrapper.log\fP.
+
+.SH HIBAJELENTÉS
+Kérünk, adj le jelentést itt:
+.UR https://trac.i2p2.de/
+az I2P trac
+oldalon
+.UE .
+
+.SH "LÁSD MÉG"
+\fBi2prouter\-nowrapper\fP(1)
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index cf2cf692a81bcba7ea578ec708417becb09c1953..e83c76c346f72424a6bf2cfffbcd97f367bf2f3d 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
     /** deprecated */
     public final static String ID = "Git";
     public final static String VERSION = CoreVersion.VERSION;
-    public final static long BUILD = 6;
+    public final static long BUILD = 7;
 
     /** for example "-test" */
     public final static String EXTRA = "-rc";
diff --git a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
index b586b1dbff7507b18a5fe03c17e0a82c49d714a0..707f348a79e726ebbc4223b761d07b007ac96e71 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/BuildHandler.java
@@ -867,22 +867,37 @@ class BuildHandler implements Runnable {
         // Check participating throttle counters for previous and next hops
         // This is at the end as it compares to a percentage of created tunnels.
         // We may need another counter above for requests.
-        if (response == 0 && !isInGW && _throttler != null) {
-            if (from != null && _throttler.shouldThrottle(from)) {
-                if (_log.shouldLog(Log.WARN))
+        if (response == 0 && !isInGW && _throttler != null && from != null) {
+            ParticipatingThrottler.Result result = _throttler.shouldThrottle(from);
+            if (result == ParticipatingThrottler.Result.DROP) {
+                if (_log.shouldWarn())
+                    _log.warn("Dropping request (hop throttle), previous hop: " + from + ": " + req);
+                _context.statManager().addRateData("tunnel.rejectHopThrottle", 1);
+                _context.commSystem().mayDisconnect(from);
+                 return;
+            }
+            if (result == ParticipatingThrottler.Result.REJECT) {
+                if (_log.shouldWarn())
                     _log.warn("Rejecting tunnel (hop throttle), previous hop: " + from + ": " + req);
-                // no setTunnelStatus() indication
                 _context.statManager().addRateData("tunnel.rejectHopThrottle", 1);
                 response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH;
             }
         }
-        if (response == 0 && (!isOutEnd) &&
-            _throttler != null && _throttler.shouldThrottle(nextPeer)) {
-            if (_log.shouldLog(Log.WARN))
-                _log.warn("Rejecting tunnel (hop throttle), next hop: " + req);
-            _context.statManager().addRateData("tunnel.rejectHopThrottle", 1);
-            // no setTunnelStatus() indication
-            response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH;
+        if (response == 0 && (!isOutEnd) && _throttler != null) {
+            ParticipatingThrottler.Result result = _throttler.shouldThrottle(nextPeer);
+            if (result == ParticipatingThrottler.Result.DROP) {
+                if (_log.shouldWarn())
+                    _log.warn("Dropping request (hop throttle), next hop: " + nextPeer + ": " + req);
+                _context.statManager().addRateData("tunnel.rejectHopThrottle", 1);
+                _context.commSystem().mayDisconnect(from);
+                 return;
+            }
+            if (result == ParticipatingThrottler.Result.REJECT) {
+                if (_log.shouldWarn())
+                    _log.warn("Rejecting tunnel (hop throttle), next hop: " + nextPeer + ": " + req);
+                _context.statManager().addRateData("tunnel.rejectHopThrottle", 1);
+                response = TunnelHistory.TUNNEL_REJECT_BANDWIDTH;
+            }
         }
 
         HopConfig cfg = null;
diff --git a/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java
index abd186ca2f49f15f7861b6fb7205145b981fce3f..0e56d42a7aa26bce55db067ae405dee88edba901 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/ParticipatingThrottler.java
@@ -40,6 +40,8 @@ class ParticipatingThrottler {
     private static final int PERCENT_LIMIT = 12 / LIFETIME_PORTION;
     private static final long CLEAN_TIME = 11*60*1000 / LIFETIME_PORTION;
 
+    public enum Result { ACCEPT, REJECT, DROP }
+
     ParticipatingThrottler(RouterContext ctx) {
         this.context = ctx;
         this.counter = new ObjectCounter<Hash>();
@@ -48,17 +50,24 @@ class ParticipatingThrottler {
     }
 
     /** increments before checking */
-    boolean shouldThrottle(Hash h) {
+    Result shouldThrottle(Hash h) {
         int numTunnels = this.context.tunnelManager().getParticipatingCount();
         int limit = Math.max(MIN_LIMIT, Math.min(MAX_LIMIT, numTunnels * PERCENT_LIMIT / 100));
         int count = counter.increment(h);
-        boolean rv = count > limit;
-        if (rv && count == 2 * limit) {
-            context.banlist().banlistRouter(h, "Excess participating tunnels", null, null, context.clock().now() + 30*60*1000);
-            // drop after any accepted tunnels have expired
-            context.simpleTimer2().addEvent(new Disconnector(h), 11*60*1000);
-            if (_log.shouldWarn())
-                _log.warn("Banning router for excess part. tunnels, limit: " + limit + " count: " + count + ' ' + h.toBase64());
+        Result rv;
+        if (count > limit) {
+            if (count > limit * 3 / 2) {
+                //context.banlist().banlistRouter(h, "Excess participating tunnels", null, null, context.clock().now() + 30*60*1000);
+                // drop after any accepted tunnels have expired
+                //context.simpleTimer2().addEvent(new Disconnector(h), 11*60*1000);
+                //if (_log.shouldWarn())
+                //    _log.warn("Banning router for excess part. tunnels, limit: " + limit + " count: " + count + ' ' + h.toBase64());
+                rv = Result.DROP;
+            } else {
+                rv = Result.REJECT;
+            }
+        } else {
+            rv = Result.ACCEPT;
         }
         return rv;
     }
@@ -72,6 +81,7 @@ class ParticipatingThrottler {
     /**
      *  @since 0.9.52
      */
+/*
     private class Disconnector implements SimpleTimer.TimedEvent {
         private final Hash h;
         public Disconnector(Hash h) { this.h = h; }
@@ -79,4 +89,5 @@ class ParticipatingThrottler {
             context.commSystem().forceDisconnect(h);
         }
     }
+*/
 }
diff --git a/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java b/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java
index 7c29a55004c63e179310824aa63ea7d1d4a90d54..e26d890e56e9a13465b7760a0938a84bbf52d037 100644
--- a/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java
+++ b/router/java/src/net/i2p/router/tunnel/pool/RequestThrottler.java
@@ -38,6 +38,7 @@ class RequestThrottler {
         int limit = Math.max(MIN_LIMIT, Math.min(MAX_LIMIT, numTunnels * PERCENT_LIMIT / 100));
         int count = counter.increment(h);
         boolean rv = count > limit;
+/*
         if (rv && count == 2 * limit) {
             context.banlist().banlistRouter(h, "Excess tunnel requests", null, null, context.clock().now() + 30*60*1000);
             // drop after any accepted tunnels have expired
@@ -45,6 +46,7 @@ class RequestThrottler {
             if (_log.shouldWarn())
                 _log.warn("Banning router for excess tunnel requests, limit: " + limit + " count: " + count + ' ' + h.toBase64());
         }
+*/
         return rv;
     }
 
@@ -57,6 +59,7 @@ class RequestThrottler {
     /**
      *  @since 0.9.52
      */
+/*
     private class Disconnector implements SimpleTimer.TimedEvent {
         private final Hash h;
         public Disconnector(Hash h) { this.h = h; }
@@ -64,4 +67,5 @@ class RequestThrottler {
             context.commSystem().forceDisconnect(h);
         }
     }
+*/
 }