summaryrefslogtreecommitdiffstats
path: root/src/usr
diff options
context:
space:
mode:
Diffstat (limited to 'src/usr')
-rw-r--r--src/usr/local/captiveportal/index.php2
l---------src/usr/local/openssl/openssl.cnf1
-rwxr-xr-xsrc/usr/local/sbin/pfSense-dhclient-script393
-rwxr-xr-xsrc/usr/local/sbin/pfSense-upgrade17
-rw-r--r--src/usr/local/share/locale/en/LC_MESSAGES/pfSense.pot12987
-rw-r--r--src/usr/local/share/pfSense/pre_upgrade_command49
-rw-r--r--src/usr/local/share/pfSense/ssl/openssl.cnf398
-rw-r--r--src/usr/local/www/classes/Form/Checkbox.class.php2
-rw-r--r--src/usr/local/www/classes/Form/Input.class.php2
-rw-r--r--src/usr/local/www/classes/Form/IpAddress.class.php18
-rw-r--r--src/usr/local/www/crash_reporter.php2
-rw-r--r--src/usr/local/www/css/Compact-RED.css139
-rw-r--r--src/usr/local/www/css/pfSense.css21
-rw-r--r--src/usr/local/www/diag_arp.php2
-rw-r--r--src/usr/local/www/diag_authentication.php2
-rw-r--r--src/usr/local/www/diag_command.php13
-rw-r--r--src/usr/local/www/diag_nanobsd.php10
-rw-r--r--src/usr/local/www/diag_packet_capture.php9
-rw-r--r--src/usr/local/www/diag_ping.php4
-rw-r--r--src/usr/local/www/diag_resetstate.php2
-rw-r--r--src/usr/local/www/diag_routes.php4
-rw-r--r--src/usr/local/www/diag_smart.php52
-rw-r--r--src/usr/local/www/diag_testport.php2
-rw-r--r--src/usr/local/www/diag_traceroute.php8
-rwxr-xr-xsrc/usr/local/www/firewall_aliases_edit.php30
-rwxr-xr-xsrc/usr/local/www/firewall_aliases_import.php6
-rw-r--r--src/usr/local/www/firewall_nat.php49
-rw-r--r--src/usr/local/www/firewall_nat_1to1.php2
-rw-r--r--src/usr/local/www/firewall_nat_edit.php13
-rw-r--r--src/usr/local/www/firewall_nat_npt_edit.php6
-rw-r--r--src/usr/local/www/firewall_nat_out_edit.php5
-rw-r--r--src/usr/local/www/firewall_rules.php4
-rw-r--r--src/usr/local/www/firewall_rules_edit.php2
-rw-r--r--src/usr/local/www/firewall_schedule_edit.php21
-rw-r--r--src/usr/local/www/firewall_shaper_queues.php1
-rw-r--r--src/usr/local/www/firewall_shaper_vinterface.php20
-rw-r--r--src/usr/local/www/guiconfig.inc8
-rw-r--r--src/usr/local/www/head.inc9
-rw-r--r--src/usr/local/www/index.php2
-rw-r--r--src/usr/local/www/interfaces.php19
-rw-r--r--src/usr/local/www/interfaces_assign.php6
-rw-r--r--src/usr/local/www/interfaces_bridge_edit.php12
-rw-r--r--src/usr/local/www/interfaces_gif_edit.php2
-rw-r--r--src/usr/local/www/interfaces_gre_edit.php2
-rw-r--r--src/usr/local/www/interfaces_groups_edit.php17
-rw-r--r--src/usr/local/www/interfaces_lagg_edit.php8
-rw-r--r--src/usr/local/www/interfaces_ppps_edit.php12
-rw-r--r--src/usr/local/www/interfaces_qinq_edit.php4
-rw-r--r--src/usr/local/www/js/pfSenseHelpers.js13
-rw-r--r--src/usr/local/www/load_balancer_virtual_server_edit.php2
-rwxr-xr-xsrc/usr/local/www/pkg.php13
-rw-r--r--src/usr/local/www/pkg_edit.php2
-rw-r--r--src/usr/local/www/pkg_mgr.php2
-rw-r--r--src/usr/local/www/pkg_mgr_install.php340
-rw-r--r--src/usr/local/www/services_captiveportal.php16
-rw-r--r--src/usr/local/www/services_captiveportal_filemanager.php1
-rw-r--r--src/usr/local/www/services_captiveportal_hostname.php3
-rw-r--r--src/usr/local/www/services_captiveportal_hostname_edit.php2
-rw-r--r--src/usr/local/www/services_captiveportal_ip.php1
-rw-r--r--src/usr/local/www/services_captiveportal_ip_edit.php2
-rw-r--r--src/usr/local/www/services_captiveportal_mac.php7
-rw-r--r--src/usr/local/www/services_captiveportal_mac_edit.php1
-rw-r--r--src/usr/local/www/services_captiveportal_vouchers.php3
-rw-r--r--src/usr/local/www/services_captiveportal_vouchers_edit.php1
-rw-r--r--src/usr/local/www/services_captiveportal_zones_edit.php2
-rw-r--r--src/usr/local/www/services_dhcp.php12
-rw-r--r--src/usr/local/www/services_dhcpv6.php6
-rw-r--r--src/usr/local/www/services_dnsmasq.php4
-rw-r--r--src/usr/local/www/services_dnsmasq_domainoverride_edit.php3
-rw-r--r--src/usr/local/www/services_dyndns_edit.php4
-rw-r--r--src/usr/local/www/services_igmpproxy_edit.php2
-rw-r--r--src/usr/local/www/services_ntpd.php6
-rw-r--r--src/usr/local/www/services_ntpd_gps.php2
-rw-r--r--src/usr/local/www/services_ntpd_pps.php2
-rw-r--r--src/usr/local/www/services_rfc2136_edit.php6
-rw-r--r--src/usr/local/www/services_router_advertisements.php4
-rw-r--r--src/usr/local/www/services_unbound.php6
-rw-r--r--src/usr/local/www/services_unbound_advanced.php2
-rw-r--r--src/usr/local/www/services_unbound_domainoverride_edit.php29
-rw-r--r--src/usr/local/www/services_unbound_host_edit.php19
-rw-r--r--src/usr/local/www/services_unbound_overrides.php277
-rwxr-xr-xsrc/usr/local/www/status.php8
-rw-r--r--src/usr/local/www/status_captiveportal.php2
-rw-r--r--src/usr/local/www/status_captiveportal_expire.php1
-rw-r--r--src/usr/local/www/status_captiveportal_test.php1
-rw-r--r--src/usr/local/www/status_captiveportal_voucher_rolls.php1
-rw-r--r--src/usr/local/www/status_captiveportal_vouchers.php1
-rw-r--r--src/usr/local/www/status_interfaces.php4
-rw-r--r--src/usr/local/www/status_ipsec.php9
-rw-r--r--src/usr/local/www/status_lb_pool.php25
-rw-r--r--src/usr/local/www/status_logs_common.inc4
-rw-r--r--src/usr/local/www/status_logs_settings.php21
-rw-r--r--src/usr/local/www/status_queues.php7
-rw-r--r--src/usr/local/www/system.php32
-rw-r--r--src/usr/local/www/system_advanced_admin.php2
-rw-r--r--src/usr/local/www/system_advanced_firewall.php4
-rw-r--r--src/usr/local/www/system_advanced_misc.php1
-rw-r--r--src/usr/local/www/system_advanced_network.php8
-rw-r--r--src/usr/local/www/system_advanced_sysctl.php4
-rw-r--r--src/usr/local/www/system_gateway_groups_edit.php2
-rw-r--r--src/usr/local/www/system_gateways_edit.php4
-rw-r--r--src/usr/local/www/system_groupmanager.php10
-rw-r--r--src/usr/local/www/system_groupmanager_addprivs.php2
-rw-r--r--src/usr/local/www/system_update_settings.php8
-rw-r--r--src/usr/local/www/system_usermanager.php12
-rw-r--r--src/usr/local/www/system_usermanager_addprivs.php4
-rw-r--r--src/usr/local/www/system_usermanager_settings.php2
-rw-r--r--src/usr/local/www/vendor/d3/d3.min.js10
-rw-r--r--src/usr/local/www/vendor/nvd3/nv.d3.css26
-rw-r--r--src/usr/local/www/vendor/nvd3/nv.d3.js1671
-rw-r--r--src/usr/local/www/vpn_ipsec.php2
-rw-r--r--src/usr/local/www/vpn_ipsec_keys_edit.php2
-rw-r--r--src/usr/local/www/vpn_ipsec_phase1.php18
-rw-r--r--src/usr/local/www/vpn_ipsec_settings.php8
-rw-r--r--src/usr/local/www/vpn_l2tp.php6
-rw-r--r--src/usr/local/www/vpn_openvpn_client.php21
-rw-r--r--src/usr/local/www/vpn_openvpn_csc.php2
-rw-r--r--src/usr/local/www/vpn_openvpn_server.php32
-rw-r--r--src/usr/local/www/widgets/widgets/captive_portal_status.widget.php3
-rw-r--r--src/usr/local/www/widgets/widgets/carp_status.widget.php6
-rw-r--r--src/usr/local/www/widgets/widgets/gateways.widget.php16
-rw-r--r--src/usr/local/www/widgets/widgets/smart_status.widget.php2
-rw-r--r--src/usr/local/www/widgets/widgets/system_information.widget.php17
-rw-r--r--src/usr/local/www/wizards/setup_wizard.xml15
124 files changed, 9816 insertions, 7414 deletions
diff --git a/src/usr/local/captiveportal/index.php b/src/usr/local/captiveportal/index.php
index 93c4e30..b1f693a 100644
--- a/src/usr/local/captiveportal/index.php
+++ b/src/usr/local/captiveportal/index.php
@@ -42,7 +42,7 @@ header("Connection: close");
global $cpzone, $cpzoneid;
-$cpzone = $_REQUEST['zone'];
+$cpzone = strtolower($_REQUEST['zone']);
$cpcfg = $config['captiveportal'][$cpzone];
if (empty($cpcfg)) {
log_error("Submission to captiveportal with unknown parameter zone: " . htmlspecialchars($cpzone));
diff --git a/src/usr/local/openssl/openssl.cnf b/src/usr/local/openssl/openssl.cnf
deleted file mode 120000
index f95d25b..0000000
--- a/src/usr/local/openssl/openssl.cnf
+++ /dev/null
@@ -1 +0,0 @@
-../../../etc/ssl/openssl.cnf \ No newline at end of file
diff --git a/src/usr/local/sbin/pfSense-dhclient-script b/src/usr/local/sbin/pfSense-dhclient-script
new file mode 100755
index 0000000..0695eff
--- /dev/null
+++ b/src/usr/local/sbin/pfSense-dhclient-script
@@ -0,0 +1,393 @@
+#!/bin/sh
+# $Id$
+# $OpenBSD: dhclient-script,v 1.6 2004/05/06 18:22:41 claudio Exp $
+# $FreeBSD: src/sbin/dhclient/dhclient-script,v 1.4 2005/06/10 03:41:18 brooks Exp $
+#
+# Copyright (c) 2003 Kenneth R Westerback <krw@openbsd.org>
+#
+# Permission to use, copy, modify, and distribute this software for any
+# purpose with or without fee is hereby granted, provided that the above
+# copyright notice and this permission notice appear in all copies.
+#
+# THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+# WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+# MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+# ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+# WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+# ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+# OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+#
+
+HOSTNAME=/bin/hostname
+ROUTE=/sbin/route
+SED=/usr/bin/sed
+ARP=/usr/sbin/arp
+IFCONFIG=/sbin/ifconfig
+PFCTL=/sbin/pfctl
+
+LOCALHOST=127.0.0.1
+
+if [ -x /usr/bin/logger ]; then
+ LOGGER="/usr/bin/logger -s -p user.notice -t dhclient"
+else
+ LOGGER="echo"
+fi
+
+#
+# Helper functions that implement common actions.
+#
+
+check_hostname() {
+ current_hostname=`$HOSTNAME`
+ if [ -z "$current_hostname" ] || \
+ [ "$current_hostname" = "$old_host_name" -a \
+ "$new_hostname" != "$old_host_name" ]; then
+ $LOGGER "New Hostname ($interface): $new_host_name"
+ $HOSTNAME $new_host_name
+ fi
+}
+
+arp_flush() {
+ $ARP -an -i $interface | \
+ $SED -n -e 's/^.*(\(.*\)) at .*$/arp -d \1/p' | \
+ /bin/sh >/dev/null 2>&1
+}
+
+# NOTE: use of the below has been disabled because rc.newwanip handles this correctly and this
+# unnecessarily killed states in multiple circumstances. Leaving here for now, should be safe
+# to remove later. -cmb 20141105
+delete_old_states() {
+ $LOGGER "Starting delete_old_states()"
+ _FLUSHED=0
+ # If the IP changed, remove states from the old one
+ if [ -f /var/db/${interface}_ip ]; then
+ OLD_IP=`cat /var/db/${interface}_ip`
+ $LOGGER "Comparing IPs: Old: ${OLD_IP} New: ${new_ip_address}"
+ if [ -n "${OLD_IP}" ] && [ "${OLD_IP}" != "${new_ip_address}" ]; then
+ $LOGGER "Removing states from old IP '${OLD_IP}' (new IP '${new_ip_address}')"
+ ${PFCTL} -i $interface -Fs
+ ${PFCTL} -K ${OLD_IP}/32
+ _FLUSHED=1
+ fi
+ fi
+ # Delete states through old gateway if it's not the same
+ OLD_ROUTER=""
+ if [ -n "${old_routers}" ]; then
+ OLD_ROUTER=$old_routers
+ elif [ -f /tmp/${interface}_router ]; then
+ OLD_ROUTER=`cat /tmp/${interface}_router`
+ fi
+ if [ ${_FLUSHED} -eq 0 -a -n "${OLD_ROUTER}" ]; then
+ $LOGGER "Comparing Routers: Old: ${OLD_ROUTER} New: ${new_routers}"
+ if [ "${OLD_ROUTER}" != "${new_routers}" ]; then
+ $LOGGER "Removing states through old gateway '${OLD_ROUTER}' (new gateway '${new_routers}')"
+ ${PFCTL} -i $interface -Fs
+ fi
+ fi
+}
+
+delete_old_address() {
+ /bin/rm -f /var/db/${interface}_ip
+ $IFCONFIG $interface inet -alias $old_ip_address $medium
+}
+
+add_new_address() {
+
+ $LOGGER "Starting add_new_address()"
+
+ $LOGGER "ifconfig $interface inet $new_ip_address netmask $new_subnet_mask broadcast $new_broadcast_address $medium"
+
+ $IFCONFIG $interface \
+ inet $new_ip_address \
+ netmask $new_subnet_mask \
+ broadcast $new_broadcast_address \
+ $medium
+ $IFCONFIG $interface setfirst $new_ip_address
+
+ $LOGGER "New IP Address ($interface): $new_ip_address"
+ $LOGGER "New Subnet Mask ($interface): $new_subnet_mask"
+ $LOGGER "New Broadcast Address ($interface): $new_broadcast_address"
+ $LOGGER "New Routers ($interface): $new_routers"
+
+
+ # This is necessary otherwise dpinger will try to ping all 1s address
+ if [ -n "$new_routers" ] && [ "$new_routers" != "255.255.255.255" ]; then
+ echo $new_routers > /tmp/${interface}_router
+ fi
+ echo $new_ip_address > /var/db/${interface}_ip
+}
+
+delete_old_alias() {
+ if [ -n "$alias_ip_address" ]; then
+ $IFCONFIG $interface inet -alias $alias_ip_address > /dev/null 2>&1
+ $ROUTE delete $alias_ip_address $LOCALHOST > /dev/null 2>&1
+ fi
+}
+
+add_new_alias() {
+ if [ -n "$alias_ip_address" ]; then
+ $IFCONFIG $interface inet alias $alias_ip_address netmask \
+ $alias_subnet_mask
+ $ROUTE add $alias_ip_address $LOCALHOST
+ fi
+}
+
+fill_classless_routes() {
+ set $1
+ while [ $# -ge 5 ]; do
+ if [ $1 -eq 0 ]; then
+ route="default"
+ elif [ $1 -le 8 ]; then
+ route="$2.0.0.0/$1"
+ shift
+ elif [ $1 -le 16 ]; then
+ route="$2.$3.0.0/$1"
+ shift; shift
+ elif [ $1 -le 24 ]; then
+ route="$2.$3.$4.0/$1"
+ shift; shift; shift
+ else
+ route="$2.$3.$4.$5/$1"
+ shift; shift; shift; shift
+ fi
+ shift
+ router="$1.$2.$3.$4"
+ classless_routes="$classless_routes $route $router"
+ shift; shift; shift; shift
+ done
+}
+
+delete_old_routes() {
+ $LOGGER "Deleting old routes"
+
+ if [ -n "$old_classless_routes" ]; then
+ fill_classless_routes "$old_classless_routes"
+ set $classless_routes
+ while [ $# -gt 1 ]; do
+ route delete "$1" "$2"
+ shift; shift
+ done
+ return 0;
+ fi
+
+ # Only allow the default route to be overridden if it's on our own interface
+ if [ -f "/tmp/${interface}_defaultgw" ]; then
+ for router in $old_routers; do
+ $ROUTE delete default $router >/dev/null 2>&1
+ /bin/rm -f /tmp/${interface}_router
+ done
+ fi
+
+ if [ -n "$old_static_routes" ]; then
+ set $old_static_routes
+ while [ $# -gt 1 ]; do
+ $ROUTE delete "$1" "$2"
+ shift; shift
+ /bin/rm -f /tmp/${interface}_router
+ done
+ fi
+
+ arp_flush
+}
+
+add_new_routes() {
+ $LOGGER "Adding new routes to interface: $interface"
+
+ # RFC 3442: If the DHCP server returns both a Classless Static
+ # Routes option and a Router option, the DHCP client MUST ignore
+ # the Router option.
+ #
+ # DHCP clients that support this option (Classless Static Routes)
+ # MUST NOT install the routes specified in the Static Routes
+ # option (option code 33) if both a Static Routes option and the
+ # Classless Static Routes option are provided.
+ if [ -n "$new_classless_routes" ]; then
+ fill_classless_routes "$new_classless_routes"
+ $LOGGER "New Classless Static Routes ($interface): $classless_routes"
+ set $classless_routes
+ while [ $# -gt 1 ]; do
+ if [ "0.0.0.0" = "$2" ]; then
+ route add "$1" -iface "$interface"
+ else
+ route add "$1" "$2"
+ fi
+ shift; shift
+ done
+ return
+ fi
+
+ ADDED_ROUTE=no
+ EXISTSGW=`/bin/ls -l /tmp/*_defaultgw | /usr/bin/wc -l`
+ # Only allow the default route to be overridden if it's on our own interface
+ if [ -f "/tmp/${interface}_defaultgw" -o $EXISTSGW -eq 0 ]; then
+ $ROUTE delete default
+ for router in $new_routers; do
+ if [ "$new_ip_address" = "$router" -o "$router" = "255.255.255.255" ]; then
+ $ROUTE add default -iface $interface
+ echo $ROUTE add default -iface $interface | $LOGGER
+ # NOTE: Do not activate this for all ones address since pf(4) will try to forward packets to it.
+ if [ "$new_ip_address" = "$router" ]; then
+ echo $router > /tmp/${interface}_router
+ fi
+ else
+ $ROUTE add default $router
+ echo $ROUTE add default $router | $LOGGER
+ echo $router > /tmp/${interface}_router
+ fi
+ ADDED_ROUTE=yes
+ # 2nd and subsequent default routers error out, so explicitly
+ # stop processing the list after the first one.
+ break
+ done
+ fi
+
+ if [ -n "$new_static_routes" ]; then
+ $LOGGER "New Static Routes ($interface): $new_static_routes"
+ set $new_static_routes
+ while [ $# -gt 1 ]; do
+ $ROUTE add $1 $2
+ if [ "$ADDED_ROUTE" = "no" ]; then
+ echo $2 > /tmp/${interface}_router
+ fi
+ shift; shift
+ done
+ fi
+}
+
+add_new_resolv_conf() {
+ $LOGGER "Creating resolv.conf"
+ if [ -f "/var/etc/nameserver_$interface" ]; then
+ # Remove old entries
+ for nameserver in `cat /var/etc/nameserver_$interface`; do
+ $ROUTE delete $nameserver >/dev/null 2>&1
+ done
+ fi
+ if [ -n "$new_domain_name_servers" ]; then
+ /bin/rm -f /var/etc/nameserver_$interface
+ ALLOWOVERRIDE=$(/usr/local/sbin/read_xml_tag.sh boolean system/dnsallowoverride)
+ for nameserver in $new_domain_name_servers; do
+ # Add a route to the nameserver out the correct interface
+ # so that mulitple wans work correctly with multiple dns
+ # also backup the nameserver for later route removal
+ if [ "$ALLOWOVERRIDE" = "true" ]; then
+ echo $nameserver >>/var/etc/nameserver_$interface
+ $ROUTE add $nameserver -iface $interface
+ fi
+ done
+ echo $new_domain_name >/var/etc/searchdomain_$interface
+ fi
+
+ return 0
+}
+
+# Notify rc.newwanip of changes to an interface
+notify_rc_newwanip() {
+ /usr/local/sbin/pfSctl -c "interface newip $interface"
+}
+
+#
+# Start of active code.
+#
+
+# Invoke the local dhcp client enter hooks, if they exist.
+if [ -f /etc/dhclient-enter-hooks ]; then
+ $LOGGER "dhclient-enter-hooks"
+ exit_status=0
+ . /etc/dhclient-enter-hooks
+ # allow the local script to abort processing of this state
+ # local script must set exit_status variable to nonzero.
+ if [ $exit_status -ne 0 ]; then
+ exit $exit_status
+ fi
+fi
+
+$LOGGER $reason
+case $reason in
+MEDIUM)
+ $IFCONFIG $interface $medium
+ $IFCONFIG $interface inet -alias 0.0.0.0 $medium >/dev/null 2>&1
+ /bin/sleep 1
+ ;;
+
+PREINIT)
+ delete_old_alias
+ $IFCONFIG $interface inet 0.0.0.0 netmask 255.0.0.0 broadcast 255.255.255.255 up
+ /bin/rm -f /tmp/${interface}_router
+ ;;
+
+ARPCHECK|ARPSEND)
+ ;;
+
+BOUND|RENEW|REBIND|REBOOT)
+ check_hostname
+ changes="no"
+ if [ -n "$old_ip_address" ]; then
+ if [ -n "$alias_ip_address" ] && \
+ [ "$old_ip_address" != "$alias_ip_address" ]; then
+ delete_old_alias
+ changes="yes"
+ fi
+ if [ "$old_ip_address" != "$new_ip_address" ]; then
+ delete_old_address
+ delete_old_routes
+ changes="yes"
+ fi
+ fi
+ if [ "$reason" = BOUND ] || \
+ [ "$reason" = REBOOT ] || \
+ [ -z "$old_ip_address" ] || \
+ [ "$old_ip_address" != "$new_ip_address" ]; then
+ add_new_address
+ add_new_routes
+ changes="yes"
+ fi
+ if [ -n "$alias_ip_address" ] && \
+ [ "$new_ip_address" != "$alias_ip_address" ]; then
+ add_new_alias
+ changes="yes"
+ fi
+ add_new_resolv_conf
+ if [ "$changes" = "yes" ] ; then
+ notify_rc_newwanip
+ fi
+ ;;
+
+EXPIRE|FAIL)
+ delete_old_alias
+ if [ -n "$old_ip_address" ]; then
+ delete_old_address
+ delete_old_routes
+ fi
+ ;;
+
+TIMEOUT)
+ delete_old_alias
+ add_new_address
+ /bin/sleep 1
+ if [ -n "$new_routers" ]; then
+ $LOGGER "New Routers ($interface): $new_routers"
+ set "$new_routers"
+ if /sbin/ping -q -c 1 -t 1 "$1"; then
+ if [ "$new_ip_address" != "$alias_ip_address" ]; then
+ add_new_alias
+ fi
+ add_new_routes
+ if add_new_resolv_conf; then
+ notify_rc_newwanip
+ fi
+ fi
+ fi
+ $IFCONFIG $interface inet -alias $new_ip_address $medium
+ delete_old_routes
+ ;;
+esac
+
+# Invoke the local dhcp client exit hooks, if they exist.
+if [ -f /etc/dhclient-exit-hooks ]; then
+ $LOGGER "dhclient-exit-hooks"
+ exit_status=0
+ . /etc/dhclient-exit-hooks
+ # allow the local script to abort processing of this state
+ # local script must set exit_status variable to nonzero.
+ exit $exit_status
+fi
diff --git a/src/usr/local/sbin/pfSense-upgrade b/src/usr/local/sbin/pfSense-upgrade
index b5b7e5a..10f2dff 100755
--- a/src/usr/local/sbin/pfSense-upgrade
+++ b/src/usr/local/sbin/pfSense-upgrade
@@ -328,10 +328,13 @@ pkg_upgrade() {
fi
if [ -n "${dry_run}" ]; then
+ pkg_unlock ${kernel_pkg}
pkg ${pkg_chroot} upgrade -nq 2>&1 | tee -a ${logfile}
+ pkg_lock ${kernel_pkg}
_exit 0
fi
+ local _meta_pkg=$(get_meta_pkg_name)
if [ $(pkg upgrade -r ${product}-core -nq | wc -l) -gt 1 ]; then
if [ "${platform}" = "nanobsd" ]; then
_echo "**** WARNING ****"
@@ -355,6 +358,8 @@ pkg_upgrade() {
setup_nanobsd_env
fi
need_reboot=1
+ elif pkg upgrade -r ${product} -nq ${_meta_pkg} >/dev/null 2>&1; then
+ need_reboot=1
fi
pkg_unlock ${kernel_pkg}
@@ -469,16 +474,20 @@ pkg_upgrade() {
fi
}
-check_upgrade() {
+get_meta_pkg_name() {
# figure out main meta package name
if is_pkg_installed ${product}-vmware; then
- local _meta_pkg="${product}-vmware"
+ echo "${product}-vmware"
elif is_pkg_installed ${product}; then
- local _meta_pkg="${product}"
+ echo "${product}"
else
_echo "ERROR: It was not possible to identify which ${product} meta package is installed"
_exit 1
fi
+}
+
+check_upgrade() {
+ local _meta_pkg=$(get_meta_pkg_name)
pkg_update
@@ -744,6 +753,8 @@ fi
# pkg should not ask for confirmations
export ASSUME_ALWAYS_YES=true
+export FETCH_TIMEOUT=5
+export FETCH_RETRY=2
export product=$(/usr/local/bin/php -n /usr/local/sbin/read_global_var product_name pfSense)
export pkg_prefix=$(/usr/local/bin/php -n /usr/local/sbin/read_global_var pkg_prefix pfSense-pkg-)
diff --git a/src/usr/local/share/locale/en/LC_MESSAGES/pfSense.pot b/src/usr/local/share/locale/en/LC_MESSAGES/pfSense.pot
index c2226d0..a82db99 100644
--- a/src/usr/local/share/locale/en/LC_MESSAGES/pfSense.pot
+++ b/src/usr/local/share/locale/en/LC_MESSAGES/pfSense.pot
@@ -3,24 +3,24 @@
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
-#: src/usr/local/www/diag_traceroute.php:194
-#: src/usr/local/www/diag_traceroute.php:201
-#: src/usr/local/www/interfaces.php:3120 src/usr/local/www/interfaces.php:3130
-#: src/usr/local/www/system_gateway_groups_edit.php:236
-#: src/usr/local/www/system_gateway_groups_edit.php:237
-#: src/usr/local/www/system_gateway_groups_edit.php:238
-#: src/usr/local/www/system_gateway_groups_edit.php:239
-#: src/usr/local/www/system_gateway_groups_edit.php:310
-#: src/usr/local/www/system_gateway_groups_edit.php:311
-#: src/usr/local/www/system_gateway_groups_edit.php:312
-#: src/usr/local/www/system_gateway_groups_edit.php:313
+#: src/usr/local/www/diag_traceroute.php:182
+#: src/usr/local/www/diag_traceroute.php:189
+#: src/usr/local/www/interfaces.php:3127 src/usr/local/www/interfaces.php:3137
+#: src/usr/local/www/system_gateway_groups_edit.php:251
+#: src/usr/local/www/system_gateway_groups_edit.php:252
+#: src/usr/local/www/system_gateway_groups_edit.php:253
+#: src/usr/local/www/system_gateway_groups_edit.php:254
+#: src/usr/local/www/system_gateway_groups_edit.php:339
+#: src/usr/local/www/system_gateway_groups_edit.php:340
+#: src/usr/local/www/system_gateway_groups_edit.php:341
+#: src/usr/local/www/system_gateway_groups_edit.php:342
#: src/usr/local/www/vpn_ipsec_settings.php:285
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-03-04 08:22-0300\n"
+"POT-Creation-Date: 2016-05-19 09:29-0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@@ -44,134 +44,134 @@ msgstr ""
msgid "Redirecting to the dashboard..."
msgstr ""
-#: src/etc/inc/auth.inc:404 src/etc/inc/auth.inc:428 src/etc/inc/auth.inc:505
-#: src/etc/inc/auth.inc:539 src/etc/inc/auth.inc:601 src/etc/inc/auth.inc:761
-#: src/etc/inc/auth.inc:774
+#: src/etc/inc/auth.inc:422 src/etc/inc/auth.inc:446 src/etc/inc/auth.inc:523
+#: src/etc/inc/auth.inc:557 src/etc/inc/auth.inc:619 src/etc/inc/auth.inc:774
+#: src/etc/inc/auth.inc:787
#, php-format
msgid "Running: %s"
msgstr ""
-#: src/etc/inc/auth.inc:815 src/etc/inc/auth.inc:896 src/etc/inc/auth.inc:976
-#: src/etc/inc/auth.inc:1264
+#: src/etc/inc/auth.inc:828 src/etc/inc/auth.inc:909 src/etc/inc/auth.inc:989
+#: src/etc/inc/auth.inc:1277
#, php-format
msgid "ERROR! Could not connect to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:833
+#: src/etc/inc/auth.inc:846
#, php-format
msgid "LDAP: Could not lookup CA by reference for host %s."
msgstr ""
-#: src/etc/inc/auth.inc:962
+#: src/etc/inc/auth.inc:975
msgid ""
"ERROR! ldap_get_user_ous() backed selected with no LDAP authentication "
"server defined."
msgstr ""
-#: src/etc/inc/auth.inc:992
+#: src/etc/inc/auth.inc:1005
#, php-format
msgid "ERROR! ldap_get_user_ous() could not bind anonymously to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:997
+#: src/etc/inc/auth.inc:1010
#, php-format
msgid "ERROR! ldap_get_user_ous() could not bind to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:1113
+#: src/etc/inc/auth.inc:1126
#, php-format
msgid "ERROR! ldap_get_groups() Could not connect to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:1128
+#: src/etc/inc/auth.inc:1141
#, php-format
msgid "ERROR! ldap_get_groups() could not bind anonymously to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:1133
+#: src/etc/inc/auth.inc:1146
#, php-format
msgid "ERROR! ldap_get_groups() could not bind to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:1239
+#: src/etc/inc/auth.inc:1252
msgid ""
"ERROR! ldap_backed() called with no LDAP authentication server defined. "
"Defaulting to local user database. Visit System -> User Manager."
msgstr ""
-#: src/etc/inc/auth.inc:1242
+#: src/etc/inc/auth.inc:1255
msgid "ERROR! ldap_backed() called with no LDAP authentication server defined."
msgstr ""
-#: src/etc/inc/auth.inc:1282
+#: src/etc/inc/auth.inc:1295
#, php-format
msgid "ERROR! Could not bind to server %s."
msgstr ""
-#: src/etc/inc/auth.inc:1300
+#: src/etc/inc/auth.inc:1313
#, php-format
msgid "Now Searching for %s in directory."
msgstr ""
-#: src/etc/inc/auth.inc:1309
+#: src/etc/inc/auth.inc:1322
#, php-format
msgid "Now Searching in server %1$s, container %2$s with filter %3$s."
msgstr ""
-#: src/etc/inc/auth.inc:1323
+#: src/etc/inc/auth.inc:1336
#, php-format
msgid "Search resulted in error: %s"
msgstr ""
-#: src/etc/inc/auth.inc:1339
+#: src/etc/inc/auth.inc:1352
msgid "ERROR! Either LDAP search failed, or multiple users were found."
msgstr ""
-#: src/etc/inc/auth.inc:1346
+#: src/etc/inc/auth.inc:1359
#, php-format
msgid "ERROR! Could not login to server %1$s as user %2$s: %3$s"
msgstr ""
-#: src/etc/inc/auth.inc:1353
+#: src/etc/inc/auth.inc:1366
#, php-format
msgid "Logged in successfully as %1$s via LDAP server %2$s with DN = %3$s."
msgstr ""
-#: src/etc/inc/auth.inc:1389
+#: src/etc/inc/auth.inc:1402
#, php-format
msgid "RADIUS start: %s<br />\n"
msgstr ""
-#: src/etc/inc/auth.inc:1401
+#: src/etc/inc/auth.inc:1414
#, php-format
msgid "RADIUS send failed: %s<br />\n"
msgstr ""
-#: src/etc/inc/auth.inc:1409
+#: src/etc/inc/auth.inc:1422
#, php-format
msgid "RADIUS Auth succeeded"
msgstr ""
-#: src/etc/inc/auth.inc:1415
+#: src/etc/inc/auth.inc:1428
#, php-format
msgid "RADIUS Auth rejected"
msgstr ""
-#: src/etc/inc/auth.inc:1481 src/etc/inc/auth.inc:1497
+#: src/etc/inc/auth.inc:1501 src/etc/inc/auth.inc:1517
msgid "Local Database"
msgstr ""
-#: src/etc/inc/auth.inc:1600
+#: src/etc/inc/auth.inc:1620
#, php-format
msgid "Successful login for user '%1$s' from: %2$s"
msgstr ""
-#: src/etc/inc/auth.inc:1658
+#: src/etc/inc/auth.inc:1678
#, php-format
msgid "Session timed out for user '%1$s' from: %2$s"
msgstr ""
-#: src/etc/inc/auth.inc:1660
+#: src/etc/inc/auth.inc:1680
#, php-format
msgid "User logged out for user '%1$s' from: %2$s"
msgstr ""
@@ -204,15 +204,16 @@ msgid "This device is currently being maintained by: %s."
msgstr ""
#: src/etc/inc/authgui.inc:251 src/etc/inc/authgui.inc:299
-#: src/usr/local/www/services_captiveportal.php:1040
+#: src/usr/local/www/services_captiveportal.php:1049
msgid "Login"
msgstr ""
#: src/etc/inc/authgui.inc:265
msgid ""
-"You are accessing this router by an IP address not configured locally, which "
-"may be forwarded by NAT or other means. <br /><br />If you did not setup "
-"this forwarding, you may be the target of a man-in-the-middle attack."
+"The IP address being used to access this router is not configured locally, "
+"which may be forwarded by NAT or other means. <br /><br />If this forwarding "
+"is unexpected, it should be verified that a man-in-the-middle attack is not "
+"taking place."
msgstr ""
#: src/etc/inc/authgui.inc:273
@@ -221,17 +222,17 @@ msgid "Login to %s"
msgstr ""
#: src/etc/inc/authgui.inc:280
-msgid "Your browser must support cookies to login."
+msgid "The browser must support cookies to login."
msgstr ""
#: src/etc/inc/authgui.inc:284 src/usr/local/www/diag_authentication.php:132
-#: src/usr/local/www/interfaces.php:2491 src/usr/local/www/interfaces.php:2557
-#: src/usr/local/www/interfaces.php:2688
-#: src/usr/local/www/interfaces_ppps_edit.php:227
-#: src/usr/local/www/interfaces_ppps_edit.php:230
+#: src/usr/local/www/interfaces.php:2507 src/usr/local/www/interfaces.php:2574
+#: src/usr/local/www/interfaces.php:2700
#: src/usr/local/www/interfaces_ppps_edit.php:238
#: src/usr/local/www/interfaces_ppps_edit.php:241
-#: src/usr/local/www/interfaces_ppps_edit.php:623
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
+#: src/usr/local/www/interfaces_ppps_edit.php:633
#: src/usr/local/www/services_dyndns_edit.php:132
#: src/usr/local/www/services_dyndns_edit.php:381
#: src/usr/local/www/services_pppoe_edit.php:540
@@ -239,15 +240,15 @@ msgstr ""
#: src/usr/local/www/system_usermanager.php:179
#: src/usr/local/www/system_usermanager.php:184
#: src/usr/local/www/system_usermanager.php:189
-#: src/usr/local/www/system_usermanager.php:500
-#: src/usr/local/www/system_usermanager.php:627
+#: src/usr/local/www/system_usermanager.php:501
+#: src/usr/local/www/system_usermanager.php:628
#: src/usr/local/www/vpn_l2tp_users.php:129
#: src/usr/local/www/vpn_l2tp_users_edit.php:108
#: src/usr/local/www/vpn_l2tp_users_edit.php:111
#: src/usr/local/www/vpn_l2tp_users_edit.php:189
#: src/usr/local/www/vpn_openvpn_client.php:533
#: src/usr/local/www/vpn_openvpn_client.php:566
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:131
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:132
msgid "Username"
msgstr ""
@@ -256,23 +257,23 @@ msgid "Enter your username"
msgstr ""
#: src/etc/inc/authgui.inc:291 src/usr/local/www/diag_authentication.php:140
-#: src/usr/local/www/diag_backup.php:658 src/usr/local/www/diag_backup.php:703
-#: src/usr/local/www/interfaces.php:2498 src/usr/local/www/interfaces.php:2564
-#: src/usr/local/www/interfaces.php:2695
-#: src/usr/local/www/interfaces_ppps_edit.php:227
-#: src/usr/local/www/interfaces_ppps_edit.php:230
+#: src/usr/local/www/diag_backup.php:658 src/usr/local/www/diag_backup.php:705
+#: src/usr/local/www/interfaces.php:2514 src/usr/local/www/interfaces.php:2581
+#: src/usr/local/www/interfaces.php:2707
#: src/usr/local/www/interfaces_ppps_edit.php:238
#: src/usr/local/www/interfaces_ppps_edit.php:241
-#: src/usr/local/www/interfaces_ppps_edit.php:630
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
+#: src/usr/local/www/interfaces_ppps_edit.php:640
#: src/usr/local/www/services_dyndns_edit.php:130
#: src/usr/local/www/services_dyndns_edit.php:391
#: src/usr/local/www/services_pppoe_edit.php:547
-#: src/usr/local/www/system_advanced_notifications.php:275
-#: src/usr/local/www/system_authservers.php:617
+#: src/usr/local/www/system_advanced_notifications.php:273
+#: src/usr/local/www/system_authservers.php:685
#: src/usr/local/www/system_usermanager.php:185
#: src/usr/local/www/system_usermanager.php:190
-#: src/usr/local/www/system_usermanager.php:643
-#: src/usr/local/www/system_usermanager.php:646
+#: src/usr/local/www/system_usermanager.php:644
+#: src/usr/local/www/system_usermanager.php:647
#: src/usr/local/www/system_usermanager_passwordmg.php:74
#: src/usr/local/www/system_usermanager_passwordmg.php:135
#: src/usr/local/www/vpn_l2tp_users_edit.php:111
@@ -309,7 +310,6 @@ msgid "Enter Voucher Code:"
msgstr ""
#: src/etc/inc/captiveportal.inc:132 src/usr/local/www/crash_reporter.php:124
-#: src/usr/local/www/services_captiveportal_zones_edit.php:119
msgid "Continue"
msgstr ""
@@ -348,144 +348,149 @@ msgstr ""
msgid "Press ENTER to continue."
msgstr ""
-#: src/etc/inc/config.console.inc:97 src/etc/inc/config.console.inc:520
+#: src/etc/inc/config.console.inc:97 src/etc/inc/config.console.inc:543
msgid "No interfaces found!"
msgstr ""
-#: src/etc/inc/config.console.inc:116
-msgid "Do you want to set up VLANs first?"
+#: src/etc/inc/config.console.inc:122
+msgid "Do VLANs need to be set up first?"
msgstr ""
-#: src/etc/inc/config.console.inc:119
+#: src/etc/inc/config.console.inc:125
msgid ""
-"If you are not going to use VLANs, or only for optional interfaces, you "
-"should\n"
+"If VLANs will not be used, or only for optional interfaces, it is typical "
+"to\n"
"say no here and use the webConfigurator to configure VLANs later, if "
"required."
msgstr ""
-#: src/etc/inc/config.console.inc:122
-msgid "Do you want to set up VLANs now [y|n]?"
+#: src/etc/inc/config.console.inc:128
+msgid "Should VLANs be set up now [y|n]?"
msgstr ""
-#: src/etc/inc/config.console.inc:197
+#: src/etc/inc/config.console.inc:202
msgid "VLAN interfaces:"
msgstr ""
-#: src/etc/inc/config.console.inc:217
+#: src/etc/inc/config.console.inc:222
msgid "Enter the WAN interface name or 'a' for auto-detection"
msgstr ""
-#: src/etc/inc/config.console.inc:218
+#: src/etc/inc/config.console.inc:223
#, php-format
msgid "%s(%s or a): "
msgstr ""
-#: src/etc/inc/config.console.inc:226 src/etc/inc/config.console.inc:252
-#: src/etc/inc/config.console.inc:288 src/etc/inc/config.console.inc:543
+#: src/etc/inc/config.console.inc:231 src/etc/inc/config.console.inc:257
+#: src/etc/inc/config.console.inc:293 src/etc/inc/config.console.inc:566
#, php-format
msgid "%sInvalid interface name '%s'%s"
msgstr ""
-#: src/etc/inc/config.console.inc:234
+#: src/etc/inc/config.console.inc:239
#, php-format
msgid ""
"%sEnter the LAN interface name or 'a' for auto-detection %sNOTE: this "
"enables full Firewalling/NAT mode.%s(%s a or nothing if finished):%s"
msgstr ""
-#: src/etc/inc/config.console.inc:271
+#: src/etc/inc/config.console.inc:276
#, php-format
msgid "%sOptional interface %s description found: %s"
msgstr ""
-#: src/etc/inc/config.console.inc:274
+#: src/etc/inc/config.console.inc:279
#, php-format
msgid ""
"%sEnter the Optional %s interface name or 'a' for auto-detection%s(%s a or "
"nothing if finished):%s"
msgstr ""
-#: src/etc/inc/config.console.inc:281
+#: src/etc/inc/config.console.inc:286
msgid "Optional"
msgstr ""
-#: src/etc/inc/config.console.inc:317
+#: src/etc/inc/config.console.inc:322
msgid "The interfaces will be assigned as follows:"
msgstr ""
-#: src/etc/inc/config.console.inc:327 src/etc/inc/config.console.inc:503
+#: src/etc/inc/config.console.inc:332 src/etc/inc/config.console.inc:526
msgid "Do you want to proceed [y|n]?"
msgstr ""
-#: src/etc/inc/config.console.inc:340
+#: src/etc/inc/config.console.inc:350
msgid "You have chosen to remove the LAN interface."
msgstr ""
-#: src/etc/inc/config.console.inc:341
+#: src/etc/inc/config.console.inc:351
msgid ""
"Would you like to remove the LAN IP address and \n"
"unload the interface now [y|n]?"
msgstr ""
-#: src/etc/inc/config.console.inc:449
+#: src/etc/inc/config.console.inc:472
#, php-format
msgid "%sWriting configuration..."
msgstr ""
-#: src/etc/inc/config.console.inc:450
+#: src/etc/inc/config.console.inc:473
msgid "Console assignment of interfaces"
msgstr ""
-#: src/etc/inc/config.console.inc:451
+#: src/etc/inc/config.console.inc:474
#, php-format
msgid "done.%s"
msgstr ""
-#: src/etc/inc/config.console.inc:459
-msgid "One moment while we reload the settings..."
+#: src/etc/inc/config.console.inc:482
+msgid "One moment while the settings are reloading..."
msgstr ""
-#: src/etc/inc/config.console.inc:460
+#: src/etc/inc/config.console.inc:483
msgid " done!"
msgstr ""
-#: src/etc/inc/config.console.inc:480
+#: src/etc/inc/config.console.inc:503
#, php-format
msgid "Detected link-up on interface %s.%s"
msgstr ""
-#: src/etc/inc/config.console.inc:485
+#: src/etc/inc/config.console.inc:508
#, php-format
msgid "No link-up detected.%s"
msgstr ""
-#: src/etc/inc/config.console.inc:502
+#: src/etc/inc/config.console.inc:525
msgid "WARNING: all existing VLANs will be cleared if you proceed!"
msgstr ""
-#: src/etc/inc/config.console.inc:518
+#: src/etc/inc/config.console.inc:541
msgid "VLAN Capable interfaces:"
msgstr ""
-#: src/etc/inc/config.console.inc:533
+#: src/etc/inc/config.console.inc:556
msgid "No VLAN capable interfaces detected."
msgstr ""
-#: src/etc/inc/config.console.inc:537
+#: src/etc/inc/config.console.inc:560
msgid ""
"Enter the parent interface name for the new VLAN (or nothing if finished):"
msgstr ""
-#: src/etc/inc/config.console.inc:550
+#: src/etc/inc/config.console.inc:573
msgid "Enter the VLAN tag (1-4094):"
msgstr ""
-#: src/etc/inc/config.console.inc:554
+#: src/etc/inc/config.console.inc:577
#, php-format
msgid "%sInvalid VLAN tag '%s'%s"
msgstr ""
+#: src/etc/inc/config.console.inc:584
+#, php-format
+msgid "This parent interface and VLAN already created."
+msgstr ""
+
#: src/etc/inc/config.inc:112
msgid "Upgrading m0n0wall configuration to pfSense... "
msgstr ""
@@ -537,7 +542,7 @@ msgid ""
msgstr ""
#: src/etc/inc/config.lib.inc:159 src/etc/inc/config.lib.inc:170
-#: src/etc/inc/config.lib.inc:589
+#: src/etc/inc/config.lib.inc:592
msgid "Could not restore config.xml."
msgstr ""
@@ -554,7 +559,7 @@ msgstr ""
msgid ""
"No XML configuration file found - using factory defaults.\n"
"Make sure that the configuration floppy disk with the conf/config.xml\n"
-"file is inserted. If it isn't, your configuration changes will be lost\n"
+"file is inserted. If it isn't, the configuration changes will be lost\n"
"on reboot.\n"
msgstr ""
@@ -565,8 +570,8 @@ msgstr ""
#: src/etc/inc/config.lib.inc:287
msgid ""
-"Last known config found and restored. Please double check your "
-"configuration file for accuracy."
+"Last known config found and restored. Please double check the configuration "
+"file for accuracy."
msgstr ""
#: src/etc/inc/config.lib.inc:291
@@ -581,62 +586,62 @@ msgstr ""
msgid "/ File system is dirty."
msgstr ""
-#: src/etc/inc/config.lib.inc:421
+#: src/etc/inc/config.lib.inc:424
#, php-format
msgid "Start Configuration upgrade at %s, set execution timeout to 15 minutes"
msgstr ""
-#: src/etc/inc/config.lib.inc:432 src/etc/inc/config.lib.inc:433
+#: src/etc/inc/config.lib.inc:435 src/etc/inc/config.lib.inc:436
msgid "Updated bogon update frequency to 3am"
msgstr ""
-#: src/etc/inc/config.lib.inc:469
+#: src/etc/inc/config.lib.inc:472
#, php-format
msgid "Ended Configuration upgrade at %s"
msgstr ""
-#: src/etc/inc/config.lib.inc:472
+#: src/etc/inc/config.lib.inc:475
#, php-format
msgid "Upgraded config version level from %1$s to %2$s"
msgstr ""
-#: src/etc/inc/config.lib.inc:566
+#: src/etc/inc/config.lib.inc:569
msgid "WARNING: Config contents could not be saved. Could not open file!"
msgstr ""
-#: src/etc/inc/config.lib.inc:568
+#: src/etc/inc/config.lib.inc:571
#, php-format
msgid "Unable to open %s/config.xml for writing in write_config()%s"
msgstr ""
-#: src/etc/inc/config.lib.inc:697
+#: src/etc/inc/config.lib.inc:700
#, php-format
msgid "Reverted to %s."
msgstr ""
-#: src/etc/inc/config.lib.inc:714
+#: src/etc/inc/config.lib.inc:717
msgid "Installing configuration..."
msgstr ""
-#: src/etc/inc/config.lib.inc:716
+#: src/etc/inc/config.lib.inc:719
msgid "Installing configuration ...."
msgstr ""
-#: src/etc/inc/config.lib.inc:769
+#: src/etc/inc/config.lib.inc:772
msgid "XML error: unable to open file"
msgstr ""
-#: src/etc/inc/config.lib.inc:775
+#: src/etc/inc/config.lib.inc:778
#, php-format
msgid "%1$s at line %2$d"
msgstr ""
-#: src/etc/inc/config.lib.inc:829 src/etc/inc/config.lib.inc:831
+#: src/etc/inc/config.lib.inc:832 src/etc/inc/config.lib.inc:834
#, php-format
msgid "The backup cache file %s is corrupted. Unlinking."
msgstr ""
-#: src/etc/inc/config.lib.inc:988
+#: src/etc/inc/config.lib.inc:991
#, php-format
msgid "%s made unknown change"
msgstr ""
@@ -683,12 +688,12 @@ msgstr ""
msgid "Dynamic DNS %1$s (%2$s): _checkStatus() starting."
msgstr ""
-#: src/etc/inc/dyndns.class:822 src/usr/local/www/pkg_mgr_install.php:144
+#: src/etc/inc/dyndns.class:822 src/usr/local/www/pkg_mgr_install.php:152
msgid "Success"
msgstr ""
#: src/etc/inc/dyndns.class:823 src/etc/inc/dyndns.class:1455
-#: src/usr/local/www/diag_smart.php:471
+#: src/usr/local/www/diag_smart.php:498
msgid "Error"
msgstr ""
@@ -759,8 +764,8 @@ msgstr ""
#: src/etc/inc/dyndns.class:853
msgid ""
-"You may update up to 20 hosts. numhost is returned if you try to update more "
-"than 20 or update a round-robin."
+"Up to 20 hosts my be updated. numhost is returned if attempting to update "
+"more than 20 or update a round-robin."
msgstr ""
#: src/etc/inc/dyndns.class:855
@@ -919,7 +924,7 @@ msgid ""
msgstr ""
#: src/etc/inc/dyndns.class:1047
-msgid "Update Too Soon - You have tried updating to quickly since last change."
+msgid "Update Too Soon - Attempted to update too quickly since last change."
msgstr ""
#: src/etc/inc/dyndns.class:1049
@@ -928,7 +933,7 @@ msgstr ""
#: src/etc/inc/dyndns.class:1051
#, php-format
-msgid "Hostname Error - The hostname (%s) doesn't belong to you."
+msgid "Hostname Error - The hostname (%s) doesn't belong to user (%s)."
msgstr ""
#: src/etc/inc/dyndns.class:1114
@@ -936,7 +941,7 @@ msgid "Not a valid username or password!"
msgstr ""
#: src/etc/inc/dyndns.class:1116
-msgid "Hostname you are trying to update does not exist."
+msgid "Hostname specified does not exist."
msgstr ""
#: src/etc/inc/dyndns.class:1122
@@ -977,7 +982,7 @@ msgid "Server side error."
msgstr ""
#: src/etc/inc/dyndns.class:1161
-msgid "Badly Formed Request (check your settings)."
+msgid "Badly Formed Request (check the settings)."
msgstr ""
#: src/etc/inc/dyndns.class:1180
@@ -1017,7 +1022,7 @@ msgid ""
msgstr ""
#: src/etc/inc/dyndns.class:1272
-msgid "Zone or Host ID was not found, check your hostname."
+msgid "Zone or Host ID was not found, check the hostname."
msgstr ""
#: src/etc/inc/dyndns.class:1274
@@ -1094,7 +1099,7 @@ msgid "DynDNS updated IP Address on %1$s (%2$s) to %3$s"
msgstr ""
#: src/etc/inc/dyndns.class:1430 src/etc/inc/dyndns.class:1438
-#: src/etc/inc/services.inc:2498
+#: src/etc/inc/services.inc:2514
#, php-format
msgid "phpDynDNS: updating cache file %1$s: %2$s"
msgstr ""
@@ -1235,108 +1240,108 @@ msgstr ""
msgid "Easy Rule: Blocked from Firewall Log View"
msgstr ""
-#: src/etc/inc/easyrule.inc:224 src/etc/inc/easyrule.inc:236
+#: src/etc/inc/easyrule.inc:235 src/etc/inc/easyrule.inc:247
msgid "Entry added"
msgstr ""
-#: src/etc/inc/easyrule.inc:233
+#: src/etc/inc/easyrule.inc:244
msgid "Hosts blocked from Firewall Log view"
msgstr ""
-#: src/etc/inc/easyrule.inc:315
+#: src/etc/inc/easyrule.inc:326
msgid "Easy Rule: Passed from Firewall Log View"
msgstr ""
-#: src/etc/inc/easyrule.inc:374
+#: src/etc/inc/easyrule.inc:385
msgid "Tried to block invalid IP:"
msgstr ""
-#: src/etc/inc/easyrule.inc:378 src/etc/inc/easyrule.inc:401
-#: src/etc/inc/easyrule.inc:458
+#: src/etc/inc/easyrule.inc:389 src/etc/inc/easyrule.inc:412
+#: src/etc/inc/easyrule.inc:469
msgid "Invalid interface for block rule:"
msgstr ""
-#: src/etc/inc/easyrule.inc:381
+#: src/etc/inc/easyrule.inc:392
msgid "Host added successfully"
msgstr ""
-#: src/etc/inc/easyrule.inc:383
+#: src/etc/inc/easyrule.inc:394
msgid "Failed to create block rule, alias, or add host."
msgstr ""
-#: src/etc/inc/easyrule.inc:386
+#: src/etc/inc/easyrule.inc:397
msgid "Tried to block but had no host IP or interface"
msgstr ""
-#: src/etc/inc/easyrule.inc:388
+#: src/etc/inc/easyrule.inc:399
msgid "Unknown block error."
msgstr ""
-#: src/etc/inc/easyrule.inc:397
+#: src/etc/inc/easyrule.inc:408
msgid "Tried to unblock invalid IP:"
msgstr ""
-#: src/etc/inc/easyrule.inc:407 src/etc/inc/easyrule.inc:465
+#: src/etc/inc/easyrule.inc:418 src/etc/inc/easyrule.inc:476
msgid "No block rules set on interface:"
msgstr ""
-#: src/etc/inc/easyrule.inc:442
+#: src/etc/inc/easyrule.inc:453
msgid "Host unblocked successfully"
msgstr ""
-#: src/etc/inc/easyrule.inc:445
+#: src/etc/inc/easyrule.inc:456
msgid "Host is not on block list: "
msgstr ""
-#: src/etc/inc/easyrule.inc:449
+#: src/etc/inc/easyrule.inc:460
msgid "Tried to unblock but had no host IP or interface"
msgstr ""
-#: src/etc/inc/easyrule.inc:480
+#: src/etc/inc/easyrule.inc:491
msgid "Invalid interface for pass rule:"
msgstr ""
-#: src/etc/inc/easyrule.inc:483
+#: src/etc/inc/easyrule.inc:494
msgid "Invalid protocol for pass rule:"
msgstr ""
-#: src/etc/inc/easyrule.inc:486
+#: src/etc/inc/easyrule.inc:497
msgid "Tried to pass invalid source IP:"
msgstr ""
-#: src/etc/inc/easyrule.inc:489
+#: src/etc/inc/easyrule.inc:500
msgid "Tried to pass invalid destination IP:"
msgstr ""
-#: src/etc/inc/easyrule.inc:493
+#: src/etc/inc/easyrule.inc:504
msgid "Missing destination port:"
msgstr ""
-#: src/etc/inc/easyrule.inc:496
+#: src/etc/inc/easyrule.inc:507
msgid "Tried to pass invalid destination port:"
msgstr ""
-#: src/etc/inc/easyrule.inc:503
+#: src/etc/inc/easyrule.inc:514
msgid "Successfully added pass rule!"
msgstr ""
-#: src/etc/inc/easyrule.inc:505
+#: src/etc/inc/easyrule.inc:516
msgid "Failed to add pass rule."
msgstr ""
-#: src/etc/inc/easyrule.inc:508
+#: src/etc/inc/easyrule.inc:519
msgid "Missing parameters for pass rule."
msgstr ""
-#: src/etc/inc/easyrule.inc:510
+#: src/etc/inc/easyrule.inc:521
msgid "Unknown pass error."
msgstr ""
#: src/etc/inc/filter.inc:80 src/etc/inc/filter.inc:110
-#: src/usr/local/www/firewall_rules_edit.php:1211
-#: src/usr/local/www/firewall_rules_edit.php:1253
-#: src/usr/local/www/firewall_rules_edit.php:1304
-#: src/usr/local/www/firewall_rules_edit.php:1354
+#: src/usr/local/www/firewall_rules_edit.php:1227
+#: src/usr/local/www/firewall_rules_edit.php:1269
+#: src/usr/local/www/firewall_rules_edit.php:1320
+#: src/usr/local/www/firewall_rules_edit.php:1372
msgid "any"
msgstr ""
@@ -1357,7 +1362,7 @@ msgid "Source quench"
msgstr ""
#: src/etc/inc/filter.inc:85 src/etc/inc/filter.inc:127
-#: src/etc/inc/unbound.inc:807
+#: src/etc/inc/unbound.inc:806
msgid "Redirect"
msgstr ""
@@ -1405,9 +1410,10 @@ msgstr ""
msgid "Address mask reply"
msgstr ""
-#: src/etc/inc/filter.inc:97 src/usr/local/www/diag_dns.php:294
+#: src/etc/inc/filter.inc:97 src/usr/local/www/diag_dns.php:313
#: src/usr/local/www/diag_traceroute.php:70
-#: src/usr/local/www/diag_traceroute.php:160 src/usr/local/www/head.inc:392
+#: src/usr/local/www/diag_traceroute.php:148
+#: src/usr/local/www/diag_traceroute.php:197 src/usr/local/www/head.inc:392
msgid "Traceroute"
msgstr ""
@@ -1557,22 +1563,22 @@ msgstr ""
#: src/etc/inc/filter.inc:322 src/etc/inc/filter.inc:574
#: src/etc/inc/interfaces.inc:209 src/etc/inc/interfaces.inc:233
-#: src/etc/inc/interfaces.inc:371 src/etc/inc/interfaces.inc:433
-#: src/etc/inc/interfaces.inc:741 src/etc/inc/interfaces.inc:1106
-#: src/etc/inc/interfaces.inc:1137 src/etc/inc/interfaces.inc:1161
-#: src/etc/inc/interfaces.inc:1182 src/etc/inc/interfaces.inc:2199
-#: src/etc/inc/pkg-utils.inc:545 src/etc/inc/pkg-utils.inc:694
-#: src/etc/inc/pkg-utils.inc:718 src/etc/inc/pkg-utils.inc:754
-#: src/etc/inc/pkg-utils.inc:759 src/etc/inc/pkg-utils.inc:764
-#: src/etc/inc/pkg-utils.inc:782 src/etc/inc/pkg-utils.inc:799
-#: src/etc/inc/pkg-utils.inc:821 src/etc/inc/pkg-utils.inc:864
-#: src/etc/inc/pkg-utils.inc:890 src/etc/inc/pkg-utils.inc:933
-#: src/etc/inc/pkg-utils.inc:952 src/etc/inc/rrd.inc:1077
-#: src/etc/inc/services.inc:1561 src/etc/inc/services.inc:1942
-#: src/etc/inc/services.inc:2138 src/etc/inc/services.inc:2180
-#: src/etc/inc/services.inc:2389 src/etc/inc/system.inc:1089
-#: src/etc/inc/system.inc:1187 src/etc/inc/system.inc:1479
-#: src/etc/inc/system.inc:1896 src/etc/inc/system.inc:2047
+#: src/etc/inc/interfaces.inc:379 src/etc/inc/interfaces.inc:441
+#: src/etc/inc/interfaces.inc:749 src/etc/inc/interfaces.inc:1114
+#: src/etc/inc/interfaces.inc:1145 src/etc/inc/interfaces.inc:1169
+#: src/etc/inc/interfaces.inc:1190 src/etc/inc/interfaces.inc:2208
+#: src/etc/inc/pkg-utils.inc:564 src/etc/inc/pkg-utils.inc:713
+#: src/etc/inc/pkg-utils.inc:737 src/etc/inc/pkg-utils.inc:773
+#: src/etc/inc/pkg-utils.inc:778 src/etc/inc/pkg-utils.inc:783
+#: src/etc/inc/pkg-utils.inc:801 src/etc/inc/pkg-utils.inc:818
+#: src/etc/inc/pkg-utils.inc:840 src/etc/inc/pkg-utils.inc:883
+#: src/etc/inc/pkg-utils.inc:909 src/etc/inc/pkg-utils.inc:952
+#: src/etc/inc/pkg-utils.inc:971 src/etc/inc/rrd.inc:1079
+#: src/etc/inc/services.inc:1577 src/etc/inc/services.inc:1958
+#: src/etc/inc/services.inc:2154 src/etc/inc/services.inc:2196
+#: src/etc/inc/services.inc:2405 src/etc/inc/system.inc:1092
+#: src/etc/inc/system.inc:1190 src/etc/inc/system.inc:1491
+#: src/etc/inc/system.inc:2022
msgid "done."
msgstr ""
@@ -1630,82 +1636,82 @@ msgstr ""
msgid "Creating gateway group item..."
msgstr ""
-#: src/etc/inc/filter.inc:916
+#: src/etc/inc/filter.inc:917
#, php-format
msgid "Setting up route with %1$s on %2$s"
msgstr ""
-#: src/etc/inc/filter.inc:920
+#: src/etc/inc/filter.inc:921
#, php-format
msgid "Too many members in group %s, gateway group truncated in ruleset."
msgstr ""
-#: src/etc/inc/filter.inc:932
+#: src/etc/inc/filter.inc:933
#, php-format
msgid ""
"An error occurred while trying to find the interface got %s . The rule has "
"not been added."
msgstr ""
-#: src/etc/inc/filter.inc:1285
+#: src/etc/inc/filter.inc:1286
#, php-format
msgid "Creating reflection NAT rule for %s..."
msgstr ""
-#: src/etc/inc/filter.inc:1383
+#: src/etc/inc/filter.inc:1384
#, php-format
msgid "Creating reflection rule for %s..."
msgstr ""
-#: src/etc/inc/filter.inc:1504
+#: src/etc/inc/filter.inc:1505
msgid "Not installing NAT reflection rules for a port range > 500"
msgstr ""
-#: src/etc/inc/filter.inc:1510
+#: src/etc/inc/filter.inc:1511
msgid "Installing partial NAT reflection rules. Maximum 1,000 reached."
msgstr ""
-#: src/etc/inc/filter.inc:1591
+#: src/etc/inc/filter.inc:1592
msgid "localhost"
msgstr ""
-#: src/etc/inc/filter.inc:1599
+#: src/etc/inc/filter.inc:1600
msgid "static route"
msgstr ""
-#: src/etc/inc/filter.inc:1611
+#: src/etc/inc/filter.inc:1612
msgid "DHCP alias address"
msgstr ""
-#: src/etc/inc/filter.inc:1645
+#: src/etc/inc/filter.inc:1646
msgid "PPPoE server"
msgstr ""
-#: src/etc/inc/filter.inc:1656
+#: src/etc/inc/filter.inc:1657
msgid "L2TP server"
msgstr ""
-#: src/etc/inc/filter.inc:1665
+#: src/etc/inc/filter.inc:1666
msgid "OpenVPN server"
msgstr ""
-#: src/etc/inc/filter.inc:1674
+#: src/etc/inc/filter.inc:1675
msgid "OpenVPN client"
msgstr ""
-#: src/etc/inc/filter.inc:1684
+#: src/etc/inc/filter.inc:1685
msgid "IPsec client"
msgstr ""
-#: src/etc/inc/filter.inc:1720
+#: src/etc/inc/filter.inc:1721
msgid "Auto created rule for ISAKMP"
msgstr ""
-#: src/etc/inc/filter.inc:1730
+#: src/etc/inc/filter.inc:1731
msgid "Auto created rule"
msgstr ""
-#: src/etc/inc/filter.inc:1863
+#: src/etc/inc/filter.inc:1864
msgid "Creating 1:1 rules..."
msgstr ""
@@ -1775,49 +1781,49 @@ msgstr ""
msgid "Creating rule %s"
msgstr ""
-#: src/etc/inc/filter.inc:3033
+#: src/etc/inc/filter.inc:3031
#, php-format
msgid "[TDR DEBUG] status true -- rule type '%s'"
msgstr ""
-#: src/etc/inc/filter.inc:3077
+#: src/etc/inc/filter.inc:3075
msgid "Creating default rules"
msgstr ""
-#: src/etc/inc/filter.inc:3729
+#: src/etc/inc/filter.inc:3726
msgid "Creating IPsec rules..."
msgstr ""
-#: src/etc/inc/filter.inc:3782
+#: src/etc/inc/filter.inc:3779
msgid ""
"Please use filter_tdr_install_cron() function tdr_install_cron will be "
"deprecated!"
msgstr ""
-#: src/etc/inc/filter.inc:3831
+#: src/etc/inc/filter.inc:3828
msgid "Installed 15 minute filter reload for Time Based Rules"
msgstr ""
-#: src/etc/inc/filter.inc:3838
+#: src/etc/inc/filter.inc:3835
msgid "Removed 15 minute filter reload for Time Based Rules"
msgstr ""
-#: src/etc/inc/filter.inc:4203
+#: src/etc/inc/filter.inc:4200
#, php-format
msgid "Checking for %1$s PF hooks in package %2$s"
msgstr ""
-#: src/etc/inc/filter.inc:4210
+#: src/etc/inc/filter.inc:4207
#, php-format
msgid "Processing early %1$s rules for package %2$s"
msgstr ""
-#: src/etc/inc/filter.inc:4215
+#: src/etc/inc/filter.inc:4212
#, php-format
msgid "There was an error while parsing the package filter rules for %s."
msgstr ""
-#: src/etc/inc/filter.inc:4281
+#: src/etc/inc/filter.inc:4278
msgid "delete this separator"
msgstr ""
@@ -1867,70 +1873,72 @@ msgstr ""
msgid "No mirrors found."
msgstr ""
-#: src/etc/inc/gmirror.inc:104 src/etc/inc/shaper.inc:789
-#: src/etc/inc/shaper.inc:1167 src/etc/inc/shaper.inc:1376
-#: src/etc/inc/shaper.inc:3345 src/etc/inc/shaper.inc:3891
-#: src/etc/inc/shaper.inc:4213 src/usr/local/www/diag_gmirror.php:251
-#: src/usr/local/www/diag_gmirror.php:331
+#: src/etc/inc/gmirror.inc:104 src/etc/inc/shaper.inc:838
+#: src/etc/inc/shaper.inc:1234 src/etc/inc/shaper.inc:1447
+#: src/etc/inc/shaper.inc:3312 src/etc/inc/shaper.inc:3859
+#: src/etc/inc/shaper.inc:4181 src/usr/local/www/diag_gmirror.php:255
+#: src/usr/local/www/diag_gmirror.php:336
#: src/usr/local/www/firewall_aliases.php:226
#: src/usr/local/www/firewall_aliases_edit.php:174
-#: src/usr/local/www/firewall_aliases_edit.php:674
+#: src/usr/local/www/firewall_aliases_edit.php:671
#: src/usr/local/www/firewall_aliases_import.php:93
#: src/usr/local/www/firewall_schedule.php:126
#: src/usr/local/www/interfaces_groups.php:113
#: src/usr/local/www/load_balancer_monitor.php:140
-#: src/usr/local/www/load_balancer_monitor_edit.php:118
-#: src/usr/local/www/load_balancer_monitor_edit.php:306
+#: src/usr/local/www/load_balancer_monitor_edit.php:120
+#: src/usr/local/www/load_balancer_monitor_edit.php:304
#: src/usr/local/www/load_balancer_pool.php:154
#: src/usr/local/www/load_balancer_pool_edit.php:107
-#: src/usr/local/www/load_balancer_pool_edit.php:347
-#: src/usr/local/www/load_balancer_virtual_server.php:154
+#: src/usr/local/www/load_balancer_pool_edit.php:339
+#: src/usr/local/www/load_balancer_virtual_server.php:174
#: src/usr/local/www/load_balancer_virtual_server_edit.php:104
#: src/usr/local/www/load_balancer_virtual_server_edit.php:109
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:208
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:210
#: src/usr/local/www/pkg_mgr.php:99 src/usr/local/www/pkg_mgr.php:190
-#: src/usr/local/www/pkg_mgr_installed.php:102
-#: src/usr/local/www/services_captiveportal_filemanager.php:218
+#: src/usr/local/www/pkg_mgr_installed.php:111
+#: src/usr/local/www/services_captiveportal_filemanager.php:223
#: src/usr/local/www/services_igmpproxy.php:121
#: src/usr/local/www/status_gateways.php:93
#: src/usr/local/www/status_lb_pool.php:162
#: src/usr/local/www/status_lb_vs.php:96
-#: src/usr/local/www/status_openvpn.php:252
-#: src/usr/local/www/status_openvpn.php:308
+#: src/usr/local/www/status_openvpn.php:256
+#: src/usr/local/www/status_openvpn.php:312
#: src/usr/local/www/system_camanager.php:392
-#: src/usr/local/www/system_certmanager.php:1006
-#: src/usr/local/www/system_crlmanager.php:614
+#: src/usr/local/www/system_certmanager.php:974
+#: src/usr/local/www/system_crlmanager.php:616
#: src/usr/local/www/system_gateways.php:276
#: src/usr/local/www/system_gateways_edit.php:142
#: src/usr/local/www/system_gateways_edit.php:638
-#: src/usr/local/www/system_groupmanager.php:249
+#: src/usr/local/www/system_groupmanager.php:261
#: src/usr/local/www/system_usermanager.php:379
-#: src/usr/local/www/system_usermanager.php:428
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:89
+#: src/usr/local/www/system_usermanager.php:429
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:90
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:82
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:113
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:117
msgid "Name"
msgstr ""
-#: src/etc/inc/gmirror.inc:105 src/usr/local/www/diag_gmirror.php:252
-#: src/usr/local/www/easyrule.php:112 src/usr/local/www/index.php:315
+#: src/etc/inc/gmirror.inc:105 src/usr/local/www/diag_gmirror.php:256
+#: src/usr/local/www/easyrule.php:112 src/usr/local/www/index.php:321
+#: src/usr/local/www/pkg_mgr_install.php:484
#: src/usr/local/www/status_captiveportal.php:125
-#: src/usr/local/www/status_captiveportal_expire.php:86
-#: src/usr/local/www/status_captiveportal_test.php:86
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:85
-#: src/usr/local/www/status_captiveportal_vouchers.php:85
-#: src/usr/local/www/status_carp.php:140 src/usr/local/www/status_carp.php:206
+#: src/usr/local/www/status_captiveportal_expire.php:87
+#: src/usr/local/www/status_captiveportal_test.php:87
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:86
+#: src/usr/local/www/status_captiveportal_vouchers.php:86
+#: src/usr/local/www/status_carp.php:140 src/usr/local/www/status_carp.php:208
#: src/usr/local/www/status_dhcp_leases.php:69
#: src/usr/local/www/status_dhcpv6_leases.php:70
#: src/usr/local/www/status_filter_reload.php:67
#: src/usr/local/www/status_gateway_groups.php:80
#: src/usr/local/www/status_gateways.php:75
#: src/usr/local/www/status_gateways.php:99
-#: src/usr/local/www/status_graph.php:150
+#: src/usr/local/www/status_graph.php:165
#: src/usr/local/www/status_graph_cpu.php:66
-#: src/usr/local/www/status_interfaces.php:108
-#: src/usr/local/www/status_interfaces.php:124
-#: src/usr/local/www/status_ipsec.php:70 src/usr/local/www/status_ipsec.php:140
+#: src/usr/local/www/status_interfaces.php:111
+#: src/usr/local/www/status_interfaces.php:127
+#: src/usr/local/www/status_ipsec.php:490
+#: src/usr/local/www/status_ipsec.php:517
#: src/usr/local/www/status_ipsec_leases.php:66
#: src/usr/local/www/status_ipsec_leases.php:90
#: src/usr/local/www/status_ipsec_sad.php:69
@@ -1943,25 +1951,25 @@ msgstr ""
#: src/usr/local/www/status_logs_filter_summary.php:101
#: src/usr/local/www/status_logs_settings.php:209
#: src/usr/local/www/status_logs_vpn.php:117
-#: src/usr/local/www/status_ntpd.php:186 src/usr/local/www/status_ntpd.php:198
+#: src/usr/local/www/status_ntpd.php:287 src/usr/local/www/status_ntpd.php:299
#: src/usr/local/www/status_openvpn.php:64
-#: src/usr/local/www/status_openvpn.php:253
-#: src/usr/local/www/status_openvpn.php:309
+#: src/usr/local/www/status_openvpn.php:257
+#: src/usr/local/www/status_openvpn.php:313
#: src/usr/local/www/status_pkglogs.php:104
-#: src/usr/local/www/status_queues.php:145
-#: src/usr/local/www/status_services.php:100
-#: src/usr/local/www/status_services.php:132
+#: src/usr/local/www/status_queues.php:144
+#: src/usr/local/www/status_services.php:90
+#: src/usr/local/www/status_services.php:122
#: src/usr/local/www/status_upnp.php:76
#: src/usr/local/www/status_wireless.php:65
#: src/usr/local/www/status_wireless.php:96
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:93
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:94
#: src/usr/local/www/widgets/widgets/ipsec.widget.php:236
#: src/usr/local/www/widgets/widgets/ipsec.widget.php:252
#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:75
msgid "Status"
msgstr ""
-#: src/etc/inc/gmirror.inc:106 src/usr/local/www/diag_gmirror.php:253
+#: src/etc/inc/gmirror.inc:106 src/usr/local/www/diag_gmirror.php:257
msgid "Component"
msgstr ""
@@ -1990,34 +1998,34 @@ msgstr ""
msgid "dpinger: cannot connect to status socket %1$s - %2$s (%3$s)"
msgstr ""
-#: src/etc/inc/gwlb.inc:927
+#: src/etc/inc/gwlb.inc:939
#, php-format
msgid "MONITOR: %1$s is down, omitting from routing group %2$s"
msgstr ""
-#: src/etc/inc/gwlb.inc:931
+#: src/etc/inc/gwlb.inc:943
#, php-format
msgid "MONITOR: %1$s has packet loss, omitting from routing group %2$s"
msgstr ""
-#: src/etc/inc/gwlb.inc:935
+#: src/etc/inc/gwlb.inc:947
#, php-format
msgid "MONITOR: %1$s has high latency, omitting from routing group %2$s"
msgstr ""
-#: src/etc/inc/gwlb.inc:957
+#: src/etc/inc/gwlb.inc:969
#, php-format
msgid ""
"Gateways status could not be determined, considering all as up/active. "
"(Group: %s)"
msgstr ""
-#: src/etc/inc/gwlb.inc:1000
+#: src/etc/inc/gwlb.inc:1012
#, php-format
msgid "GATEWAYS: Group %1$s did not have any gateways up on tier %2$s!"
msgstr ""
-#: src/etc/inc/gwlb.inc:1022
+#: src/etc/inc/gwlb.inc:1034
#, php-format
msgid "Updating gateway group gateway for %1$s - new gateway is %2$s"
msgstr ""
@@ -2042,288 +2050,288 @@ msgstr ""
msgid "interface_vlan_configure called with if undefined."
msgstr ""
-#: src/etc/inc/interfaces.inc:284 src/etc/inc/interfaces.inc:379
+#: src/etc/inc/interfaces.inc:292 src/etc/inc/interfaces.inc:387
#, php-format
msgid "QinQ compat VLAN: called with wrong options. Problems with config!%s"
msgstr ""
-#: src/etc/inc/interfaces.inc:291
+#: src/etc/inc/interfaces.inc:299
#, php-format
msgid "interface_qinq_configure called with if undefined.%s"
msgstr ""
-#: src/etc/inc/interfaces.inc:296
+#: src/etc/inc/interfaces.inc:304
#, php-format
msgid "interface_qinq_configure called with invalid if.%s"
msgstr ""
-#: src/etc/inc/interfaces.inc:362
+#: src/etc/inc/interfaces.inc:370
msgid "Configuring QinQ interfaces..."
msgstr ""
-#: src/etc/inc/interfaces.inc:387
+#: src/etc/inc/interfaces.inc:395
#, php-format
msgid "interface_qinq2_configure called with if undefined.%s"
msgstr ""
-#: src/etc/inc/interfaces.inc:408
+#: src/etc/inc/interfaces.inc:416
msgid "Creating wireless clone interfaces..."
msgstr ""
-#: src/etc/inc/interfaces.inc:486
+#: src/etc/inc/interfaces.inc:494
#, php-format
msgid "No members found on %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:550
+#: src/etc/inc/interfaces.inc:558
msgid "realif not defined in interfaces bridge - up"
msgstr ""
-#: src/etc/inc/interfaces.inc:569
+#: src/etc/inc/interfaces.inc:577
msgid "bridgeif not defined -- could not bring interface up"
msgstr ""
-#: src/etc/inc/interfaces.inc:724
+#: src/etc/inc/interfaces.inc:732
msgid "Configuring LAGG interfaces..."
msgstr ""
-#: src/etc/inc/interfaces.inc:886
+#: src/etc/inc/interfaces.inc:894
msgid "Could not bring greif up -- variable not defined."
msgstr ""
-#: src/etc/inc/interfaces.inc:969
+#: src/etc/inc/interfaces.inc:977
msgid ""
"could not bring realif up -- variable not defined -- "
"interface_gif_configure()"
msgstr ""
-#: src/etc/inc/interfaces.inc:1016
+#: src/etc/inc/interfaces.inc:1024
msgid "could not bring gifif up -- variable not defined"
msgstr ""
-#: src/etc/inc/interfaces.inc:1098 src/etc/inc/interfaces.inc:1128
-#: src/etc/inc/interfaces.inc:1152 src/etc/inc/interfaces.inc:1170
+#: src/etc/inc/interfaces.inc:1106 src/etc/inc/interfaces.inc:1136
+#: src/etc/inc/interfaces.inc:1160 src/etc/inc/interfaces.inc:1178
#, php-format
msgid "Configuring %s interface..."
msgstr ""
-#: src/etc/inc/interfaces.inc:1102 src/etc/inc/interfaces.inc:1131
-#: src/etc/inc/interfaces.inc:1155 src/etc/inc/interfaces.inc:1173
+#: src/etc/inc/interfaces.inc:1110 src/etc/inc/interfaces.inc:1139
+#: src/etc/inc/interfaces.inc:1163 src/etc/inc/interfaces.inc:1181
#, php-format
msgid "Configuring %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:1255
+#: src/etc/inc/interfaces.inc:1264
#, php-format
msgid "Calling interface down for interface %1$s, destroy is %2$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:1269
+#: src/etc/inc/interfaces.inc:1278
msgid "Wrong parameters used during interface_bring_down"
msgstr ""
-#: src/etc/inc/interfaces.inc:1444
+#: src/etc/inc/interfaces.inc:1453
msgid "Enter CARP maintenance mode"
msgstr ""
-#: src/etc/inc/interfaces.inc:1630
+#: src/etc/inc/interfaces.inc:1639
#, php-format
msgid "Can't find PPP config for %s in interface_ppps_configure()."
msgstr ""
-#: src/etc/inc/interfaces.inc:1688
+#: src/etc/inc/interfaces.inc:1697
#, php-format
msgid ""
"Could not get a Local IP address for PPTP/L2TP link on %s in "
"interfaces_ppps_configure. Using 0.0.0.0 ip!"
msgstr ""
-#: src/etc/inc/interfaces.inc:1692
+#: src/etc/inc/interfaces.inc:1701
#, php-format
msgid ""
"Could not get a PPTP/L2TP Remote IP address from %1$s for %2$s in "
"interfaces_ppps_configure."
msgstr ""
-#: src/etc/inc/interfaces.inc:1699
+#: src/etc/inc/interfaces.inc:1708
#, php-format
msgid ""
"Device %s does not exist. PPP link cannot start without the modem device."
msgstr ""
-#: src/etc/inc/interfaces.inc:1704
+#: src/etc/inc/interfaces.inc:1713
#, php-format
msgid "Unknown %s configured as ppp interface."
msgstr ""
-#: src/etc/inc/interfaces.inc:2022
+#: src/etc/inc/interfaces.inc:2031
#, php-format
msgid "Error: cannot open mpd_%1$s.conf in interface_ppps_configure().%2$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:2120
+#: src/etc/inc/interfaces.inc:2129
#, php-format
msgid "Starting 3gstats.php on device '%1$s' for interface '%2$s'"
msgstr ""
-#: src/etc/inc/interfaces.inc:2137
+#: src/etc/inc/interfaces.inc:2146
msgid "Configuring CARP settings..."
msgstr ""
-#: src/etc/inc/interfaces.inc:2178
+#: src/etc/inc/interfaces.inc:2187
msgid "waiting for pfsync..."
msgstr ""
-#: src/etc/inc/interfaces.inc:2184
+#: src/etc/inc/interfaces.inc:2193
#, php-format
msgid "pfsync done in %s seconds."
msgstr ""
-#: src/etc/inc/interfaces.inc:2185
+#: src/etc/inc/interfaces.inc:2194
msgid "Configuring CARP settings finalize..."
msgstr ""
-#: src/etc/inc/interfaces.inc:2408
+#: src/etc/inc/interfaces.inc:2417
#, php-format
msgid ""
"Interface specified for the virtual IP address %s does not exist. Skipping "
"this VIP."
msgstr ""
-#: src/etc/inc/interfaces.inc:2468
+#: src/etc/inc/interfaces.inc:2477
#, php-format
msgid "Interface %s changed to hostap mode"
msgstr ""
-#: src/etc/inc/interfaces.inc:2472
+#: src/etc/inc/interfaces.inc:2481
#, php-format
msgid "Interface %s changed to adhoc mode"
msgstr ""
-#: src/etc/inc/interfaces.inc:2476
+#: src/etc/inc/interfaces.inc:2485
#, php-format
msgid "Interface %s changed to infrastructure mode"
msgstr ""
-#: src/etc/inc/interfaces.inc:2489
+#: src/etc/inc/interfaces.inc:2498
#, php-format
msgid "Cloning new wireless interface %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:2494
+#: src/etc/inc/interfaces.inc:2503
#, php-format
msgid "Failed to clone interface %1$s with error code %2$s, output %3$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3079
+#: src/etc/inc/interfaces.inc:3088
#, php-format
msgid "OpenVPN: Resync server %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3092
+#: src/etc/inc/interfaces.inc:3101
#, php-format
msgid "OpenVPN: Resync client %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3227
+#: src/etc/inc/interfaces.inc:3236
#, php-format
msgid "Deny router advertisements for interface %s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3252
+#: src/etc/inc/interfaces.inc:3261
msgid "Generating new MAC address."
msgstr ""
-#: src/etc/inc/interfaces.inc:3258
+#: src/etc/inc/interfaces.inc:3267
#, php-format
msgid ""
"The INVALID MAC address (ff:ff:ff:ff:ff:ff) on interface %1$s has been "
"automatically replaced with %2$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3324
+#: src/etc/inc/interfaces.inc:3333
#, php-format
msgid "There is a conflict on MTU between parent %1$s and VLAN(%2$s)"
msgstr ""
-#: src/etc/inc/interfaces.inc:3514 src/etc/inc/interfaces.inc:3579
-#: src/etc/inc/interfaces.inc:3643
+#: src/etc/inc/interfaces.inc:3524 src/etc/inc/interfaces.inc:3593
+#: src/etc/inc/interfaces.inc:3657
#, php-format
-msgid "Interface %1$s tracking non-existant interface %2$s"
+msgid "Interface %1$s tracking non-existent interface %2$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3521 src/etc/inc/interfaces.inc:3527
+#: src/etc/inc/interfaces.inc:3531 src/etc/inc/interfaces.inc:3537
#, php-format
msgid "Interface %1$s configured via %2$s type %3$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3585
+#: src/etc/inc/interfaces.inc:3599
#, php-format
msgid ""
"The interface IPv4 '%1$s' address on interface '%2$s' is not valid, not "
"configuring 6RD tunnel"
msgstr ""
-#: src/etc/inc/interfaces.inc:3621
+#: src/etc/inc/interfaces.inc:3635
#, php-format
msgid "rd6 %1$s with ipv6 address %2$s based on %3$s ipv4 %4$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:3649 src/etc/inc/interfaces.inc:3704
-#: src/etc/inc/interfaces.inc:3790
+#: src/etc/inc/interfaces.inc:3663 src/etc/inc/interfaces.inc:3718
+#: src/etc/inc/interfaces.inc:3804
#, php-format
msgid ""
"The interface IPv4 '%1$s' address on interface '%2$s' is not public, not "
"configuring 6RD tunnel"
msgstr ""
-#: src/etc/inc/interfaces.inc:3681
+#: src/etc/inc/interfaces.inc:3695
#, php-format
msgid "sixto4 %1$s with ipv6 address %2$s based on %3$s ipv4 %4$s"
msgstr ""
-#: src/etc/inc/interfaces.inc:4176
+#: src/etc/inc/interfaces.inc:4190
#, php-format
msgid "Error: cannot open %s in DHCP6_Config_File_Override() for reading."
msgstr ""
-#: src/etc/inc/interfaces.inc:4204
+#: src/etc/inc/interfaces.inc:4218
#, php-format
msgid ""
"Error: cannot open dhclient_%s.conf in interface_dhcp_configure() for "
"writing."
msgstr ""
-#: src/etc/inc/interfaces.inc:4217
+#: src/etc/inc/interfaces.inc:4231
#, php-format
msgid "Invalid interface \"%s\" in interface_dhcp_configure()"
msgstr ""
-#: src/etc/inc/interfaces.inc:4273
+#: src/etc/inc/interfaces.inc:4287
#, php-format
msgid "Could not bring up %s interface in interface_dhcp_configure()"
msgstr ""
-#: src/etc/inc/interfaces.inc:4359
+#: src/etc/inc/interfaces.inc:4373
#, php-format
msgid "Error: cannot open %s in DHCP_Config_File_Override() for reading.\n"
msgstr ""
-#: src/etc/inc/interfaces.inc:5320 src/etc/inc/service-utils.inc:390
+#: src/etc/inc/interfaces.inc:5334 src/etc/inc/service-utils.inc:390
#: src/usr/local/www/diag_backup.php:567
#: src/usr/local/www/diag_packet_capture.php:143
-#: src/usr/local/www/firewall_nat_1to1_edit.php:441
-#: src/usr/local/www/firewall_nat_edit.php:706
+#: src/usr/local/www/firewall_nat_1to1_edit.php:438
+#: src/usr/local/www/firewall_nat_edit.php:704
#: src/usr/local/www/firewall_nat_npt_edit.php:206
-#: src/usr/local/www/firewall_rules.php:192
-#: src/usr/local/www/firewall_rules_edit.php:1054
+#: src/usr/local/www/firewall_rules.php:195
+#: src/usr/local/www/firewall_rules_edit.php:1070
#: src/usr/local/www/head.inc:316 src/usr/local/www/head.inc:334
#: src/usr/local/www/status_graph.php:94 src/usr/local/www/status_logs.php:86
#: src/usr/local/www/status_logs_common.inc:129
#: src/usr/local/www/status_logs_settings.php:241
#: src/usr/local/www/status_openvpn.php:64
#: src/usr/local/www/vpn_openvpn_client.php:426
-#: src/usr/local/www/vpn_openvpn_csc.php:308
+#: src/usr/local/www/vpn_openvpn_csc.php:312
#: src/usr/local/www/vpn_openvpn_server.php:592
#: src/usr/local/www/widgets/include/openvpn.inc:2
msgid "OpenVPN"
@@ -2358,12 +2366,12 @@ msgid "Kernel Interface"
msgstr ""
#: src/etc/inc/ipsec.inc:65 src/etc/inc/ipsec.inc:95
-#: src/usr/local/www/system_advanced_admin.php:330
+#: src/usr/local/www/system_advanced_admin.php:332
#: src/usr/local/www/system_advanced_firewall.php:417
-#: src/usr/local/www/system_advanced_misc.php:318
+#: src/usr/local/www/system_advanced_misc.php:335
#: src/usr/local/www/system_advanced_network.php:173
#: src/usr/local/www/system_advanced_network.php:186
-#: src/usr/local/www/system_advanced_notifications.php:230
+#: src/usr/local/www/system_advanced_notifications.php:229
#: src/usr/local/www/system_advanced_sysctl.php:188
msgid "Networking"
msgstr ""
@@ -2429,17 +2437,17 @@ msgid "My IP address"
msgstr ""
#: src/etc/inc/ipsec.inc:109 src/etc/inc/ipsec.inc:121
-#: src/usr/local/www/diag_arp.php:345 src/usr/local/www/services_dhcp.php:1317
+#: src/usr/local/www/diag_arp.php:346 src/usr/local/www/services_dhcp.php:1331
#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:100
#: src/usr/local/www/services_dnsmasq_edit.php:110
#: src/usr/local/www/services_unbound_domainoverride_edit.php:96
#: src/usr/local/www/services_unbound_host_edit.php:111
#: src/usr/local/www/status_captiveportal.php:183
#: src/usr/local/www/status_dhcp_leases.php:379
-#: src/usr/local/www/system_advanced_network.php:214
-#: src/usr/local/www/system_certmanager.php:814
+#: src/usr/local/www/system_advanced_network.php:213
+#: src/usr/local/www/system_certmanager.php:773
#: src/usr/local/www/vpn_l2tp_users.php:130
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:129
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:130
msgid "IP address"
msgstr ""
@@ -2461,8 +2469,8 @@ msgstr ""
#: src/etc/inc/ipsec.inc:114 src/usr/local/www/head.inc:296
#: src/usr/local/www/services_dhcp.php:1010
-#: src/usr/local/www/services_dhcp_edit.php:599
-#: src/usr/local/www/services_dhcpv6.php:766
+#: src/usr/local/www/services_dhcp_edit.php:603
+#: src/usr/local/www/services_dhcpv6.php:768
#: src/usr/local/www/services_dyndns.php:100
#: src/usr/local/www/services_dyndns_edit.php:273
#: src/usr/local/www/services_rfc2136.php:92
@@ -2470,16 +2478,16 @@ msgstr ""
msgid "Dynamic DNS"
msgstr ""
-#: src/etc/inc/ipsec.inc:119 src/usr/local/www/diag_traceroute.php:84
+#: src/etc/inc/ipsec.inc:119 src/usr/local/www/diag_traceroute.php:169
#: src/usr/local/www/firewall_nat_1to1_edit.php:287
#: src/usr/local/www/firewall_nat_1to1_edit.php:329
-#: src/usr/local/www/firewall_nat_edit.php:541
-#: src/usr/local/www/firewall_nat_edit.php:587
+#: src/usr/local/www/firewall_nat_edit.php:551
+#: src/usr/local/www/firewall_nat_edit.php:591
#: src/usr/local/www/firewall_nat_edit.php:762
#: src/usr/local/www/firewall_nat_out_edit.php:513
#: src/usr/local/www/firewall_nat_out_edit.php:537
-#: src/usr/local/www/firewall_rules_edit.php:1451
-#: src/usr/local/www/interfaces.php:2943
+#: src/usr/local/www/firewall_rules_edit.php:1467
+#: src/usr/local/www/interfaces.php:2950
msgid "Any"
msgstr ""
@@ -2527,8 +2535,8 @@ msgstr ""
msgid "Tunnel IPv6"
msgstr ""
-#: src/etc/inc/ipsec.inc:215 src/usr/local/www/system_authservers.php:201
-#: src/usr/local/www/system_authservers.php:498
+#: src/etc/inc/ipsec.inc:215 src/usr/local/www/system_authservers.php:267
+#: src/usr/local/www/system_authservers.php:564
msgid "Transport"
msgstr ""
@@ -2596,14 +2604,14 @@ msgstr ""
msgid "Mobile Client"
msgstr ""
-#: src/etc/inc/ipsec.inc:440 src/etc/inc/pfsense-utils.inc:2930
-#: src/etc/inc/shaper.inc:3936 src/etc/inc/shaper.inc:4240
+#: src/etc/inc/ipsec.inc:440 src/etc/inc/pfsense-utils.inc:2943
+#: src/etc/inc/shaper.inc:3904 src/etc/inc/shaper.inc:4208
#: src/usr/local/www/diag_pftop.php:150
#: src/usr/local/www/firewall_nat_edit.php:926
-#: src/usr/local/www/firewall_rules_edit.php:1562
-#: src/usr/local/www/interfaces.php:1640 src/usr/local/www/interfaces.php:1641
-#: src/usr/local/www/interfaces.php:1665 src/usr/local/www/interfaces.php:1678
-#: src/usr/local/www/system_advanced_misc.php:454
+#: src/usr/local/www/firewall_rules_edit.php:1578
+#: src/usr/local/www/interfaces.php:1649 src/usr/local/www/interfaces.php:1650
+#: src/usr/local/www/interfaces.php:1674 src/usr/local/www/interfaces.php:1687
+#: src/usr/local/www/system_advanced_misc.php:471
#: src/usr/local/www/vpn_ipsec_phase2.php:579
msgid "None"
msgstr ""
@@ -2643,39 +2651,45 @@ msgstr ""
msgid "warning: tag %1$s has invalid data in '%2$s'%3$s"
msgstr ""
-#: src/etc/inc/notices.inc:104
+#: src/etc/inc/notices.inc:105
#, php-format
msgid "Could not open %s for writing"
msgstr ""
-#: src/etc/inc/notices.inc:109
+#: src/etc/inc/notices.inc:110
#, php-format
msgid "New alert found: %s"
msgstr ""
-#: src/etc/inc/notices.inc:393
+#: src/etc/inc/notices.inc:396
#, php-format
msgid "Message sent to %s OK"
msgstr ""
-#: src/etc/inc/notices.inc:396 src/etc/inc/notices.inc:397
+#: src/etc/inc/notices.inc:399 src/etc/inc/notices.inc:400
#, php-format
msgid "Could not send the message to %1$s -- Error: %2$s"
msgstr ""
-#: src/etc/inc/openvpn.inc:77 src/usr/local/www/firewall_rules.php:777
-#: src/usr/local/www/firewall_rules_edit.php:1601
-#: src/usr/local/www/firewall_rules_edit.php:1642
-#: src/usr/local/www/firewall_rules_edit.php:1649
-#: src/usr/local/www/status_ipsec.php:379
+#: src/etc/inc/notices.inc:440 src/etc/inc/notices.inc:473
+msgid ""
+"Growl IP Address is invalid. Check the setting in System Advanced "
+"Notifications."
+msgstr ""
+
+#: src/etc/inc/openvpn.inc:77 src/usr/local/www/firewall_rules.php:780
+#: src/usr/local/www/firewall_rules_edit.php:1617
+#: src/usr/local/www/firewall_rules_edit.php:1658
+#: src/usr/local/www/firewall_rules_edit.php:1665
+#: src/usr/local/www/status_ipsec.php:363
#: src/usr/local/www/vpn_ipsec_mobile.php:495
#: src/usr/local/www/vpn_openvpn_client.php:528
msgid "none"
msgstr ""
#: src/etc/inc/openvpn.inc:78 src/usr/local/www/diag_pftop.php:128
-#: src/usr/local/www/firewall_rules_edit.php:1604
-#: src/usr/local/www/services_captiveportal.php:1000
+#: src/usr/local/www/firewall_rules_edit.php:1620
+#: src/usr/local/www/services_captiveportal.php:1009
msgid "default"
msgstr ""
@@ -2772,12 +2786,12 @@ msgstr ""
msgid "CA: %s"
msgstr ""
-#: src/etc/inc/openvpn.inc:244 src/usr/local/www/system_certmanager.php:1009
-#: src/usr/local/www/system_crlmanager.php:617
+#: src/etc/inc/openvpn.inc:244 src/usr/local/www/system_certmanager.php:977
+#: src/usr/local/www/system_crlmanager.php:619
msgid "In Use"
msgstr ""
-#: src/etc/inc/openvpn.inc:247 src/usr/local/www/system_certmanager.php:1072
+#: src/etc/inc/openvpn.inc:247 src/usr/local/www/system_certmanager.php:1040
msgid "Revoked"
msgstr ""
@@ -2843,11 +2857,11 @@ msgstr ""
msgid "openvpn_resync_gwgroup called with null gwgroup parameter."
msgstr ""
-#: src/etc/inc/openvpn.inc:1490 src/etc/inc/openvpn.inc:1618
+#: src/etc/inc/openvpn.inc:1490 src/etc/inc/openvpn.inc:1617
msgid "Unable to contact daemon"
msgstr ""
-#: src/etc/inc/openvpn.inc:1491 src/etc/inc/openvpn.inc:1619
+#: src/etc/inc/openvpn.inc:1491 src/etc/inc/openvpn.inc:1618
msgid "Service not running?"
msgstr ""
@@ -2943,59 +2957,64 @@ msgstr ""
msgid "Download file failed with status code %1$s. URL: %2$s"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:1934
+#: src/etc/inc/pfsense-utils.inc:1933
+#, php-format
+msgid "Could not process empty file from alias: %s"
+msgstr ""
+
+#: src/etc/inc/pfsense-utils.inc:1938
#, php-format
msgid "Could not process aliases from alias: %s"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:1991
+#: src/etc/inc/pfsense-utils.inc:1995
#, php-format
msgid "Failed to download alias %s"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2020
+#: src/etc/inc/pfsense-utils.inc:2024
msgid ""
"Alias archive is a .tar/tgz file which cannot be decompressed because "
"utility is missing!"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2030
+#: src/etc/inc/pfsense-utils.inc:2034
#, php-format
msgid "Could not open %s/aliases for writing!"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2036
+#: src/etc/inc/pfsense-utils.inc:2040
#, php-format
msgid "The following file could not be read %1$s from %2$s"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2750
+#: src/etc/inc/pfsense-utils.inc:2763
msgid "English"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2751
+#: src/etc/inc/pfsense-utils.inc:2764
msgid "Portuguese (Brazil)"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2752
+#: src/etc/inc/pfsense-utils.inc:2765
msgid "Turkish"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2938 src/etc/inc/pfsense-utils.inc:2953
-#: src/etc/inc/pfsense-utils.inc:2978
+#: src/etc/inc/pfsense-utils.inc:2951 src/etc/inc/pfsense-utils.inc:2966
+#: src/etc/inc/pfsense-utils.inc:2991
msgid "No Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2948 src/etc/inc/pfsense-utils.inc:2990
+#: src/etc/inc/pfsense-utils.inc:2961 src/etc/inc/pfsense-utils.inc:3003
#: src/usr/local/www/firewall_nat_out.php:262
#: src/usr/local/www/firewall_nat_out.php:266
-#: src/usr/local/www/interfaces.php:864 src/usr/local/www/interfaces.php:2926
+#: src/usr/local/www/interfaces.php:873 src/usr/local/www/interfaces.php:2933
#: src/usr/local/www/interfaces_wireless.php:134
#: src/usr/local/www/interfaces_wireless_edit.php:115
#: src/usr/local/www/interfaces_wireless_edit.php:221
#: src/usr/local/www/load_balancer_pool.php:155
#: src/usr/local/www/load_balancer_pool_edit.php:107
-#: src/usr/local/www/load_balancer_pool_edit.php:354
+#: src/usr/local/www/load_balancer_pool_edit.php:346
#: src/usr/local/www/load_balancer_virtual_server_edit.php:104
#: src/usr/local/www/load_balancer_virtual_server_edit.php:109
#: src/usr/local/www/status_lb_pool.php:163 src/usr/local/www/vpn_ipsec.php:284
@@ -3004,306 +3023,323 @@ msgstr ""
msgid "Mode"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2954
+#: src/etc/inc/pfsense-utils.inc:2967
msgid "Restricted Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2955
+#: src/etc/inc/pfsense-utils.inc:2968
msgid "Valid Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2956
+#: src/etc/inc/pfsense-utils.inc:2969
msgid "Restricted Regional Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2957
+#: src/etc/inc/pfsense-utils.inc:2970
msgid "Powersaving Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2963
+#: src/etc/inc/pfsense-utils.inc:2976
msgid "Invalid SIM/locked State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2964
+#: src/etc/inc/pfsense-utils.inc:2977
msgid "Valid SIM State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2965
+#: src/etc/inc/pfsense-utils.inc:2978
msgid "Invalid SIM CS State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2966
+#: src/etc/inc/pfsense-utils.inc:2979
msgid "Invalid SIM PS State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2967
+#: src/etc/inc/pfsense-utils.inc:2980
msgid "Invalid SIM CS/PS State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2968
+#: src/etc/inc/pfsense-utils.inc:2981
msgid "Missing SIM State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2979
+#: src/etc/inc/pfsense-utils.inc:2992
msgid "Limited Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2995
+#: src/etc/inc/pfsense-utils.inc:3008
msgid "Initializing Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2996
+#: src/etc/inc/pfsense-utils.inc:3009
msgid "Network Lock error Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2997
+#: src/etc/inc/pfsense-utils.inc:3010
msgid "Network Locked Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:2998
+#: src/etc/inc/pfsense-utils.inc:3011
msgid "Unlocked or correct MCC/MNC Service"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:3004
+#: src/etc/inc/pfsense-utils.inc:3017
msgid "No action State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:3005
+#: src/etc/inc/pfsense-utils.inc:3018
msgid "Network lock State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:3006
+#: src/etc/inc/pfsense-utils.inc:3019
msgid "(U)SIM card lock State"
msgstr ""
-#: src/etc/inc/pfsense-utils.inc:3007
+#: src/etc/inc/pfsense-utils.inc:3020
msgid "Network Lock and (U)SIM card Lock State"
msgstr ""
+#: src/etc/inc/pfsense-utils.inc:3111
+#, php-format
+msgid ""
+"Alias table restore failed exited with %1$s, the error is: %2$s %3$s%4$s"
+msgstr ""
+
+#: src/etc/inc/pfsense-utils.inc:3113
+#, php-format
+msgid ""
+"Alias table restore succeeded exited with %1$s, the result is: %2$s %3$s%4$s"
+msgstr ""
+
#: src/etc/inc/pkg-utils.inc:79
msgid "Warning, could not open log for writing."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:212
+#: src/etc/inc/pkg-utils.inc:213
#, php-format
msgid ""
"ERROR!!! An error occurred on pkg execution (rc = %d) with parameters '%s':"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:393 src/etc/inc/pkg-utils.inc:396
+#: src/etc/inc/pkg-utils.inc:412 src/etc/inc/pkg-utils.inc:415
msgid "ERROR: Error trying to get packages list. Aborting..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:428 src/etc/inc/pkg-utils.inc:431
+#: src/etc/inc/pkg-utils.inc:447 src/etc/inc/pkg-utils.inc:450
msgid "ERROR: Error trying to get package version. Aborting..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:480
+#: src/etc/inc/pkg-utils.inc:499
#, php-format
msgid "Running last steps of %s installation."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:493
+#: src/etc/inc/pkg-utils.inc:512
msgid "Resyncing configuration for all packages."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:516
+#: src/etc/inc/pkg-utils.inc:535
msgid "Syncing packages..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:539
+#: src/etc/inc/pkg-utils.inc:558
msgid "Removing package..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:572
+#: src/etc/inc/pkg-utils.inc:591
#, php-format
msgid ""
"The %s package is missing its configuration file and must be reinstalled."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:588
+#: src/etc/inc/pkg-utils.inc:607
#, php-format
msgid "Reinstalling package %1$s because its include file(%2$s) is missing!"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:591
+#: src/etc/inc/pkg-utils.inc:610
#, php-format
msgid "Reinstalling package %s failed. Take appropriate measures!!!"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:685
+#: src/etc/inc/pkg-utils.inc:704
msgid "Beginning package installation."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:686
+#: src/etc/inc/pkg-utils.inc:705
#, php-format
msgid "Beginning package installation for %s ."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:690
+#: src/etc/inc/pkg-utils.inc:709
msgid "Saving updated package information..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:693
+#: src/etc/inc/pkg-utils.inc:712
#, php-format
msgid "Installed %s package."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:697
+#: src/etc/inc/pkg-utils.inc:716
#, php-format
msgid "Overwrote previous installation of %s."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:698
+#: src/etc/inc/pkg-utils.inc:717
msgid "overwrite!"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:701
+#: src/etc/inc/pkg-utils.inc:720
#, php-format
msgid "Intermediate config write during package install for %s."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:706
+#: src/etc/inc/pkg-utils.inc:725
#, php-format
msgid "The %s package is not installed.%sInstallation aborted."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:710 src/etc/inc/pkg-utils.inc:742
-#: src/etc/inc/pkg-utils.inc:808
+#: src/etc/inc/pkg-utils.inc:729 src/etc/inc/pkg-utils.inc:761
+#: src/etc/inc/pkg-utils.inc:827
#, php-format
msgid "Failed to install package: %s."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:711 src/etc/inc/pkg-utils.inc:743
-#: src/etc/inc/pkg-utils.inc:809
+#: src/etc/inc/pkg-utils.inc:730 src/etc/inc/pkg-utils.inc:762
+#: src/etc/inc/pkg-utils.inc:828
msgid "Failed to install package."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:716
+#: src/etc/inc/pkg-utils.inc:735
msgid "Loading package configuration... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:719
+#: src/etc/inc/pkg-utils.inc:738
msgid "Configuring package components..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:731 src/etc/inc/pkg-utils.inc:905
+#: src/etc/inc/pkg-utils.inc:750 src/etc/inc/pkg-utils.inc:924
msgid "Loading package instructions..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:738
+#: src/etc/inc/pkg-utils.inc:757
#, php-format
msgid "Include %s is missing!"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:749
+#: src/etc/inc/pkg-utils.inc:768
msgid "Custom commands..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:752
+#: src/etc/inc/pkg-utils.inc:771
msgid "Executing custom_php_global_functions()..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:757
+#: src/etc/inc/pkg-utils.inc:776
msgid "Executing custom_php_install_command()..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:762
+#: src/etc/inc/pkg-utils.inc:781
msgid "Executing custom_php_resync_config_command()..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:769 src/etc/inc/pkg-utils.inc:853
+#: src/etc/inc/pkg-utils.inc:788 src/etc/inc/pkg-utils.inc:872
msgid "Menu items... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:786 src/etc/inc/pkg-utils.inc:868
+#: src/etc/inc/pkg-utils.inc:805 src/etc/inc/pkg-utils.inc:887
msgid "Services... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:803
+#: src/etc/inc/pkg-utils.inc:822
msgid "Loading package configuration... failed!"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:803
+#: src/etc/inc/pkg-utils.inc:822
msgid "Installation aborted."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:804
+#: src/etc/inc/pkg-utils.inc:823
msgid "Unable to load package configuration. Installation aborted."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:818
+#: src/etc/inc/pkg-utils.inc:837
msgid "Writing configuration... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:820
+#: src/etc/inc/pkg-utils.inc:839
#, php-format
msgid "Successfully installed package: %s."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:836
+#: src/etc/inc/pkg-utils.inc:855
#, php-format
msgid "The %s package is not installed.%sDeletion aborted."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:842
+#: src/etc/inc/pkg-utils.inc:861
#, php-format
msgid "Removing %s package... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:843
+#: src/etc/inc/pkg-utils.inc:862
#, php-format
msgid "Removing %s components..."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:896
+#: src/etc/inc/pkg-utils.inc:915
#, php-format
msgid "Intermediate config write during package removal for %s."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:912
+#: src/etc/inc/pkg-utils.inc:931
#, php-format
msgid "Include file %s could not be found for inclusion."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:930
+#: src/etc/inc/pkg-utils.inc:949
msgid "Deinstall commands... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:935
+#: src/etc/inc/pkg-utils.inc:954
msgid "Not executing custom deinstall hook because an include is missing."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:942
+#: src/etc/inc/pkg-utils.inc:961
msgid "Syslog entries... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:950
+#: src/etc/inc/pkg-utils.inc:969
msgid "Configuration... "
msgstr ""
-#: src/etc/inc/pkg-utils.inc:953
+#: src/etc/inc/pkg-utils.inc:972
#, php-format
msgid "Removed %s package."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:981
+#: src/etc/inc/pkg-utils.inc:1000
msgid ""
-"Waiting for internet connection to update pkg metadata and finish package "
+"Waiting for Internet connection to update pkg metadata and finish package "
"reinstallation"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:1010
+#: src/etc/inc/pkg-utils.inc:1013 src/etc/inc/pkg-utils.inc:1049
msgid "Package reinstall"
msgstr ""
-#: src/etc/inc/pkg-utils.inc:1011
+#: src/etc/inc/pkg-utils.inc:1014
+msgid ""
+"Package reinstall process was ABORTED due to lack of internet connectivity"
+msgstr ""
+
+#: src/etc/inc/pkg-utils.inc:1050
#, php-format
msgid ""
"Package %s does not exist in current %s version and it has been removed."
msgstr ""
-#: src/etc/inc/pkg-utils.inc:1037
+#: src/etc/inc/pkg-utils.inc:1071
msgid "Stopping all packages."
msgstr ""
@@ -3491,43 +3527,43 @@ msgid "Allow access to all pages"
msgstr ""
#: src/etc/inc/priv.defs.inc:23
-msgid "WebCfg - Status: CARP"
+msgid "WebCfg - Crash reporter"
msgstr ""
#: src/etc/inc/priv.defs.inc:24
-msgid "Allow access to the 'Status: CARP' page."
+msgid "Uploads crash reports to pfSense and or deletes crash reports."
msgstr ""
#: src/etc/inc/priv.defs.inc:29
-msgid "WebCfg - Crash reporter"
+msgid "WebCfg - Diagnostics: ARP Table"
msgstr ""
#: src/etc/inc/priv.defs.inc:30
-msgid "Uploads crash reports to pfSense and or deletes crash reports."
+msgid "Allow access to the 'Diagnostics: ARP Table' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:35
-msgid "WebCfg - Diagnostics: ARP Table"
+msgid "WebCfg - Diagnostics: Authentication"
msgstr ""
#: src/etc/inc/priv.defs.inc:36
-msgid "Allow access to the 'Diagnostics: ARP Table' page."
+msgid "Allow access to the 'Diagnostics: Authentication' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:41
-msgid "WebCfg - Diagnostics: Authentication"
+msgid "WebCfg - Diagnostics: Backup & Restore"
msgstr ""
#: src/etc/inc/priv.defs.inc:42
-msgid "Allow access to the 'Diagnostics: Authentication' page."
+msgid "Allow access to the 'Diagnostics: Backup & Restore' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:47
-msgid "WebCfg - Diagnostics: Backup & Restore"
+msgid "WebCfg - Diagnostics: Command"
msgstr ""
#: src/etc/inc/priv.defs.inc:48
-msgid "Allow access to the 'Diagnostics: Backup & Restore' page."
+msgid "Allow access to the 'Diagnostics: Command' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:53
@@ -3571,1607 +3607,1599 @@ msgid "Allow access to the 'Diagnostics: Show Source Tracking' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:83
-msgid "WebCfg - Diagnostics: GEOM Mirrors"
+msgid "WebCfg - Diagnostics: Edit File"
msgstr ""
#: src/etc/inc/priv.defs.inc:84
-msgid "Allow access to the 'Diagnostics: GEOM Mirrors' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:89
-msgid "WebCfg - Status: IPsec"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:90
-msgid "Allow access to the 'Status: IPsec' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:95
-msgid "WebCfg - Status: IPsec: Leases"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:96
-msgid "Allow access to the 'Status: IPsec: Leases' page."
+msgid "Allow access to the 'Diagnostics: Edit File' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:101
-msgid "WebCfg - Status: IPsec: SADs"
+#: src/etc/inc/priv.defs.inc:91
+msgid "WebCfg - Diagnostics: GEOM Mirrors"
msgstr ""
-#: src/etc/inc/priv.defs.inc:102
-msgid "Allow access to the 'Status: IPsec: SADs' page."
+#: src/etc/inc/priv.defs.inc:92
+msgid "Allow access to the 'Diagnostics: GEOM Mirrors' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:107
-msgid "WebCfg - Status: IPsec: SPDs"
+#: src/etc/inc/priv.defs.inc:97
+msgid "WebCfg - Diagnostics: Halt system"
msgstr ""
-#: src/etc/inc/priv.defs.inc:108
-msgid "Allow access to the 'Status: IPsec: SPDs' page."
+#: src/etc/inc/priv.defs.inc:98
+msgid "Allow access to the 'Diagnostics: Halt system' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:113
+#: src/etc/inc/priv.defs.inc:103
msgid "WebCfg - Diagnostics: Limiter Info"
msgstr ""
-#: src/etc/inc/priv.defs.inc:114
+#: src/etc/inc/priv.defs.inc:104
msgid "Allows access to the 'Diagnostics: Limiter Info' page"
msgstr ""
-#: src/etc/inc/priv.defs.inc:119
-msgid "WebCfg - Status: Logs: System"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:120
-msgid "Allow access to the 'Status: System Logs: General' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:125
-msgid "WebCfg - Status: Logs: Firewall"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:126
-msgid "Allow access to the 'Status: Logs: Firewall' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:131
-msgid "WebCfg - Status: System Logs: Firewall (Dynamic View)"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:132
-msgid "Allow access to the 'Status: System Logs: Firewall (Dynamic View)' page"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:137
-msgid "WebCfg - Status: System Logs: Firewall Log Summary"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:138
-msgid "Allow access to the 'Status: System Logs: Firewall Log Summary' page"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:143
-msgid "WebCfg - Status: Logs: Settings"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:144
-msgid "Allow access to the 'Status: Logs: Settings' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:149
-msgid "WebCfg - Status: Logs: VPN"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:150
-msgid "Allow access to the 'Status: Logs: VPN' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:155
+#: src/etc/inc/priv.defs.inc:109
msgid "WebCfg - Diagnostics: NanoBSD"
msgstr ""
-#: src/etc/inc/priv.defs.inc:156
+#: src/etc/inc/priv.defs.inc:110
msgid "Allow access to the 'Diagnostics: NanoBSD' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:161
+#: src/etc/inc/priv.defs.inc:115
msgid "WebCfg - Diagnostics: NDP Table"
msgstr ""
-#: src/etc/inc/priv.defs.inc:162
+#: src/etc/inc/priv.defs.inc:116
msgid "Allow access to the 'Diagnostics: NDP Table' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:167
+#: src/etc/inc/priv.defs.inc:121
msgid "WebCfg - Diagnostics: Packet Capture"
msgstr ""
-#: src/etc/inc/priv.defs.inc:168
+#: src/etc/inc/priv.defs.inc:122
msgid "Allow access to the 'Diagnostics: Packet Capture' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:173
+#: src/etc/inc/priv.defs.inc:127
msgid "WebCfg - Diagnostics: pfInfo"
msgstr ""
-#: src/etc/inc/priv.defs.inc:174
+#: src/etc/inc/priv.defs.inc:128
msgid "Allows access to the 'Diagnostics: pfInfo' page"
msgstr ""
-#: src/etc/inc/priv.defs.inc:179
+#: src/etc/inc/priv.defs.inc:133
+msgid "WebCfg - Diagnostics: pfTop"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:134
+msgid "Allows access to the 'Diagnostics: pfTop' page"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:139
msgid "WebCfg - Diagnostics: Ping"
msgstr ""
-#: src/etc/inc/priv.defs.inc:180
+#: src/etc/inc/priv.defs.inc:140
msgid "Allow access to the 'Diagnostics: Ping' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:185
-msgid "WebCfg - Status: Package logs"
+#: src/etc/inc/priv.defs.inc:145
+msgid "WebCfg - Diagnostics: Reboot System"
msgstr ""
-#: src/etc/inc/priv.defs.inc:186
-msgid "Allow access to the 'Status: Package logs' page."
+#: src/etc/inc/priv.defs.inc:146
+msgid "Allow access to the 'Diagnostics: Reboot System' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:191
+#: src/etc/inc/priv.defs.inc:151
msgid "WebCfg - Diagnostics: Reset states"
msgstr ""
-#: src/etc/inc/priv.defs.inc:192
+#: src/etc/inc/priv.defs.inc:152
msgid "Allow access to the 'Diagnostics: Reset states' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:197
+#: src/etc/inc/priv.defs.inc:157
msgid "WebCfg - Diagnostics: Routing tables"
msgstr ""
-#: src/etc/inc/priv.defs.inc:198
+#: src/etc/inc/priv.defs.inc:158
msgid "Allow access to the 'Diagnostics: Routing tables' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:203
+#: src/etc/inc/priv.defs.inc:163
msgid "WebCfg - Diagnostics: S.M.A.R.T. Status"
msgstr ""
-#: src/etc/inc/priv.defs.inc:204
+#: src/etc/inc/priv.defs.inc:164
msgid "Allow access to the 'Diagnostics: S.M.A.R.T. Status' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:209
+#: src/etc/inc/priv.defs.inc:169
msgid "WebCfg - Diagnostics: Sockets"
msgstr ""
-#: src/etc/inc/priv.defs.inc:210
+#: src/etc/inc/priv.defs.inc:170
msgid "Allow access to the 'Diagnostics: Sockets' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:215
+#: src/etc/inc/priv.defs.inc:175
msgid "WebCfg - Diagnostics: States Summary"
msgstr ""
-#: src/etc/inc/priv.defs.inc:216
+#: src/etc/inc/priv.defs.inc:176
msgid "Allow access to the 'Diagnostics: States Summary' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:221
+#: src/etc/inc/priv.defs.inc:181
msgid "WebCfg - Diagnostics: System Activity"
msgstr ""
-#: src/etc/inc/priv.defs.inc:222
+#: src/etc/inc/priv.defs.inc:182
msgid "Allows access to the 'Diagnostics: System Activity' page"
msgstr ""
-#: src/etc/inc/priv.defs.inc:227
-msgid "WebCfg - Diagnostics: pfTop"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:228
-msgid "Allows access to the 'Diagnostics: pfTop' page"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:233
+#: src/etc/inc/priv.defs.inc:187
msgid "WebCfg - Diagnostics: pf Table IP addresses"
msgstr ""
-#: src/etc/inc/priv.defs.inc:234
+#: src/etc/inc/priv.defs.inc:188
msgid "Allow access to the 'Diagnostics: Tables' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:239
+#: src/etc/inc/priv.defs.inc:193
msgid "WebCfg - Diagnostics: Test Port"
msgstr ""
-#: src/etc/inc/priv.defs.inc:240
+#: src/etc/inc/priv.defs.inc:194
msgid "Allow access to the 'Diagnostics: Test Port' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:245
+#: src/etc/inc/priv.defs.inc:199
msgid "WebCfg - Diagnostics: Traceroute"
msgstr ""
-#: src/etc/inc/priv.defs.inc:246
+#: src/etc/inc/priv.defs.inc:200
msgid "Allow access to the 'Diagnostics: Traceroute' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:251
+#: src/etc/inc/priv.defs.inc:205
msgid "WebCfg - Firewall: Easy Rule add/status"
msgstr ""
-#: src/etc/inc/priv.defs.inc:252
+#: src/etc/inc/priv.defs.inc:206
msgid "Allow access to the 'Firewall: Easy Rule' add/status page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:257
-msgid "WebCfg - Diagnostics: Edit File"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:258
-msgid "Allow access to the 'Diagnostics: Edit File' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:265
-msgid "WebCfg - Diagnostics: Command"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:266
-msgid "Allow access to the 'Diagnostics: Command' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:271
+#: src/etc/inc/priv.defs.inc:211
msgid "WebCfg - Firewall: Aliases"
msgstr ""
-#: src/etc/inc/priv.defs.inc:272
+#: src/etc/inc/priv.defs.inc:212
msgid "Allow access to the 'Firewall: Aliases' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:277
+#: src/etc/inc/priv.defs.inc:217
msgid "WebCfg - Firewall: Alias: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:278
+#: src/etc/inc/priv.defs.inc:218
msgid "Allow access to the 'Firewall: Alias: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:283
+#: src/etc/inc/priv.defs.inc:223
msgid "WebCfg - Firewall: Alias: Import"
msgstr ""
-#: src/etc/inc/priv.defs.inc:284
+#: src/etc/inc/priv.defs.inc:224
msgid "Allow access to the 'Firewall: Alias: Import' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:289
+#: src/etc/inc/priv.defs.inc:229
msgid "WebCfg - Firewall: NAT: Port Forward"
msgstr ""
-#: src/etc/inc/priv.defs.inc:290
+#: src/etc/inc/priv.defs.inc:230
msgid "Allow access to the 'Firewall: NAT: Port Forward' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:295
+#: src/etc/inc/priv.defs.inc:235
msgid "WebCfg - Firewall: NAT: 1:1"
msgstr ""
-#: src/etc/inc/priv.defs.inc:296
+#: src/etc/inc/priv.defs.inc:236
msgid "Allow access to the 'Firewall: NAT: 1:1' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:301
+#: src/etc/inc/priv.defs.inc:241
msgid "WebCfg - Firewall: NAT: 1:1: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:302
+#: src/etc/inc/priv.defs.inc:242
msgid "Allow access to the 'Firewall: NAT: 1:1: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:307
+#: src/etc/inc/priv.defs.inc:247
msgid "WebCfg - Firewall: NAT: Port Forward: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:308
+#: src/etc/inc/priv.defs.inc:248
msgid "Allow access to the 'Firewall: NAT: Port Forward: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:313
+#: src/etc/inc/priv.defs.inc:253
msgid "WebCfg - Firewall: NAT: NPt"
msgstr ""
-#: src/etc/inc/priv.defs.inc:314
+#: src/etc/inc/priv.defs.inc:254
msgid "Allow access to the 'Firewall: NAT: NPt' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:319
+#: src/etc/inc/priv.defs.inc:259
msgid "WebCfg - Firewall: NAT: NPt: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:320
+#: src/etc/inc/priv.defs.inc:260
msgid "Allow access to the 'Firewall: NAT: NPt: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:325
+#: src/etc/inc/priv.defs.inc:265
msgid "WebCfg - Firewall: NAT: Outbound"
msgstr ""
-#: src/etc/inc/priv.defs.inc:326
+#: src/etc/inc/priv.defs.inc:266
msgid "Allow access to the 'Firewall: NAT: Outbound' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:331
+#: src/etc/inc/priv.defs.inc:271
msgid "WebCfg - Firewall: NAT: Outbound: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:332
+#: src/etc/inc/priv.defs.inc:272
msgid "Allow access to the 'Firewall: NAT: Outbound: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:337
+#: src/etc/inc/priv.defs.inc:277
msgid "WebCfg - Firewall: Rules"
msgstr ""
-#: src/etc/inc/priv.defs.inc:338
+#: src/etc/inc/priv.defs.inc:278
msgid "Allow access to the 'Firewall: Rules' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:343
+#: src/etc/inc/priv.defs.inc:283
msgid "WebCfg - Firewall: Rules: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:344
+#: src/etc/inc/priv.defs.inc:284
msgid "Allow access to the 'Firewall: Rules: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:349
+#: src/etc/inc/priv.defs.inc:289
msgid "WebCfg - Firewall: Schedules"
msgstr ""
-#: src/etc/inc/priv.defs.inc:350
+#: src/etc/inc/priv.defs.inc:290
msgid "Allow access to the 'Firewall: Schedules' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:355
+#: src/etc/inc/priv.defs.inc:295
msgid "WebCfg - Firewall: Schedules: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:356
+#: src/etc/inc/priv.defs.inc:296
msgid "Allow access to the 'Firewall: Schedules: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:361
+#: src/etc/inc/priv.defs.inc:301
msgid "WebCfg - Firewall: Traffic Shaper"
msgstr ""
-#: src/etc/inc/priv.defs.inc:362
+#: src/etc/inc/priv.defs.inc:302
msgid "Allow access to the 'Firewall: Traffic Shaper' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:367
+#: src/etc/inc/priv.defs.inc:307
msgid "WebCfg - Firewall: Traffic Shaper: Queues"
msgstr ""
-#: src/etc/inc/priv.defs.inc:368
+#: src/etc/inc/priv.defs.inc:308
msgid "Allow access to the 'Firewall: Traffic Shaper: Queues' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:373
+#: src/etc/inc/priv.defs.inc:313
msgid "WebCfg - Firewall: Traffic Shaper: Limiters"
msgstr ""
-#: src/etc/inc/priv.defs.inc:374
+#: src/etc/inc/priv.defs.inc:314
msgid "Allow access to the 'Firewall: Traffic Shaper: Limiters' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:379
+#: src/etc/inc/priv.defs.inc:319
msgid "WebCfg - Firewall: Traffic Shaper: Wizard"
msgstr ""
-#: src/etc/inc/priv.defs.inc:380
+#: src/etc/inc/priv.defs.inc:320
msgid "Allow access to the 'Firewall: Traffic Shaper: Wizard' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:385
+#: src/etc/inc/priv.defs.inc:325
msgid "WebCfg - Firewall: Virtual IP Addresses"
msgstr ""
-#: src/etc/inc/priv.defs.inc:386
+#: src/etc/inc/priv.defs.inc:326
msgid "Allow access to the 'Firewall: Virtual IP Addresses' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:391
+#: src/etc/inc/priv.defs.inc:331
msgid "WebCfg - Firewall: Virtual IP Address: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:392
+#: src/etc/inc/priv.defs.inc:332
msgid "Allow access to the 'Firewall: Virtual IP Address: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:397
+#: src/etc/inc/priv.defs.inc:337
msgid "WebCfg - AJAX: Get Service Providers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:398
+#: src/etc/inc/priv.defs.inc:338
msgid "Allow access to the 'AJAX: Service Providers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:403
+#: src/etc/inc/priv.defs.inc:343
msgid "WebCfg - AJAX: Get Stats"
msgstr ""
-#: src/etc/inc/priv.defs.inc:404
+#: src/etc/inc/priv.defs.inc:344
msgid "Allow access to the 'AJAX: Get Stats' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:409
+#: src/etc/inc/priv.defs.inc:349
msgid "WebCfg - Diagnostics: Interface Traffic"
msgstr ""
-#: src/etc/inc/priv.defs.inc:410
+#: src/etc/inc/priv.defs.inc:350
msgid "Allow access to the 'Diagnostics: Interface Traffic' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:415
+#: src/etc/inc/priv.defs.inc:355
msgid "WebCfg - Diagnostics: CPU Utilization"
msgstr ""
-#: src/etc/inc/priv.defs.inc:416
+#: src/etc/inc/priv.defs.inc:356
msgid "Allow access to the 'Diagnostics: CPU Utilization' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:422
-msgid "WebCfg - Diagnostics: Halt system"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:423
-msgid "Allow access to the 'Diagnostics: Halt system' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:428
+#: src/etc/inc/priv.defs.inc:362
msgid "WebCfg - XMLRPC Interface Stats"
msgstr ""
-#: src/etc/inc/priv.defs.inc:429
+#: src/etc/inc/priv.defs.inc:363
msgid "Allow access to the 'XMLRPC Interface Stats' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:434
+#: src/etc/inc/priv.defs.inc:368
msgid "WebCfg - System: Login / Logout / Dashboard"
msgstr ""
-#: src/etc/inc/priv.defs.inc:435
+#: src/etc/inc/priv.defs.inc:369
msgid "Allow access to the 'System: Login / Logout' page and Dashboard."
msgstr ""
-#: src/etc/inc/priv.defs.inc:440
+#: src/etc/inc/priv.defs.inc:374
msgid "WebCfg - Interfaces: WAN"
msgstr ""
-#: src/etc/inc/priv.defs.inc:441
+#: src/etc/inc/priv.defs.inc:375
msgid "Allow access to the 'Interfaces' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:446
+#: src/etc/inc/priv.defs.inc:380
msgid "WebCfg - Interfaces: Interface Assignments"
msgstr ""
-#: src/etc/inc/priv.defs.inc:447
+#: src/etc/inc/priv.defs.inc:381
msgid "Allow access to the 'Interfaces: Interface Assignments' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:452
+#: src/etc/inc/priv.defs.inc:386
msgid "WebCfg - Interfaces: Bridge"
msgstr ""
-#: src/etc/inc/priv.defs.inc:453
+#: src/etc/inc/priv.defs.inc:387
msgid "Allow access to the 'Interfaces: Bridge' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:458
+#: src/etc/inc/priv.defs.inc:392
msgid "WebCfg - Interfaces: Bridge edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:459
+#: src/etc/inc/priv.defs.inc:393
msgid "Allow access to the 'Interfaces: Bridge : Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:464
+#: src/etc/inc/priv.defs.inc:398
msgid "WebCfg - Interfaces: GIF"
msgstr ""
-#: src/etc/inc/priv.defs.inc:465
+#: src/etc/inc/priv.defs.inc:399
msgid "Allow access to the 'Interfaces: GIF' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:470
+#: src/etc/inc/priv.defs.inc:404
msgid "WebCfg - Interfaces: GIF: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:471
+#: src/etc/inc/priv.defs.inc:405
msgid "Allow access to the 'Interfaces: GIF: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:476
+#: src/etc/inc/priv.defs.inc:410
msgid "WebCfg - Interfaces: GRE"
msgstr ""
-#: src/etc/inc/priv.defs.inc:477
+#: src/etc/inc/priv.defs.inc:411
msgid "Allow access to the 'Interfaces: GRE' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:482
+#: src/etc/inc/priv.defs.inc:416
msgid "WebCfg - Interfaces: GRE: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:483
+#: src/etc/inc/priv.defs.inc:417
msgid "Allow access to the 'Interfaces: GRE: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:488
+#: src/etc/inc/priv.defs.inc:422
msgid "WebCfg - Interfaces: Groups"
msgstr ""
-#: src/etc/inc/priv.defs.inc:489
+#: src/etc/inc/priv.defs.inc:423
msgid "Create interface groups"
msgstr ""
-#: src/etc/inc/priv.defs.inc:494
+#: src/etc/inc/priv.defs.inc:428
msgid "WebCfg - Interfaces: Groups: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:495
+#: src/etc/inc/priv.defs.inc:429
msgid "Allow access to the 'Interfaces: Groups: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:500
+#: src/etc/inc/priv.defs.inc:434
msgid "WebCfg - Interfaces: LAGG:"
msgstr ""
-#: src/etc/inc/priv.defs.inc:501
+#: src/etc/inc/priv.defs.inc:435
msgid "Allow access to the 'Interfaces: LAGG' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:506
+#: src/etc/inc/priv.defs.inc:440
msgid "WebCfg - Interfaces: LAGG: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:507
+#: src/etc/inc/priv.defs.inc:441
msgid "Allow access to the 'Interfaces: LAGG: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:512
+#: src/etc/inc/priv.defs.inc:446
msgid "WebCfg - Interfaces: PPPs"
msgstr ""
-#: src/etc/inc/priv.defs.inc:513
+#: src/etc/inc/priv.defs.inc:447
msgid "Allow access to the 'Interfaces: PPPs' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:518
+#: src/etc/inc/priv.defs.inc:452
msgid "WebCfg - Interfaces: PPPs: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:519
+#: src/etc/inc/priv.defs.inc:453
msgid "Allow access to the 'Interfaces: PPPs: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:524
+#: src/etc/inc/priv.defs.inc:458
msgid "WebCfg - Interfaces: QinQ"
msgstr ""
-#: src/etc/inc/priv.defs.inc:525
+#: src/etc/inc/priv.defs.inc:459
msgid "Allow access to the 'Interfaces: QinQ' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:530
+#: src/etc/inc/priv.defs.inc:464
msgid "WebCfg - Interfaces: QinQ: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:531
+#: src/etc/inc/priv.defs.inc:465
msgid "Allow access to 'Interfaces: QinQ: Edit' page"
msgstr ""
-#: src/etc/inc/priv.defs.inc:536
+#: src/etc/inc/priv.defs.inc:470
msgid "WebCfg - Interfaces: VLAN"
msgstr ""
-#: src/etc/inc/priv.defs.inc:537
+#: src/etc/inc/priv.defs.inc:471
msgid "Allow access to the 'Interfaces: VLAN' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:542
+#: src/etc/inc/priv.defs.inc:476
msgid "WebCfg - Interfaces: VLAN: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:543
+#: src/etc/inc/priv.defs.inc:477
msgid "Allow access to the 'Interfaces: VLAN: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:548
+#: src/etc/inc/priv.defs.inc:482
msgid "WebCfg - Interfaces: Wireless"
msgstr ""
-#: src/etc/inc/priv.defs.inc:549
+#: src/etc/inc/priv.defs.inc:483
msgid "Allow access to the 'Interfaces: Wireless' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:554
+#: src/etc/inc/priv.defs.inc:488
msgid "WebCfg - Interfaces: Wireless: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:555
+#: src/etc/inc/priv.defs.inc:489
msgid "Allow access to the 'Interfaces: Wireless: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:560
+#: src/etc/inc/priv.defs.inc:494
msgid "WebCfg - System: License"
msgstr ""
-#: src/etc/inc/priv.defs.inc:561
+#: src/etc/inc/priv.defs.inc:495
msgid "Allow access to the 'System: License' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:566
+#: src/etc/inc/priv.defs.inc:500
msgid "WebCfg - Services: Load Balancer: Monitors"
msgstr ""
-#: src/etc/inc/priv.defs.inc:567
+#: src/etc/inc/priv.defs.inc:501
msgid "Allow access to the 'Services: Load Balancer: Monitors' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:572
+#: src/etc/inc/priv.defs.inc:506
msgid "WebCfg - Services: Load Balancer: Monitor: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:573
+#: src/etc/inc/priv.defs.inc:507
msgid "Allow access to the 'Services: Load Balancer: Monitor: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:578
+#: src/etc/inc/priv.defs.inc:512
msgid "WebCfg - Load Balancer: Pool"
msgstr ""
-#: src/etc/inc/priv.defs.inc:579
+#: src/etc/inc/priv.defs.inc:513
msgid "Allow access to the 'Load Balancer: Pool' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:584
+#: src/etc/inc/priv.defs.inc:518
msgid "WebCfg - Load Balancer: Pool: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:585
+#: src/etc/inc/priv.defs.inc:519
msgid "Allow access to the 'Load Balancer: Pool: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:590
+#: src/etc/inc/priv.defs.inc:524
msgid "WebCfg - Services: Load Balancer: Settings"
msgstr ""
-#: src/etc/inc/priv.defs.inc:591
+#: src/etc/inc/priv.defs.inc:525
msgid "Allow access to the 'Settings: Load Balancer: Settings' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:596
+#: src/etc/inc/priv.defs.inc:530
msgid "WebCfg - Services: Load Balancer: Virtual Servers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:597
+#: src/etc/inc/priv.defs.inc:531
msgid "Allow access to the 'Services: Load Balancer: Virtual Servers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:602
+#: src/etc/inc/priv.defs.inc:536
msgid "WebCfg - Load Balancer: Virtual Server: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:603
+#: src/etc/inc/priv.defs.inc:537
msgid "Allow access to the 'Load Balancer: Virtual Server: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:608
+#: src/etc/inc/priv.defs.inc:542
msgid "WebCfg - Package: Settings"
msgstr ""
-#: src/etc/inc/priv.defs.inc:609
+#: src/etc/inc/priv.defs.inc:543
msgid "Allow access to the 'Package: Settings' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:614
+#: src/etc/inc/priv.defs.inc:548
msgid "WebCfg - Package: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:615
+#: src/etc/inc/priv.defs.inc:549
msgid "Allow access to the 'Package: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:620
+#: src/etc/inc/priv.defs.inc:554
msgid "WebCfg - System: Package Manager"
msgstr ""
-#: src/etc/inc/priv.defs.inc:621
+#: src/etc/inc/priv.defs.inc:555
msgid "Allow access to the 'System: Package Manager' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:626
+#: src/etc/inc/priv.defs.inc:560
msgid "WebCfg - System: Package Manager: Install Package"
msgstr ""
-#: src/etc/inc/priv.defs.inc:627
+#: src/etc/inc/priv.defs.inc:561
msgid "Allow access to the 'System: Package Manager: Install Package' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:632
+#: src/etc/inc/priv.defs.inc:566
msgid "WebCfg - System: Package Manager: Installed"
msgstr ""
-#: src/etc/inc/priv.defs.inc:633
+#: src/etc/inc/priv.defs.inc:567
msgid "Allow access to the 'System: Package Manager: Installed' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:638
-msgid "WebCfg - Diagnostics: Reboot System"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:639
-msgid "Allow access to the 'Diagnostics: Reboot System' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:644
+#: src/etc/inc/priv.defs.inc:572
msgid "WebCfg - Diagnostics: Restart Web Server Daemon"
msgstr ""
-#: src/etc/inc/priv.defs.inc:645
+#: src/etc/inc/priv.defs.inc:573
msgid "Allow access to the 'Diagnostics: Restart Web Server Daemon' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:650
+#: src/etc/inc/priv.defs.inc:578
msgid "WebCfg - Services: Captive portal"
msgstr ""
-#: src/etc/inc/priv.defs.inc:651
+#: src/etc/inc/priv.defs.inc:579
msgid "Allow access to the 'Services: Captive portal' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:656
+#: src/etc/inc/priv.defs.inc:584
msgid "WebCfg - Services: Captive portal: File Manager"
msgstr ""
-#: src/etc/inc/priv.defs.inc:657
+#: src/etc/inc/priv.defs.inc:585
msgid "Allow access to the 'Services: Captive portal: File Manager' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:662
+#: src/etc/inc/priv.defs.inc:590
msgid "WebCfg - Services: Captive portal: Allowed Hostnames"
msgstr ""
-#: src/etc/inc/priv.defs.inc:663
+#: src/etc/inc/priv.defs.inc:591
msgid "Allow access to the 'Services: Captive portal: Allowed Hostnames' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:668
+#: src/etc/inc/priv.defs.inc:596
msgid "WebCfg - Services: Captive portal: Edit Allowed Hostnames"
msgstr ""
-#: src/etc/inc/priv.defs.inc:669
+#: src/etc/inc/priv.defs.inc:597
msgid ""
"Allow access to the 'Services: Captive portal: Edit Allowed Hostnames' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:674
+#: src/etc/inc/priv.defs.inc:602
msgid "WebCfg - Services: Captive portal: Allowed IPs"
msgstr ""
-#: src/etc/inc/priv.defs.inc:675
+#: src/etc/inc/priv.defs.inc:603
msgid "Allow access to the 'Services: Captive portal: Allowed IPs' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:680
+#: src/etc/inc/priv.defs.inc:608
msgid "WebCfg - Services: Captive portal: Edit Allowed IPs"
msgstr ""
-#: src/etc/inc/priv.defs.inc:681
+#: src/etc/inc/priv.defs.inc:609
msgid "Allow access to the 'Services: Captive portal: Edit Allowed IPs' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:686
+#: src/etc/inc/priv.defs.inc:614
msgid "WebCfg - Services: Captive portal: Mac Addresses"
msgstr ""
-#: src/etc/inc/priv.defs.inc:687
+#: src/etc/inc/priv.defs.inc:615
msgid "Allow access to the 'Services: Captive portal: Mac Addresses' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:692
+#: src/etc/inc/priv.defs.inc:620
msgid "WebCfg - Services: Captive portal: Edit MAC Addresses"
msgstr ""
-#: src/etc/inc/priv.defs.inc:693
+#: src/etc/inc/priv.defs.inc:621
msgid ""
"Allow access to the 'Services: Captive portal: Edit MAC Addresses' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:698
+#: src/etc/inc/priv.defs.inc:626
msgid "WebCfg - Services: Captive portal Vouchers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:699
+#: src/etc/inc/priv.defs.inc:627
msgid "Allow access to the 'Services: Captive portal Vouchers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:704
+#: src/etc/inc/priv.defs.inc:632
msgid "WebCfg - Services: Captive portal Voucher Rolls"
msgstr ""
-#: src/etc/inc/priv.defs.inc:705
+#: src/etc/inc/priv.defs.inc:633
msgid "Allow access to the 'Services: Captive portal Edit Voucher Rolls' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:710
+#: src/etc/inc/priv.defs.inc:638
msgid "WebCfg - Services: Captive portal Zones"
msgstr ""
-#: src/etc/inc/priv.defs.inc:711
+#: src/etc/inc/priv.defs.inc:639
msgid "Allow access to the 'Services: Captive portal Zones' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:716
+#: src/etc/inc/priv.defs.inc:644
msgid "WebCfg - Services: Captive portal: Edit Zones"
msgstr ""
-#: src/etc/inc/priv.defs.inc:717
+#: src/etc/inc/priv.defs.inc:645
msgid "Allow access to the 'Services: Captive portal: Edit Zones' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:722
+#: src/etc/inc/priv.defs.inc:650
msgid "WebCfg - Services: DHCP Server"
msgstr ""
-#: src/etc/inc/priv.defs.inc:723
+#: src/etc/inc/priv.defs.inc:651
msgid "Allow access to the 'Services: DHCP Server' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:728
-msgid "WebCfg - Services: DHCP Server: Edit Static Mapping"
+#: src/etc/inc/priv.defs.inc:656
+msgid "WebCfg - Services: DHCP Server: Edit static mapping"
msgstr ""
-#: src/etc/inc/priv.defs.inc:729
-msgid "Allow access to the 'Services: DHCP Server: Edit Static Mapping' page."
+#: src/etc/inc/priv.defs.inc:657
+msgid "Allow access to the 'Services: DHCP Server: Edit static mapping' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:734
+#: src/etc/inc/priv.defs.inc:662
msgid "WebCfg - Services: DHCP Relay"
msgstr ""
-#: src/etc/inc/priv.defs.inc:735
+#: src/etc/inc/priv.defs.inc:663
msgid "Allow access to the 'Services: DHCP Relay' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:740
+#: src/etc/inc/priv.defs.inc:668
msgid "WebCfg - Services: DHCPv6 server"
msgstr ""
-#: src/etc/inc/priv.defs.inc:741
+#: src/etc/inc/priv.defs.inc:669
msgid "Allow access to the 'Services: DHCPv6 server' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:746
-msgid "WebCfg - Services: DHCPv6 Server: Edit Static Mapping"
+#: src/etc/inc/priv.defs.inc:674
+msgid "WebCfg - Services: DHCPv6 Server: Edit static mapping"
msgstr ""
-#: src/etc/inc/priv.defs.inc:747
+#: src/etc/inc/priv.defs.inc:675
msgid ""
-"Allow access to the 'Services: DHCPv6 Server : Edit Static Mapping' page."
+"Allow access to the 'Services: DHCPv6 Server : Edit static mapping' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:752
+#: src/etc/inc/priv.defs.inc:680
msgid "WebCfg - Services: DHCPv6 Relay"
msgstr ""
-#: src/etc/inc/priv.defs.inc:753
+#: src/etc/inc/priv.defs.inc:681
msgid "Allow access to the 'Services: DHCPv6 Relay' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:758
+#: src/etc/inc/priv.defs.inc:686
msgid "WebCfg - Services: DNS Forwarder"
msgstr ""
-#: src/etc/inc/priv.defs.inc:759
+#: src/etc/inc/priv.defs.inc:687
msgid "Allow access to the 'Services: DNS Forwarder' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:764
+#: src/etc/inc/priv.defs.inc:692
msgid "WebCfg - Services: DNS Forwarder: Edit Domain Override"
msgstr ""
-#: src/etc/inc/priv.defs.inc:765
+#: src/etc/inc/priv.defs.inc:693
msgid ""
"Allow access to the 'Services: DNS Forwarder: Edit Domain Override' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:770
+#: src/etc/inc/priv.defs.inc:698
msgid "WebCfg - Services: DNS Forwarder: Edit host"
msgstr ""
-#: src/etc/inc/priv.defs.inc:771
+#: src/etc/inc/priv.defs.inc:699
msgid "Allow access to the 'Services: DNS Forwarder: Edit host' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:776
+#: src/etc/inc/priv.defs.inc:704
msgid "WebCfg - Services: Dynamic DNS clients"
msgstr ""
-#: src/etc/inc/priv.defs.inc:777
+#: src/etc/inc/priv.defs.inc:705
msgid "Allow access to the 'Services: Dynamic DNS clients' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:782
+#: src/etc/inc/priv.defs.inc:710
msgid "WebCfg - Services: Dynamic DNS client"
msgstr ""
-#: src/etc/inc/priv.defs.inc:783
+#: src/etc/inc/priv.defs.inc:711
msgid "Allow access to the 'Services: Dynamic DNS client' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:788
+#: src/etc/inc/priv.defs.inc:716
msgid "WebCfg - Services: IGMP Proxy"
msgstr ""
-#: src/etc/inc/priv.defs.inc:789
+#: src/etc/inc/priv.defs.inc:717
msgid "Allow access to the 'Services: IGMP Proxy' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:794
+#: src/etc/inc/priv.defs.inc:722
msgid "WebCfg - Services: IGMP Proxy: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:795
+#: src/etc/inc/priv.defs.inc:723
msgid "Allow access to the 'Services: IGMP Proxy: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:800
+#: src/etc/inc/priv.defs.inc:728
msgid "WebCfg - Services: NTP Settings"
msgstr ""
-#: src/etc/inc/priv.defs.inc:801
+#: src/etc/inc/priv.defs.inc:729
msgid "Allow access to the 'Services: NTP Settings' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:806
+#: src/etc/inc/priv.defs.inc:734
+msgid "WebCfg - Services: NTP ACL Settings"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:735
+msgid "Allow access to the 'Services: NTP ACL Settings' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:740
msgid "WebCfg - Services: NTP Serial GPS"
msgstr ""
-#: src/etc/inc/priv.defs.inc:807
+#: src/etc/inc/priv.defs.inc:741
msgid "Allow access to the 'Services: NTP Serial GPS' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:812
+#: src/etc/inc/priv.defs.inc:746
msgid "WebCfg - Services: NTP PPS"
msgstr ""
-#: src/etc/inc/priv.defs.inc:813
+#: src/etc/inc/priv.defs.inc:747
msgid "Allow access to the 'Services: NTP PPS' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:818
+#: src/etc/inc/priv.defs.inc:752
+msgid "WebCfg - Services: PPPoE Server"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:753
+msgid "Allow access to the 'Services: PPPoE Server' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:758
+msgid "WebCfg - Services: PPPoE Server: Edit"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:759
+msgid "Allow access to the 'Services: PPPoE Server: Edit' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:764
msgid "WebCfg - Services: RFC 2136 Clients"
msgstr ""
-#: src/etc/inc/priv.defs.inc:819
+#: src/etc/inc/priv.defs.inc:765
msgid "Allow access to the 'Services: RFC 2136 Clients' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:824
+#: src/etc/inc/priv.defs.inc:770
msgid "WebCfg - Services: RFC 2136 Client: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:825
+#: src/etc/inc/priv.defs.inc:771
msgid "Allow access to the 'Services: RFC 2136 Client: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:830
+#: src/etc/inc/priv.defs.inc:776
msgid "WebCfg - Services: Router Advertisements"
msgstr ""
-#: src/etc/inc/priv.defs.inc:831
+#: src/etc/inc/priv.defs.inc:777
msgid "Allow access to the 'Services: Router Advertisements' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:836
+#: src/etc/inc/priv.defs.inc:782
msgid "WebCfg - Services: SNMP"
msgstr ""
-#: src/etc/inc/priv.defs.inc:837
+#: src/etc/inc/priv.defs.inc:783
msgid "Allow access to the 'Services: SNMP' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:842
+#: src/etc/inc/priv.defs.inc:788
msgid "WebCfg - Services: DNS Resolver"
msgstr ""
-#: src/etc/inc/priv.defs.inc:843
+#: src/etc/inc/priv.defs.inc:789
msgid "Allow access to the 'Services: DNS Resolver' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:848
+#: src/etc/inc/priv.defs.inc:794
msgid "WebCfg - Services: DNS Resolver: Access Lists"
msgstr ""
-#: src/etc/inc/priv.defs.inc:849
+#: src/etc/inc/priv.defs.inc:795
msgid "Allow access to the 'Services: DNS Resolver: Access Lists' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:854
+#: src/etc/inc/priv.defs.inc:800
msgid "WebCfg - Services: DNS Resolver: Advanced"
msgstr ""
-#: src/etc/inc/priv.defs.inc:855
+#: src/etc/inc/priv.defs.inc:801
msgid "Allow access to the 'Services: DNS Resolver: Advanced' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:860
+#: src/etc/inc/priv.defs.inc:806
msgid "WebCfg - Services: DNS Resolver: Edit Domain Override"
msgstr ""
-#: src/etc/inc/priv.defs.inc:861
+#: src/etc/inc/priv.defs.inc:807
msgid ""
"Allow access to the 'Services: DNS Resolver: Edit Domain Override' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:866
+#: src/etc/inc/priv.defs.inc:812
msgid "WebCfg - Services: DNS Resolver: Edit host"
msgstr ""
-#: src/etc/inc/priv.defs.inc:867
+#: src/etc/inc/priv.defs.inc:813
msgid "Allow access to the 'Services: DNS Resolver: Edit host' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:872
+#: src/etc/inc/priv.defs.inc:818
msgid "WebCfg - Services: Wake-on-LAN"
msgstr ""
-#: src/etc/inc/priv.defs.inc:873
+#: src/etc/inc/priv.defs.inc:819
msgid "Allow access to the 'Services: Wake-on-LAN' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:878
+#: src/etc/inc/priv.defs.inc:824
msgid "WebCfg - Services: Wake-on-LAN: Edit"
msgstr ""
-#: src/etc/inc/priv.defs.inc:879
+#: src/etc/inc/priv.defs.inc:825
msgid "Allow access to the 'Services: Wake-on-LAN: Edit' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:884
+#: src/etc/inc/priv.defs.inc:830
msgid "WebCfg - Hidden: Detailed Status"
msgstr ""
-#: src/etc/inc/priv.defs.inc:885
+#: src/etc/inc/priv.defs.inc:831
msgid "Allow access to the 'Hidden: Detailed Status' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:890
+#: src/etc/inc/priv.defs.inc:836
msgid "WebCfg - Status: Captive portal"
msgstr ""
-#: src/etc/inc/priv.defs.inc:891
+#: src/etc/inc/priv.defs.inc:837
msgid "Allow access to the 'Status: Captive portal' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:896
+#: src/etc/inc/priv.defs.inc:842
msgid "WebCfg - Status: Captive Portal: Expire Vouchers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:897
+#: src/etc/inc/priv.defs.inc:843
msgid "Allow access to the 'Status: Captive Portal: Expire Vouchers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:902
+#: src/etc/inc/priv.defs.inc:848
msgid "WebCfg - Status: Captive Portal: Test Vouchers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:903
+#: src/etc/inc/priv.defs.inc:849
msgid "Allow access to the 'Status: Captive Portal: Test Vouchers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:908
+#: src/etc/inc/priv.defs.inc:854
msgid "WebCfg - Status: Captive portal Voucher Rolls"
msgstr ""
-#: src/etc/inc/priv.defs.inc:909
+#: src/etc/inc/priv.defs.inc:855
msgid "Allow access to the 'Status: Captive portal Voucher Rolls' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:914
+#: src/etc/inc/priv.defs.inc:860
msgid "WebCfg - Status: Captive portal Vouchers"
msgstr ""
-#: src/etc/inc/priv.defs.inc:915
+#: src/etc/inc/priv.defs.inc:861
msgid "Allow access to the 'Status: Captive portal Vouchers' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:920
+#: src/etc/inc/priv.defs.inc:866
+msgid "WebCfg - Status: CARP"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:867
+msgid "Allow access to the 'Status: CARP' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:872
msgid "WebCfg - Status: DHCP leases"
msgstr ""
-#: src/etc/inc/priv.defs.inc:921
+#: src/etc/inc/priv.defs.inc:873
msgid "Allow access to the 'Status: DHCP leases' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:926
+#: src/etc/inc/priv.defs.inc:878
msgid "WebCfg - Status: DHCPv6 leases"
msgstr ""
-#: src/etc/inc/priv.defs.inc:927
+#: src/etc/inc/priv.defs.inc:879
msgid "Allow access to the 'Status: DHCPv6 leases' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:932
+#: src/etc/inc/priv.defs.inc:884
msgid "WebCfg - Status: Filter Reload Status"
msgstr ""
-#: src/etc/inc/priv.defs.inc:933
+#: src/etc/inc/priv.defs.inc:885
msgid "Allow access to the 'Status: Filter Reload Status' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:938
+#: src/etc/inc/priv.defs.inc:890
msgid "WebCfg - Status: Gateway Groups"
msgstr ""
-#: src/etc/inc/priv.defs.inc:939
+#: src/etc/inc/priv.defs.inc:891
msgid "Allow access to the 'Status: Gateway Groups' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:944
+#: src/etc/inc/priv.defs.inc:896
msgid "WebCfg - Status: Gateways"
msgstr ""
-#: src/etc/inc/priv.defs.inc:945
+#: src/etc/inc/priv.defs.inc:897
msgid "Allow access to the 'Status: Gateways' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:950
+#: src/etc/inc/priv.defs.inc:902
msgid "WebCfg - Status: Traffic Graph"
msgstr ""
-#: src/etc/inc/priv.defs.inc:951
+#: src/etc/inc/priv.defs.inc:903
msgid "Allow access to the 'Status: Traffic Graph' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:959
+#: src/etc/inc/priv.defs.inc:911
msgid "WebCfg - Status: CPU load"
msgstr ""
-#: src/etc/inc/priv.defs.inc:960
+#: src/etc/inc/priv.defs.inc:912
msgid "Allow access to the 'Status: CPU load' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:965
+#: src/etc/inc/priv.defs.inc:917
msgid "WebCfg - Status: Interfaces"
msgstr ""
-#: src/etc/inc/priv.defs.inc:966
+#: src/etc/inc/priv.defs.inc:918
msgid "Allow access to the 'Status: Interfaces' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:971
+#: src/etc/inc/priv.defs.inc:923
+msgid "WebCfg - Status: IPsec"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:924
+msgid "Allow access to the 'Status: IPsec' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:929
+msgid "WebCfg - Status: IPsec: Leases"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:930
+msgid "Allow access to the 'Status: IPsec: Leases' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:935
+msgid "WebCfg - Status: IPsec: SADs"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:936
+msgid "Allow access to the 'Status: IPsec: SADs' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:941
+msgid "WebCfg - Status: IPsec: SPD"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:942
+msgid "Allow access to the 'Status: IPsec: SPD' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:947
msgid "WebCfg - Status: Load Balancer: Pool"
msgstr ""
-#: src/etc/inc/priv.defs.inc:972
+#: src/etc/inc/priv.defs.inc:948
msgid "Allow access to the 'Status: Load Balancer: Pool' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:977
+#: src/etc/inc/priv.defs.inc:953
msgid "WebCfg - Status: Load Balancer: Virtual Server"
msgstr ""
-#: src/etc/inc/priv.defs.inc:978
+#: src/etc/inc/priv.defs.inc:954
msgid "Allow access to the 'Status: Load Balancer: Virtual Server' page."
msgstr ""
+#: src/etc/inc/priv.defs.inc:959
+msgid "WebCfg - Status: Logs: System"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:960
+msgid "Allow access to the 'Status: System Logs: General' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:965
+msgid "WebCfg - Status: Logs: Firewall"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:966
+msgid "Allow access to the 'Status: Logs: Firewall' page."
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:971
+msgid "WebCfg - Status: System Logs: Firewall (Dynamic View)"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:972
+msgid "Allow access to the 'Status: System Logs: Firewall (Dynamic View)' page"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:977
+msgid "WebCfg - Status: System Logs: Firewall Log Summary"
+msgstr ""
+
+#: src/etc/inc/priv.defs.inc:978
+msgid "Allow access to the 'Status: System Logs: Firewall Log Summary' page"
+msgstr ""
+
#: src/etc/inc/priv.defs.inc:983
-msgid "WebCfg - Status: NTP"
+msgid "WebCfg - Status: Logs: Settings"
msgstr ""
#: src/etc/inc/priv.defs.inc:984
-msgid "Allow access to the 'Status: NTP' page."
+msgid "Allow access to the 'Status: Logs: Settings' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:989
-msgid "WebCfg - Status: OpenVPN"
+msgid "WebCfg - Status: Logs: VPN"
msgstr ""
#: src/etc/inc/priv.defs.inc:990
-msgid "Allow access to the 'Status: OpenVPN' page."
+msgid "Allow access to the 'Status: Logs: VPN' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:995
-msgid "WebCfg - Status: Traffic shaper: Queues"
+msgid "WebCfg - Status: NTP"
msgstr ""
#: src/etc/inc/priv.defs.inc:996
-msgid "Allow access to the 'Status: Traffic shaper: Queues' page."
+msgid "Allow access to the 'Status: NTP' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1001
-msgid "WebCfg - Status: Services"
+msgid "WebCfg - Status: OpenVPN"
msgstr ""
#: src/etc/inc/priv.defs.inc:1002
-msgid "Allow access to the 'Status: Services' page."
+msgid "Allow access to the 'Status: OpenVPN' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1007
-msgid "WebCfg - Status: UPnP Status"
+msgid "WebCfg - Status: Package logs"
msgstr ""
#: src/etc/inc/priv.defs.inc:1008
-msgid "Allow access to the 'Status: UPnP Status' page."
+msgid "Allow access to the 'Status: Package logs' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1013
-msgid "WebCfg - Status: Wireless"
+msgid "WebCfg - Status: Traffic shaper: Queues"
msgstr ""
#: src/etc/inc/priv.defs.inc:1014
-msgid "Allow access to the 'Status: Wireless' page."
+msgid "Allow access to the 'Status: Traffic shaper: Queues' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1019
-msgid "WebCfg - System: General Setup"
+msgid "WebCfg - Status: Services"
msgstr ""
#: src/etc/inc/priv.defs.inc:1020
-msgid "Allow access to the 'System: General Setup' page."
+msgid "Allow access to the 'Status: Services' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1025
-msgid "WebCfg - System: Advanced: Admin Access Page"
+msgid "WebCfg - Status: UPnP Status"
msgstr ""
#: src/etc/inc/priv.defs.inc:1026
-msgid "Allow access to the 'System: Advanced: Admin Access' page."
+msgid "Allow access to the 'Status: UPnP Status' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1031
-msgid "WebCfg - System: Advanced: Firewall and NAT"
+msgid "WebCfg - Status: Wireless"
msgstr ""
#: src/etc/inc/priv.defs.inc:1032
-msgid "Allow access to the 'System: Advanced: Firewall and NAT' page."
+msgid "Allow access to the 'Status: Wireless' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1037
-msgid "WebCfg - System: Advanced: Miscellaneous"
+msgid "WebCfg - System: General Setup"
msgstr ""
#: src/etc/inc/priv.defs.inc:1038
-msgid "Allow access to the 'System: Advanced: Miscellaneous' page."
+msgid "Allow access to the 'System: General Setup' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1043
-msgid "WebCfg - System: Advanced: Networking"
+msgid "WebCfg - System: Advanced: Admin Access Page"
msgstr ""
#: src/etc/inc/priv.defs.inc:1044
-msgid "Allow access to the 'System: Advanced: Networking' page."
+msgid "Allow access to the 'System: Advanced: Admin Access' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1049
-msgid "WebCfg - System: Advanced: Notifications"
+msgid "WebCfg - System: Advanced: Firewall & NAT"
msgstr ""
#: src/etc/inc/priv.defs.inc:1050
-msgid "Allow access to the 'System: Advanced: Notifications' page."
+msgid "Allow access to the 'System: Advanced: Firewall & NAT' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1055
-msgid "WebCfg - System: Advanced: Tunables"
+msgid "WebCfg - System: Advanced: Miscellaneous"
msgstr ""
#: src/etc/inc/priv.defs.inc:1056
-msgid "Allow access to the 'System: Advanced: Tunables' page."
+msgid "Allow access to the 'System: Advanced: Miscellaneous' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1061
-msgid "WebCfg - System: Authentication Servers"
+msgid "WebCfg - System: Advanced: Networking"
msgstr ""
#: src/etc/inc/priv.defs.inc:1062
-msgid "Allow access to the 'System: Authentication Servers' page."
+msgid "Allow access to the 'System: Advanced: Networking' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1067
-msgid "WebCfg - System: CA Manager"
+msgid "WebCfg - System: Advanced: Notifications"
msgstr ""
#: src/etc/inc/priv.defs.inc:1068
-msgid "Allow access to the 'System: CA Manager' page."
+msgid "Allow access to the 'System: Advanced: Notifications' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1073
-msgid "WebCfg - System: Certificate Manager"
+msgid "WebCfg - System: Advanced: Tunables"
msgstr ""
#: src/etc/inc/priv.defs.inc:1074
-msgid "Allow access to the 'System: Certificate Manager' page."
+msgid "Allow access to the 'System: Advanced: Tunables' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1079
-msgid "WebCfg - System: CRL Manager"
+msgid "WebCfg - System: Authentication Servers"
msgstr ""
#: src/etc/inc/priv.defs.inc:1080
-msgid "Allow access to the 'System: CRL Manager' page."
+msgid "Allow access to the 'System: Authentication Servers' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1085
-msgid "WebCfg - System: Gateway Groups"
+msgid "WebCfg - System: CA Manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1086
-msgid "Allow access to the 'System: Gateway Groups' page."
+msgid "Allow access to the 'System: CA Manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1091
-msgid "WebCfg - System: Gateways: Edit Gateway Groups"
+msgid "WebCfg - System: Certificate Manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1092
-msgid "Allow access to the 'System: Gateways: Edit Gateway Groups' page."
+msgid "Allow access to the 'System: Certificate Manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1097
-msgid "WebCfg - System: Gateways"
+msgid "WebCfg - System: CRL Manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1098
-msgid "Allow access to the 'System: Gateways' page."
+msgid "Allow access to the 'System: CRL Manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1103
-msgid "WebCfg - System: Gateways: Edit Gateway"
+msgid "WebCfg - System: Gateway Groups"
msgstr ""
#: src/etc/inc/priv.defs.inc:1104
-msgid "Allow access to the 'System: Gateways: Edit Gateway' page."
+msgid "Allow access to the 'System: Gateway Groups' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1109
-msgid "WebCfg - System: Group manager"
+msgid "WebCfg - System: Gateways: Edit Gateway Groups"
msgstr ""
#: src/etc/inc/priv.defs.inc:1110
-msgid "Allow access to the 'System: Group manager' page."
+msgid "Allow access to the 'System: Gateways: Edit Gateway Groups' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1115
-msgid "WebCfg - System: Group Manager: Add Privileges"
+msgid "WebCfg - System: Gateways"
msgstr ""
#: src/etc/inc/priv.defs.inc:1116
-msgid "Allow access to the 'System: Group Manager: Add Privileges' page."
+msgid "Allow access to the 'System: Gateways' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1121
-msgid "WebCfg - System: High Availability Sync"
+msgid "WebCfg - System: Gateways: Edit Gateway"
msgstr ""
#: src/etc/inc/priv.defs.inc:1122
-msgid "Allow access to the 'System: High Availability Sync' page."
+msgid "Allow access to the 'System: Gateways: Edit Gateway' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1127
-msgid "WebCfg - System: Static Routes"
+msgid "WebCfg - System: Group manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1128
-msgid "Allow access to the 'System: Static Routes' page."
+msgid "Allow access to the 'System: Group manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1133
-msgid "WebCfg - System: Static Routes: Edit route"
+msgid "WebCfg - System: Group Manager: Add Privileges"
msgstr ""
#: src/etc/inc/priv.defs.inc:1134
-msgid "Allow access to the 'System: Static Routes: Edit route' page."
+msgid "Allow access to the 'System: Group Manager: Add Privileges' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1139
-msgid "WebCfg - System: Update: Settings"
+msgid "WebCfg - System: High Availability Sync"
msgstr ""
#: src/etc/inc/priv.defs.inc:1140
-msgid "Allow access to the 'System: Update: Settings' page."
+msgid "Allow access to the 'System: High Availability Sync' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1145
-msgid "WebCfg - System: User Manager"
+msgid "WebCfg - System: Static Routes"
msgstr ""
#: src/etc/inc/priv.defs.inc:1146
-msgid "Allow access to the 'System: User Manager' page."
+msgid "Allow access to the 'System: Static Routes' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1151
-msgid "WebCfg - System: User Manager: Add Privileges"
+msgid "WebCfg - System: Static Routes: Edit route"
msgstr ""
#: src/etc/inc/priv.defs.inc:1152
-msgid "Allow access to the 'System: User Manager: Add Privileges' page."
+msgid "Allow access to the 'System: Static Routes: Edit route' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1157
-msgid "WebCfg - System: User Password Manager"
+msgid "WebCfg - System: Update: Settings"
msgstr ""
#: src/etc/inc/priv.defs.inc:1158
-msgid "Allow access to the 'System: User Password Manager' page."
+msgid "Allow access to the 'System: Update: Settings' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1163
-msgid "WebCfg - System: User Manager: Settings"
+msgid "WebCfg - System: User Manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1164
-msgid "Allow access to the 'System: User Manager: Settings' page."
+msgid "Allow access to the 'System: User Manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1169
-msgid "WebCfg - System: User Manager: Settings: LDAP Picker"
+msgid "WebCfg - System: User Manager: Add Privileges"
msgstr ""
#: src/etc/inc/priv.defs.inc:1170
-msgid "Allow access to the 'System: User Manager: Settings: LDAP Picker' page."
+msgid "Allow access to the 'System: User Manager: Add Privileges' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1175
-msgid "WebCfg - System: User Manager: Settings: Test LDAP"
+msgid "WebCfg - System: User Password Manager"
msgstr ""
#: src/etc/inc/priv.defs.inc:1176
-msgid "Allow access to the 'System: User Manager: Settings: Test LDAP' page."
+msgid "Allow access to the 'System: User Password Manager' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1181
-msgid "WebCfg - Hidden: Upload Configuration"
+msgid "WebCfg - System: User Manager: Settings"
msgstr ""
#: src/etc/inc/priv.defs.inc:1182
-msgid "Allow access to the 'Hidden: Upload Configuration' page."
+msgid "Allow access to the 'System: User Manager: Settings' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1187
-msgid "WebCfg - VPN: IPsec"
+msgid "WebCfg - Hidden: Upload Configuration"
msgstr ""
#: src/etc/inc/priv.defs.inc:1188
-msgid "Allow access to the 'VPN: IPsec' page."
+msgid "Allow access to the 'Hidden: Upload Configuration' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1193
-msgid "WebCfg - VPN: IPsec: Pre-Shared Keys List"
+msgid "WebCfg - VPN: IPsec"
msgstr ""
#: src/etc/inc/priv.defs.inc:1194
-msgid "Allow access to the 'VPN: IPsec: Pre-Shared Keys List' page."
+msgid "Allow access to the 'VPN: IPsec' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1199
-msgid "WebCfg - VPN: IPsec: Edit Pre-Shared Keys"
+msgid "WebCfg - VPN: IPsec: Pre-Shared Keys List"
msgstr ""
#: src/etc/inc/priv.defs.inc:1200
-msgid "Allow access to the 'VPN: IPsec: Edit Pre-Shared Keys' page."
+msgid "Allow access to the 'VPN: IPsec: Pre-Shared Keys List' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1205
-msgid "WebCfg - VPN: IPsec: Mobile"
+msgid "WebCfg - VPN: IPsec: Edit Pre-Shared Keys"
msgstr ""
#: src/etc/inc/priv.defs.inc:1206
-msgid "Allow access to the 'VPN: IPsec: Mobile' page."
+msgid "Allow access to the 'VPN: IPsec: Edit Pre-Shared Keys' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1211
-msgid "WebCfg - VPN: IPsec: Edit Phase 1"
+msgid "WebCfg - VPN: IPsec: Mobile"
msgstr ""
#: src/etc/inc/priv.defs.inc:1212
-msgid "Allow access to the 'VPN: IPsec: Edit Phase 1' page."
+msgid "Allow access to the 'VPN: IPsec: Mobile' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1217
-msgid "WebCfg - VPN: IPsec: Edit Phase 2"
+msgid "WebCfg - VPN: IPsec: Edit Phase 1"
msgstr ""
#: src/etc/inc/priv.defs.inc:1218
-msgid "Allow access to the 'VPN: IPsec: Edit Phase 2' page."
+msgid "Allow access to the 'VPN: IPsec: Edit Phase 1' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1223
-msgid "WebCfg - VPN: IPsec: Settings"
+msgid "WebCfg - VPN: IPsec: Edit Phase 2"
msgstr ""
#: src/etc/inc/priv.defs.inc:1224
-msgid "Allow access to the 'VPN: IPsec: Settings' page."
+msgid "Allow access to the 'VPN: IPsec: Edit Phase 2' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1229
-msgid "WebCfg - VPN: L2TP"
+msgid "WebCfg - VPN: IPsec: Settings"
msgstr ""
#: src/etc/inc/priv.defs.inc:1230
-msgid "Allow access to the 'VPN: L2TP' page."
+msgid "Allow access to the 'VPN: IPsec: Settings' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1235
-msgid "WebCfg - VPN: L2TP: Users"
+msgid "WebCfg - VPN: L2TP"
msgstr ""
#: src/etc/inc/priv.defs.inc:1236
-msgid "Allow access to the 'VPN: L2TP: Users' page."
+msgid "Allow access to the 'VPN: L2TP' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1241
-msgid "WebCfg - VPN: L2TP: Users: Edit"
+msgid "WebCfg - VPN: L2TP: Users"
msgstr ""
#: src/etc/inc/priv.defs.inc:1242
-msgid "Allow access to the 'VPN: L2TP: Users: Edit' page."
+msgid "Allow access to the 'VPN: L2TP: Users' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1247
-msgid "WebCfg - OpenVPN: Clients"
+msgid "WebCfg - VPN: L2TP: Users: Edit"
msgstr ""
#: src/etc/inc/priv.defs.inc:1248
-msgid "Allow access to the 'OpenVPN: Clients' page."
+msgid "Allow access to the 'VPN: L2TP: Users: Edit' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1253
-msgid "WebCfg - OpenVPN: Client Specific Override"
+msgid "WebCfg - OpenVPN: Clients"
msgstr ""
#: src/etc/inc/priv.defs.inc:1254
-msgid "Allow access to the 'OpenVPN: Client Specific Override' page."
+msgid "Allow access to the 'OpenVPN: Clients' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1259
-msgid "WebCfg - OpenVPN: Servers"
+msgid "WebCfg - OpenVPN: Client Specific Override"
msgstr ""
#: src/etc/inc/priv.defs.inc:1260
-msgid "Allow access to the 'OpenVPN: Servers' page."
+msgid "Allow access to the 'OpenVPN: Client Specific Override' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1265
-msgid "WebCfg - Services: PPPoE Server"
+msgid "WebCfg - OpenVPN: Servers"
msgstr ""
#: src/etc/inc/priv.defs.inc:1266
-msgid "Allow access to the 'Services: PPPoE Server' page."
+msgid "Allow access to the 'OpenVPN: Servers' page."
msgstr ""
#: src/etc/inc/priv.defs.inc:1271
-msgid "WebCfg - Services: PPPoE Server: Edit"
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:1272
-msgid "Allow access to the 'Services: PPPoE Server: Edit' page."
-msgstr ""
-
-#: src/etc/inc/priv.defs.inc:1277
msgid "WebCfg - pfSense wizard subsystem"
msgstr ""
-#: src/etc/inc/priv.defs.inc:1278
+#: src/etc/inc/priv.defs.inc:1272
msgid "Allow access to the 'pfSense wizard subsystem' page."
msgstr ""
-#: src/etc/inc/priv.defs.inc:1283
+#: src/etc/inc/priv.defs.inc:1277
msgid "WebCfg - XMLRPC Library"
msgstr ""
-#: src/etc/inc/priv.defs.inc:1284
+#: src/etc/inc/priv.defs.inc:1278
msgid "Allow access to the 'XMLRPC Library' page."
msgstr ""
@@ -5269,7 +5297,7 @@ msgid "DNS Forwarder"
msgstr ""
#: src/etc/inc/service-utils.inc:287 src/usr/local/www/diag_backup.php:560
-#: src/usr/local/www/head.inc:287 src/usr/local/www/services_unbound.php:266
+#: src/usr/local/www/head.inc:287 src/usr/local/www/services_unbound.php:272
#: src/usr/local/www/services_unbound_acls.php:208
#: src/usr/local/www/services_unbound_advanced.php:221
#: src/usr/local/www/services_unbound_domainoverride_edit.php:145
@@ -5285,24 +5313,24 @@ msgstr ""
#: src/etc/inc/service-utils.inc:302 src/usr/local/www/diag_backup.php:557
#: src/usr/local/www/head.inc:285 src/usr/local/www/head.inc:323
-#: src/usr/local/www/services_captiveportal.php:96
-#: src/usr/local/www/services_captiveportal_filemanager.php:99
-#: src/usr/local/www/services_captiveportal_hostname.php:95
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:96
-#: src/usr/local/www/services_captiveportal_ip.php:94
-#: src/usr/local/www/services_captiveportal_ip_edit.php:98
-#: src/usr/local/www/services_captiveportal_mac.php:91
-#: src/usr/local/www/services_captiveportal_mac_edit.php:101
-#: src/usr/local/www/services_captiveportal_vouchers.php:111
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:86
+#: src/usr/local/www/services_captiveportal.php:97
+#: src/usr/local/www/services_captiveportal_filemanager.php:100
+#: src/usr/local/www/services_captiveportal_hostname.php:96
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:98
+#: src/usr/local/www/services_captiveportal_ip.php:95
+#: src/usr/local/www/services_captiveportal_ip_edit.php:99
+#: src/usr/local/www/services_captiveportal_mac.php:92
+#: src/usr/local/www/services_captiveportal_mac_edit.php:102
+#: src/usr/local/www/services_captiveportal_vouchers.php:112
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:87
#: src/usr/local/www/services_captiveportal_zones.php:93
#: src/usr/local/www/services_captiveportal_zones_edit.php:69
#: src/usr/local/www/status_captiveportal.php:125
-#: src/usr/local/www/status_captiveportal_expire.php:86
-#: src/usr/local/www/status_captiveportal_test.php:86
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:85
-#: src/usr/local/www/status_captiveportal_vouchers.php:85
-#: src/usr/local/www/system_certmanager.php:1090
+#: src/usr/local/www/status_captiveportal_expire.php:87
+#: src/usr/local/www/status_captiveportal_test.php:87
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:86
+#: src/usr/local/www/status_captiveportal_vouchers.php:86
+#: src/usr/local/www/system_certmanager.php:1058
msgid "Captive Portal"
msgstr ""
@@ -5352,7 +5380,7 @@ msgstr ""
msgid "Not available."
msgstr ""
-#: src/etc/inc/service-utils.inc:493 src/usr/local/www/status_services.php:168
+#: src/etc/inc/service-utils.inc:493 src/usr/local/www/status_services.php:158
msgid "Running"
msgstr ""
@@ -5361,512 +5389,469 @@ msgstr ""
msgid "%s Service is"
msgstr ""
-#: src/etc/inc/service-utils.inc:502 src/usr/local/www/status_services.php:168
+#: src/etc/inc/service-utils.inc:502 src/usr/local/www/status_services.php:158
msgid "Stopped"
msgstr ""
#: src/etc/inc/service-utils.inc:502
-#: src/usr/local/www/firewall_nat_edit.php:669
+#: src/usr/local/www/firewall_nat_1to1_edit.php:401
+#: src/usr/local/www/firewall_nat_edit.php:667
#: src/usr/local/www/firewall_nat_npt_edit.php:225
#: src/usr/local/www/firewall_nat_out_edit.php:451
-#: src/usr/local/www/firewall_rules_edit.php:1136
-#: src/usr/local/www/interfaces.php:2597
-#: src/usr/local/www/interfaces_ppps_edit.php:748
-#: src/usr/local/www/load_balancer_pool_edit.php:445
-#: src/usr/local/www/services_router_advertisements.php:141
+#: src/usr/local/www/firewall_rules_edit.php:1152
+#: src/usr/local/www/interfaces.php:2614
+#: src/usr/local/www/interfaces_ppps_edit.php:758
+#: src/usr/local/www/load_balancer_pool_edit.php:439
+#: src/usr/local/www/services_router_advertisements.php:142
#: src/usr/local/www/system_gateways_edit.php:613
#: src/usr/local/www/system_routes_edit.php:298
-#: src/usr/local/www/system_usermanager.php:502
-#: src/usr/local/www/system_usermanager.php:620
-#: src/usr/local/www/vpn_ipsec_phase1.php:692
+#: src/usr/local/www/system_usermanager.php:503
+#: src/usr/local/www/system_usermanager.php:621
+#: src/usr/local/www/vpn_ipsec_phase1.php:690
#: src/usr/local/www/vpn_ipsec_phase2.php:535
#: src/usr/local/www/vpn_openvpn_client.php:462
-#: src/usr/local/www/vpn_openvpn_csc.php:669
+#: src/usr/local/www/vpn_openvpn_csc.php:673
#: src/usr/local/www/vpn_openvpn_server.php:630
msgid "Disabled"
msgstr ""
-#: src/etc/inc/service-utils.inc:542 src/etc/inc/service-utils.inc:594
+#: src/etc/inc/service-utils.inc:597
#, php-format
msgid "Restart %sService"
msgstr ""
-#: src/etc/inc/service-utils.inc:553 src/etc/inc/service-utils.inc:607
+#: src/etc/inc/service-utils.inc:610
#, php-format
msgid "Stop %sService"
msgstr ""
-#: src/etc/inc/service-utils.inc:558 src/etc/inc/service-utils.inc:613
+#: src/etc/inc/service-utils.inc:616
#, php-format
msgid "Start %sService"
msgstr ""
-#: src/etc/inc/service-utils.inc:685
+#: src/etc/inc/service-utils.inc:688
#, php-format
msgid "%s has been started."
msgstr ""
-#: src/etc/inc/service-utils.inc:755
+#: src/etc/inc/service-utils.inc:758
#, php-format
msgid "%s has been stopped."
msgstr ""
-#: src/etc/inc/service-utils.inc:824
+#: src/etc/inc/service-utils.inc:827
#, php-format
msgid "%s has been restarted."
msgstr ""
-#: src/etc/inc/services.inc:360
+#: src/etc/inc/services.inc:376
msgid "Error: cannot open radvd.conf in services_radvd_configure()."
msgstr ""
-#: src/etc/inc/services.inc:377
+#: src/etc/inc/services.inc:393
msgid "Shutting down Router Advertisment daemon cleanly"
msgstr ""
-#: src/etc/inc/services.inc:465
+#: src/etc/inc/services.inc:481
#, php-format
msgid "DHCP leases restore failed exited with %1$s, the error is: %2$s%3$s"
msgstr ""
-#: src/etc/inc/services.inc:492
+#: src/etc/inc/services.inc:508
msgid "Starting DHCP service..."
msgstr ""
-#: src/etc/inc/services.inc:584
+#: src/etc/inc/services.inc:600
msgid "Warning! DHCP Failover setup and no CARP virtual IPs defined!"
msgstr ""
-#: src/etc/inc/services.inc:751
+#: src/etc/inc/services.inc:767
#, php-format
msgid ""
"Invalid DHCP pool %s - %s for %s subnet %s/%s detected. Please correct the "
"settings in Services, DHCP Server"
msgstr ""
-#: src/etc/inc/services.inc:1095
+#: src/etc/inc/services.inc:1111
#, php-format
msgid "Error: cannot open dhcpd.conf in services_dhcpdv4_configure().%s"
msgstr ""
-#: src/etc/inc/services.inc:1222
+#: src/etc/inc/services.inc:1238
#, php-format
msgid "DHCP leases v6 restore failed exited with %1$s, the error is: %2$s"
msgstr ""
-#: src/etc/inc/services.inc:1614
+#: src/etc/inc/services.inc:1630
msgid "Could not write Igmpproxy configuration file!"
msgstr ""
-#: src/etc/inc/services.inc:1622
+#: src/etc/inc/services.inc:1638
msgid "Started IGMP proxy service."
msgstr ""
-#: src/etc/inc/services.inc:1646
+#: src/etc/inc/services.inc:1662
msgid "Starting DHCP relay service..."
msgstr ""
-#: src/etc/inc/services.inc:1671
+#: src/etc/inc/services.inc:1687
msgid "No destination IP has been configured!"
msgstr ""
-#: src/etc/inc/services.inc:1744
+#: src/etc/inc/services.inc:1760
msgid "No suitable interface found for running dhcrelay!"
msgstr ""
-#: src/etc/inc/services.inc:1780
+#: src/etc/inc/services.inc:1796
msgid "Starting DHCPv6 relay service..."
msgstr ""
-#: src/etc/inc/services.inc:1868
+#: src/etc/inc/services.inc:1884
msgid "No suitable interface found for running dhcrelay -6!"
msgstr ""
-#: src/etc/inc/services.inc:1928
+#: src/etc/inc/services.inc:1944
msgid "Starting DynDNS clients..."
msgstr ""
-#: src/etc/inc/services.inc:2001
+#: src/etc/inc/services.inc:2017
msgid "Starting DNS forwarder..."
msgstr ""
-#: src/etc/inc/services.inc:2167
+#: src/etc/inc/services.inc:2183
msgid "Starting DNS Resolver..."
msgstr ""
-#: src/etc/inc/services.inc:2212
+#: src/etc/inc/services.inc:2228
msgid "Starting SNMP daemon... "
msgstr ""
-#: src/etc/inc/services.inc:2218
+#: src/etc/inc/services.inc:2234
#, php-format
msgid "Error: cannot open snmpd.conf in services_snmpd_configure().%s"
msgstr ""
-#: src/etc/inc/services.inc:2496
+#: src/etc/inc/services.inc:2512
#, php-format
msgid "DynDNS updated IP Address (A) for %1$s on %2$s (%3$s) to %4$s"
msgstr ""
-#: src/etc/inc/services.inc:2501
+#: src/etc/inc/services.inc:2517
#, php-format
msgid ""
"phpDynDNS: Not updating %s A record because the IP address has not changed."
msgstr ""
-#: src/etc/inc/services.inc:2512
+#: src/etc/inc/services.inc:2528
#, php-format
msgid "DynDNS updated IPv6 Address (AAAA) for %1$s on %2$s (%3$s) to %4$s"
msgstr ""
-#: src/etc/inc/services.inc:2514
+#: src/etc/inc/services.inc:2530
#, php-format
msgid "phpDynDNS: updating cache file %1$s.ipv6: %2$s"
msgstr ""
-#: src/etc/inc/services.inc:2517
+#: src/etc/inc/services.inc:2533
#, php-format
msgid ""
"phpDynDNS: Not updating %s AAAA record because the IPv6 address has not "
"changed."
msgstr ""
-#: src/etc/inc/services.inc:2568
+#: src/etc/inc/services.inc:2584
msgid "pfSense specific crontab entries"
msgstr ""
-#: src/etc/inc/services.inc:2569
+#: src/etc/inc/services.inc:2585
msgid "Created:"
msgstr ""
-#: src/etc/inc/services.inc:2591
+#: src/etc/inc/services.inc:2607
msgid "If possible do not add items to this file manually."
msgstr ""
-#: src/etc/inc/services.inc:2592
+#: src/etc/inc/services.inc:2608
msgid ""
-"If you do so, this file must be terminated with a blank line (e.g. new line)"
+"If done so, this file must be terminated with a blank line (e.g. new line)"
msgstr ""
-#: src/etc/inc/services.inc:2643
+#: src/etc/inc/services.inc:2659
msgid "Starting UPnP service... "
msgstr ""
-#: src/etc/inc/services.inc:2683
+#: src/etc/inc/services.inc:2699
#, php-format
msgid "Installed cron job for %s"
msgstr ""
-#: src/etc/inc/services.inc:2687
+#: src/etc/inc/services.inc:2703
#, php-format
msgid "Checked cron job for %s, no change needed"
msgstr ""
-#: src/etc/inc/services.inc:2690
+#: src/etc/inc/services.inc:2706
#, php-format
msgid "Updated cron job for %s"
msgstr ""
-#: src/etc/inc/services.inc:2696
+#: src/etc/inc/services.inc:2712
#, php-format
msgid "Removed cron job for %s"
msgstr ""
-#: src/etc/inc/shaper.inc:254 src/usr/local/www/system_camanager.php:260
+#: src/etc/inc/shaper.inc:296 src/usr/local/www/system_camanager.php:260
#: src/usr/local/www/system_certmanager.php:378
#, php-format
msgid "The field '%s' contains invalid characters."
msgstr ""
-#: src/etc/inc/shaper.inc:260
+#: src/etc/inc/shaper.inc:302
#, php-format
msgid "The field '%s' is required."
msgstr ""
-#: src/etc/inc/shaper.inc:411 src/etc/inc/shaper.inc:1878
-#: src/etc/inc/shaper.inc:2254 src/etc/inc/shaper.inc:2654
-#: src/etc/inc/shaper.inc:2812 src/etc/inc/shaper.inc:2964
-#: src/etc/inc/shaper.inc:3113 src/etc/inc/shaper.inc:3339
-#: src/etc/inc/shaper.inc:3925 src/usr/local/www/interfaces_ppps_edit.php:908
-#: src/usr/local/www/status_queues.php:198
-#: src/usr/local/www/status_queues.php:202
+#: src/etc/inc/shaper.inc:469 src/etc/inc/shaper.inc:1934
+#: src/etc/inc/shaper.inc:2297 src/etc/inc/shaper.inc:2681
+#: src/etc/inc/shaper.inc:2809 src/etc/inc/shaper.inc:2961
+#: src/etc/inc/shaper.inc:3080 src/etc/inc/shaper.inc:3306
+#: src/etc/inc/shaper.inc:3893 src/usr/local/www/interfaces_ppps_edit.php:920
+#: src/usr/local/www/status_queues.php:197
+#: src/usr/local/www/status_queues.php:201
msgid "Bandwidth"
msgstr ""
-#: src/etc/inc/shaper.inc:413 src/etc/inc/shaper.inc:1880
-#: src/etc/inc/shaper.inc:2656 src/etc/inc/shaper.inc:2966
-#: src/etc/inc/shaper.inc:3343
+#: src/etc/inc/shaper.inc:471 src/etc/inc/shaper.inc:1936
+#: src/etc/inc/shaper.inc:2683 src/etc/inc/shaper.inc:2963
+#: src/etc/inc/shaper.inc:3310
msgid "Bandwidthtype"
msgstr ""
-#: src/etc/inc/shaper.inc:418 src/etc/inc/shaper.inc:1171
-#: src/etc/inc/shaper.inc:1886 src/etc/inc/shaper.inc:2661
-#: src/etc/inc/shaper.inc:2971
+#: src/etc/inc/shaper.inc:476
+msgid "Bandwidth must be set. This is usually the interface speed."
+msgstr ""
+
+#: src/etc/inc/shaper.inc:479 src/etc/inc/shaper.inc:1238
+#: src/etc/inc/shaper.inc:1942
msgid "Bandwidth must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:421 src/etc/inc/shaper.inc:1174
-#: src/etc/inc/shaper.inc:1890 src/etc/inc/shaper.inc:2666
-#: src/etc/inc/shaper.inc:2976
+#: src/etc/inc/shaper.inc:482 src/etc/inc/shaper.inc:1241
+#: src/etc/inc/shaper.inc:1946
msgid "Bandwidth cannot be negative."
msgstr ""
-#: src/etc/inc/shaper.inc:424
+#: src/etc/inc/shaper.inc:486 src/etc/inc/shaper.inc:1245
+#: src/etc/inc/shaper.inc:1951
+msgid "Bandwidth in percentage should be between 1 and 100."
+msgstr ""
+
+#: src/etc/inc/shaper.inc:493
msgid "Qlimit must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:427
+#: src/etc/inc/shaper.inc:496
msgid "Qlimit must be positive."
msgstr ""
-#: src/etc/inc/shaper.inc:430
+#: src/etc/inc/shaper.inc:499
msgid "Tbrsize must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:433
+#: src/etc/inc/shaper.inc:502
msgid "Tbrsize must be positive."
msgstr ""
-#: src/etc/inc/shaper.inc:533 src/etc/inc/shaper.inc:1703
-#: src/etc/inc/shaper.inc:2530 src/etc/inc/shaper.inc:3469
-#, php-format
-msgid "SHAPER: could not create queue %1$s on interface %2$s because: %3$s"
-msgstr ""
-
-#: src/etc/inc/shaper.inc:670
+#: src/etc/inc/shaper.inc:721
#, php-format
msgid "SHAPER: no default queue specified for interface %s."
msgstr ""
-#: src/etc/inc/shaper.inc:670
+#: src/etc/inc/shaper.inc:721
msgid "The interface queue will be enforced as default."
msgstr ""
-#: src/etc/inc/shaper.inc:755
-msgid "Disable shaper on interface"
+#: src/etc/inc/shaper.inc:807
+msgid "Remove shaper from this interface"
msgstr ""
-#: src/etc/inc/shaper.inc:773 src/etc/inc/shaper.inc:1359
-#: src/usr/local/www/diag_confbak.php:189 src/usr/local/www/diag_edit.php:146
-#: src/usr/local/www/diag_nanobsd.php:203
-#: src/usr/local/www/firewall_nat.php:455
-#: src/usr/local/www/firewall_nat.php:469
-#: src/usr/local/www/firewall_nat_1to1.php:282
-#: src/usr/local/www/firewall_nat_1to1_edit.php:397
-#: src/usr/local/www/firewall_nat_edit.php:662
-#: src/usr/local/www/firewall_nat_npt.php:271
-#: src/usr/local/www/firewall_nat_out.php:538
-#: src/usr/local/www/firewall_nat_out_edit.php:444
-#: src/usr/local/www/firewall_rules.php:849
-#: src/usr/local/www/firewall_rules.php:897
-#: src/usr/local/www/interfaces.php:1707
-#: src/usr/local/www/interfaces_assign.php:601
-#: src/usr/local/www/interfaces_qinq_edit.php:261
-#: src/usr/local/www/load_balancer_monitor_edit.php:299
-#: src/usr/local/www/load_balancer_pool_edit.php:340
-#: src/usr/local/www/pkg_edit.php:623
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:204
-#: src/usr/local/www/services_dhcp.php:786
-#: src/usr/local/www/services_dhcpv6.php:595
-#: src/usr/local/www/services_igmpproxy.php:172
-#: src/usr/local/www/services_igmpproxy.php:174
-#: src/usr/local/www/services_router_advertisements.php:294
-#: src/usr/local/www/status_lb_pool.php:274
-#: src/usr/local/www/status_lb_pool.php:276
-#: src/usr/local/www/status_logs_common.inc:973
-#: src/usr/local/www/status_logs_settings.php:248
-#: src/usr/local/www/system_advanced_sysctl.php:139
-#: src/usr/local/www/system_camanager.php:353
-#: src/usr/local/www/system_camanager.php:383
-#: src/usr/local/www/system_certmanager.php:253
-#: src/usr/local/www/system_certmanager.php:561
-#: src/usr/local/www/system_certmanager.php:591
-#: src/usr/local/www/system_crlmanager.php:295
-#: src/usr/local/www/system_crlmanager.php:379
-#: src/usr/local/www/system_usermanager_settings_ldapacpicker.php:157
-#: src/usr/local/www/vpn_l2tp.php:238
-#: src/usr/local/www/widgets/widgets/log.widget.php:296
-#: src/usr/local/www/widgets/widgets/rss.widget.php:190
-#: src/usr/local/www/widgets/widgets/services_status.widget.php:166
-#: src/usr/local/www/widgets/widgets/traffic_graphs.widget.php:198
-msgid "Save"
-msgstr ""
-
-#: src/etc/inc/shaper.inc:782 src/etc/inc/shaper.inc:1368
+#: src/etc/inc/shaper.inc:831 src/etc/inc/shaper.inc:1439
msgid "Enable/Disable"
msgstr ""
-#: src/etc/inc/shaper.inc:795
+#: src/etc/inc/shaper.inc:844
msgid "Scheduler Type"
msgstr ""
-#: src/etc/inc/shaper.inc:802
-msgid ""
-"Changing this changes all child queues! Beware you can lose information."
+#: src/etc/inc/shaper.inc:851
+msgid "Changing this changes all child queues! Beware information can be lost."
msgstr ""
-#: src/etc/inc/shaper.inc:828 src/etc/inc/shaper.inc:1398
+#: src/etc/inc/shaper.inc:877 src/etc/inc/shaper.inc:1469
msgid "Queue Limit"
msgstr ""
-#: src/etc/inc/shaper.inc:835
-msgid "TRB Size"
+#: src/etc/inc/shaper.inc:884
+msgid "TBR Size"
msgstr ""
-#: src/etc/inc/shaper.inc:838
+#: src/etc/inc/shaper.inc:887
msgid ""
"Adjusts the size, in bytes, of the token bucket regulator. If not specified, "
"heuristics based on the interface bandwidth are used to determine the size."
msgstr ""
-#: src/etc/inc/shaper.inc:1178
+#: src/etc/inc/shaper.inc:1252
msgid "The priority must be an integer between 1 and 15."
msgstr ""
-#: src/etc/inc/shaper.inc:1181 src/etc/inc/shaper.inc:3358
+#: src/etc/inc/shaper.inc:1255 src/etc/inc/shaper.inc:3325
msgid "Queue limit must be an integer"
msgstr ""
-#: src/etc/inc/shaper.inc:1184
+#: src/etc/inc/shaper.inc:1258
msgid "Queue limit must be positive"
msgstr ""
-#: src/etc/inc/shaper.inc:1187 src/etc/inc/shaper.inc:1190
-#: src/etc/inc/shaper.inc:3361 src/etc/inc/shaper.inc:3364
+#: src/etc/inc/shaper.inc:1261 src/etc/inc/shaper.inc:1264
+#: src/etc/inc/shaper.inc:3328 src/etc/inc/shaper.inc:3331
msgid "Queue names must be alphanumeric and _ or - only."
msgstr ""
-#: src/etc/inc/shaper.inc:1194
+#: src/etc/inc/shaper.inc:1268
msgid "Only one default queue per interface is allowed."
msgstr ""
-#: src/etc/inc/shaper.inc:1379
+#: src/etc/inc/shaper.inc:1450
msgid ""
"Enter the name of the queue here. Do not use spaces and limit the size to 15 "
"characters."
msgstr ""
-#: src/etc/inc/shaper.inc:1390 src/usr/local/www/interfaces_bridge_edit.php:605
+#: src/etc/inc/shaper.inc:1461 src/usr/local/www/interfaces_bridge_edit.php:617
#: src/usr/local/www/interfaces_vlan.php:142
-#: src/usr/local/www/system_gateway_groups.php:152
+#: src/usr/local/www/system_gateway_groups.php:166
msgid "Priority"
msgstr ""
-#: src/etc/inc/shaper.inc:1394
+#: src/etc/inc/shaper.inc:1465
msgid ""
"For hfsc, the range is 0 to 7. The default is 1. Hfsc queues with a higher "
"priority are preferred in the case of overload."
msgstr ""
-#: src/etc/inc/shaper.inc:1401
+#: src/etc/inc/shaper.inc:1472
msgid "Queue limit in packets."
msgstr ""
-#: src/etc/inc/shaper.inc:1403
+#: src/etc/inc/shaper.inc:1474
msgid "Scheduler options"
msgstr ""
-#: src/etc/inc/shaper.inc:1412 src/usr/local/www/firewall_rules_edit.php:1684
+#: src/etc/inc/shaper.inc:1483 src/usr/local/www/firewall_rules_edit.php:1700
msgid "Default Queue"
msgstr ""
-#: src/etc/inc/shaper.inc:1420
+#: src/etc/inc/shaper.inc:1491
msgid "Random Early Detection"
msgstr ""
-#: src/etc/inc/shaper.inc:1420
+#: src/etc/inc/shaper.inc:1491
msgid ""
"<a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#red\">"
msgstr ""
-#: src/etc/inc/shaper.inc:1427
+#: src/etc/inc/shaper.inc:1498
msgid "Random Early Detection In and Out"
msgstr ""
-#: src/etc/inc/shaper.inc:1427
+#: src/etc/inc/shaper.inc:1498
msgid ""
"<a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#rio\">"
msgstr ""
-#: src/etc/inc/shaper.inc:1434
+#: src/etc/inc/shaper.inc:1505
msgid "Explicit Congestion Notification"
msgstr ""
-#: src/etc/inc/shaper.inc:1434 src/etc/inc/shaper.inc:1441
+#: src/etc/inc/shaper.inc:1505 src/etc/inc/shaper.inc:1512
msgid ""
"<a target=\"_new\" href=\"http://www.openbsd.org/faq/pf/queueing.html#ecn\">"
msgstr ""
-#: src/etc/inc/shaper.inc:1441
+#: src/etc/inc/shaper.inc:1512
msgid "Codel Active Queue"
msgstr ""
-#: src/etc/inc/shaper.inc:1443
+#: src/etc/inc/shaper.inc:1514
msgid "Select options for this queue"
msgstr ""
-#: src/etc/inc/shaper.inc:1449 src/etc/inc/shaper.inc:3961
-#: src/etc/inc/shaper.inc:4265 src/usr/local/www/firewall_aliases.php:228
-#: src/usr/local/www/firewall_aliases_edit.php:682
-#: src/usr/local/www/firewall_aliases_edit.php:739
+#: src/etc/inc/shaper.inc:1520 src/etc/inc/shaper.inc:3929
+#: src/etc/inc/shaper.inc:4233 src/usr/local/www/firewall_aliases.php:228
+#: src/usr/local/www/firewall_aliases_edit.php:679
+#: src/usr/local/www/firewall_aliases_edit.php:736
#: src/usr/local/www/firewall_aliases_import.php:208
#: src/usr/local/www/firewall_nat.php:246
#: src/usr/local/www/firewall_nat_1to1.php:187
-#: src/usr/local/www/firewall_nat_1to1_edit.php:513
+#: src/usr/local/www/firewall_nat_1to1_edit.php:510
#: src/usr/local/www/firewall_nat_edit.php:897
#: src/usr/local/www/firewall_nat_npt.php:186
#: src/usr/local/www/firewall_nat_npt_edit.php:267
#: src/usr/local/www/firewall_nat_out.php:319
-#: src/usr/local/www/firewall_nat_out.php:570
-#: src/usr/local/www/firewall_nat_out_edit.php:641
-#: src/usr/local/www/firewall_rules.php:414
-#: src/usr/local/www/firewall_rules_edit.php:1421
+#: src/usr/local/www/firewall_nat_out.php:572
+#: src/usr/local/www/firewall_nat_out_edit.php:640
+#: src/usr/local/www/firewall_rules.php:417
+#: src/usr/local/www/firewall_rules_edit.php:1439
#: src/usr/local/www/firewall_schedule.php:128
-#: src/usr/local/www/firewall_schedule_edit.php:409
-#: src/usr/local/www/firewall_schedule_edit.php:649
+#: src/usr/local/www/firewall_schedule_edit.php:404
+#: src/usr/local/www/firewall_schedule_edit.php:648
#: src/usr/local/www/firewall_virtual_ip.php:298
-#: src/usr/local/www/firewall_virtual_ip_edit.php:455
-#: src/usr/local/www/guiconfig.inc:1102 src/usr/local/www/interfaces.php:1722
-#: src/usr/local/www/interfaces.php:1876 src/usr/local/www/interfaces.php:3188
+#: src/usr/local/www/firewall_virtual_ip_edit.php:464
+#: src/usr/local/www/guiconfig.inc:1105 src/usr/local/www/interfaces.php:1728
+#: src/usr/local/www/interfaces.php:1888 src/usr/local/www/interfaces.php:3195
#: src/usr/local/www/interfaces_bridge.php:138
-#: src/usr/local/www/interfaces_bridge_edit.php:427
+#: src/usr/local/www/interfaces_bridge_edit.php:442
#: src/usr/local/www/interfaces_gif.php:133
-#: src/usr/local/www/interfaces_gif_edit.php:255
+#: src/usr/local/www/interfaces_gif_edit.php:259
#: src/usr/local/www/interfaces_gre.php:133
-#: src/usr/local/www/interfaces_gre_edit.php:256
+#: src/usr/local/www/interfaces_gre_edit.php:262
#: src/usr/local/www/interfaces_groups.php:115
#: src/usr/local/www/interfaces_lagg.php:140
+#: src/usr/local/www/interfaces_lagg_edit.php:288
#: src/usr/local/www/interfaces_ppps.php:132
-#: src/usr/local/www/interfaces_ppps_edit.php:595
+#: src/usr/local/www/interfaces_ppps_edit.php:605
#: src/usr/local/www/interfaces_qinq.php:146
-#: src/usr/local/www/interfaces_qinq_edit.php:290
+#: src/usr/local/www/interfaces_qinq_edit.php:287
#: src/usr/local/www/interfaces_vlan.php:143
#: src/usr/local/www/interfaces_vlan_edit.php:241
#: src/usr/local/www/interfaces_wireless.php:135
#: src/usr/local/www/interfaces_wireless_edit.php:232
#: src/usr/local/www/load_balancer_monitor.php:142
-#: src/usr/local/www/load_balancer_monitor_edit.php:118
-#: src/usr/local/www/load_balancer_monitor_edit.php:313
+#: src/usr/local/www/load_balancer_monitor_edit.php:120
+#: src/usr/local/www/load_balancer_monitor_edit.php:311
#: src/usr/local/www/load_balancer_pool.php:159
-#: src/usr/local/www/load_balancer_pool_edit.php:364
-#: src/usr/local/www/load_balancer_virtual_server.php:160
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:215
+#: src/usr/local/www/load_balancer_pool_edit.php:356
+#: src/usr/local/www/load_balancer_virtual_server.php:180
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:217
#: src/usr/local/www/pkg_mgr.php:101 src/usr/local/www/pkg_mgr.php:191
-#: src/usr/local/www/pkg_mgr_installed.php:105
-#: src/usr/local/www/services_captiveportal_hostname.php:151
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:226
-#: src/usr/local/www/services_captiveportal_ip.php:145
-#: src/usr/local/www/services_captiveportal_mac.php:210
-#: src/usr/local/www/services_captiveportal_mac_edit.php:262
+#: src/usr/local/www/pkg_mgr_installed.php:114
+#: src/usr/local/www/services_captiveportal_hostname.php:152
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:225
+#: src/usr/local/www/services_captiveportal_ip.php:146
+#: src/usr/local/www/services_captiveportal_ip_edit.php:259
+#: src/usr/local/www/services_captiveportal_mac.php:211
+#: src/usr/local/www/services_captiveportal_mac_edit.php:265
#: src/usr/local/www/services_captiveportal_zones.php:115
#: src/usr/local/www/services_dhcp.php:690
-#: src/usr/local/www/services_dhcp.php:1319
-#: src/usr/local/www/services_dhcp_edit.php:487
-#: src/usr/local/www/services_dhcpv6.php:1005
+#: src/usr/local/www/services_dhcp.php:1333
+#: src/usr/local/www/services_dhcp_edit.php:489
+#: src/usr/local/www/services_dhcpv6.php:1019
#: src/usr/local/www/services_dhcpv6_edit.php:274
-#: src/usr/local/www/services_dnsmasq.php:377
-#: src/usr/local/www/services_dnsmasq.php:457
-#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:190
+#: src/usr/local/www/services_dnsmasq.php:355
+#: src/usr/local/www/services_dnsmasq.php:429
+#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:191
#: src/usr/local/www/services_dnsmasq_edit.php:269
#: src/usr/local/www/services_dnsmasq_edit.php:318
#: src/usr/local/www/services_dyndns.php:124
@@ -5877,242 +5862,258 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:383
#: src/usr/local/www/services_rfc2136.php:117
#: src/usr/local/www/services_rfc2136_edit.php:322
-#: src/usr/local/www/services_unbound.php:441
-#: src/usr/local/www/services_unbound.php:517
+#: src/usr/local/www/services_unbound.php:470
+#: src/usr/local/www/services_unbound.php:546
#: src/usr/local/www/services_unbound_acls.php:270
#: src/usr/local/www/services_unbound_acls.php:296
-#: src/usr/local/www/services_unbound_acls.php:328
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:169
+#: src/usr/local/www/services_unbound_acls.php:332
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:173
#: src/usr/local/www/services_unbound_host_edit.php:270
#: src/usr/local/www/services_unbound_host_edit.php:319
-#: src/usr/local/www/services_wol.php:202
+#: src/usr/local/www/services_wol.php:210
#: src/usr/local/www/services_wol_edit.php:173
#: src/usr/local/www/status_dhcp_leases.php:382
#: src/usr/local/www/status_gateway_groups.php:98
#: src/usr/local/www/status_gateways.php:100
-#: src/usr/local/www/status_graph.php:196
-#: src/usr/local/www/status_ipsec.php:132
+#: src/usr/local/www/status_graph.php:211
+#: src/usr/local/www/status_ipsec.php:509
#: src/usr/local/www/status_lb_pool.php:166
#: src/usr/local/www/status_lb_vs.php:100
-#: src/usr/local/www/status_services.php:131
+#: src/usr/local/www/status_services.php:121
#: src/usr/local/www/status_upnp.php:107
#: src/usr/local/www/system_advanced_sysctl.php:206
#: src/usr/local/www/system_advanced_sysctl.php:263
-#: src/usr/local/www/system_gateway_groups.php:153
-#: src/usr/local/www/system_gateway_groups_edit.php:313
+#: src/usr/local/www/system_gateway_groups.php:167
#: src/usr/local/www/system_gateway_groups_edit.php:342
+#: src/usr/local/www/system_gateway_groups_edit.php:371
#: src/usr/local/www/system_gateways.php:280
#: src/usr/local/www/system_gateways_edit.php:698
-#: src/usr/local/www/system_groupmanager.php:250
-#: src/usr/local/www/system_groupmanager.php:305
-#: src/usr/local/www/system_groupmanager.php:403
+#: src/usr/local/www/system_groupmanager.php:262
+#: src/usr/local/www/system_groupmanager.php:321
+#: src/usr/local/www/system_groupmanager.php:426
#: src/usr/local/www/system_routes.php:279
#: src/usr/local/www/system_routes_edit.php:306
#: src/usr/local/www/system_usermanager.php:380
-#: src/usr/local/www/vpn_ipsec_phase1.php:729
+#: src/usr/local/www/vpn_ipsec_phase1.php:727
#: src/usr/local/www/vpn_ipsec_phase2.php:619
#: src/usr/local/www/vpn_openvpn_client.php:555
-#: src/usr/local/www/vpn_openvpn_client.php:821
-#: src/usr/local/www/vpn_openvpn_csc.php:372
-#: src/usr/local/www/vpn_openvpn_csc.php:671
+#: src/usr/local/www/vpn_openvpn_client.php:820
+#: src/usr/local/www/vpn_openvpn_csc.php:376
+#: src/usr/local/www/vpn_openvpn_csc.php:675
#: src/usr/local/www/vpn_openvpn_server.php:695
-#: src/usr/local/www/vpn_openvpn_server.php:1203
+#: src/usr/local/www/vpn_openvpn_server.php:1208
#: src/usr/local/www/widgets/widgets/ipsec.widget.php:235
#: src/usr/local/www/widgets/widgets/load_balancer_status.widget.php:95
#: src/usr/local/www/widgets/widgets/services_status.widget.php:109
msgid "Description"
msgstr ""
-#: src/etc/inc/shaper.inc:1527
-msgid "Delete queue from interface"
-msgstr ""
-
-#: src/etc/inc/shaper.inc:1895 src/etc/inc/shaper.inc:2671
-#: src/etc/inc/shaper.inc:2982
-msgid "Bandwidth in percentage should be between 1 and 100 bounds."
+#: src/etc/inc/shaper.inc:1599
+msgid "Delete Queue from this Interface"
msgstr ""
-#: src/etc/inc/shaper.inc:1914
+#: src/etc/inc/shaper.inc:1957
msgid "upperlimit service curve defined but missing (d) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1917
+#: src/etc/inc/shaper.inc:1960
msgid ""
"upperlimit service curve defined but missing initial bandwidth (m1) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1920
+#: src/etc/inc/shaper.inc:1963
msgid "upperlimit m1 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:1923
+#: src/etc/inc/shaper.inc:1966
msgid "upperlimit d value needs to be numeric"
msgstr ""
-#: src/etc/inc/shaper.inc:1926
+#: src/etc/inc/shaper.inc:1969
msgid "upperlimit m2 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:1943
+#: src/etc/inc/shaper.inc:1986
msgid "linkshare service curve defined but missing (d) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1946
+#: src/etc/inc/shaper.inc:1989
msgid ""
"linkshare service curve defined but missing initial bandwidth (m1) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1949
+#: src/etc/inc/shaper.inc:1992
msgid "linkshare m1 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:1952
+#: src/etc/inc/shaper.inc:1995
msgid "linkshare d value needs to be numeric"
msgstr ""
-#: src/etc/inc/shaper.inc:1955
+#: src/etc/inc/shaper.inc:1998
msgid "linkshare m2 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:1958
+#: src/etc/inc/shaper.inc:2001
msgid "realtime service curve defined but missing (d) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1961
+#: src/etc/inc/shaper.inc:2004
msgid "realtime service curve defined but missing initial bandwidth (m1) value"
msgstr ""
-#: src/etc/inc/shaper.inc:1979
+#: src/etc/inc/shaper.inc:2022
msgid "realtime m1 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:1982
+#: src/etc/inc/shaper.inc:2025
msgid "realtime d value needs to be numeric"
msgstr ""
-#: src/etc/inc/shaper.inc:1985
+#: src/etc/inc/shaper.inc:2028
msgid "realtime m2 value needs to be Kb, Mb, Gb, or %"
msgstr ""
-#: src/etc/inc/shaper.inc:2252
+#: src/etc/inc/shaper.inc:2295
msgid "Service Curve (sc)"
msgstr ""
-#: src/etc/inc/shaper.inc:2274 src/etc/inc/shaper.inc:2832
-#: src/etc/inc/shaper.inc:3133
+#: src/etc/inc/shaper.inc:2317 src/etc/inc/shaper.inc:2829
+#: src/etc/inc/shaper.inc:3100
msgid "Choose the amount of bandwidth for this queue"
msgstr ""
-#: src/etc/inc/shaper.inc:2278
+#: src/etc/inc/shaper.inc:2321
msgid "Max bandwidth for queue."
msgstr ""
-#: src/etc/inc/shaper.inc:2292 src/etc/inc/shaper.inc:2325
-#: src/etc/inc/shaper.inc:2357
+#: src/etc/inc/shaper.inc:2335 src/etc/inc/shaper.inc:2368
+#: src/etc/inc/shaper.inc:2400
msgid "m1"
msgstr ""
-#: src/etc/inc/shaper.inc:2299 src/etc/inc/shaper.inc:2332
-#: src/etc/inc/shaper.inc:2364
+#: src/etc/inc/shaper.inc:2342 src/etc/inc/shaper.inc:2375
+#: src/etc/inc/shaper.inc:2407
msgid "d"
msgstr ""
-#: src/etc/inc/shaper.inc:2306 src/etc/inc/shaper.inc:2339
-#: src/etc/inc/shaper.inc:2371
+#: src/etc/inc/shaper.inc:2349 src/etc/inc/shaper.inc:2382
+#: src/etc/inc/shaper.inc:2414
msgid "m2"
msgstr ""
-#: src/etc/inc/shaper.inc:2311
+#: src/etc/inc/shaper.inc:2354
msgid "Min bandwidth for queue."
msgstr ""
-#: src/etc/inc/shaper.inc:2343
+#: src/etc/inc/shaper.inc:2386
msgid "B/W share of a backlogged queue."
msgstr ""
-#: src/etc/inc/shaper.inc:2651
+#: src/etc/inc/shaper.inc:2678
msgid "Priority must be an integer between 1 and 7."
msgstr ""
-#: src/etc/inc/shaper.inc:2838
+#: src/etc/inc/shaper.inc:2835
msgid "Scheduler option"
msgstr ""
-#: src/etc/inc/shaper.inc:2961
+#: src/etc/inc/shaper.inc:2958
msgid "Priority must be an integer between 1 and 255."
msgstr ""
-#: src/etc/inc/shaper.inc:3139
+#: src/etc/inc/shaper.inc:3106
msgid "Scheduler specific options"
msgstr ""
-#: src/etc/inc/shaper.inc:3142
+#: src/etc/inc/shaper.inc:3109
msgid "Number of buckets available"
msgstr ""
-#: src/etc/inc/shaper.inc:3149
+#: src/etc/inc/shaper.inc:3116
msgid "Bandwidth limit for hosts to not saturate link"
msgstr ""
-#: src/etc/inc/shaper.inc:3351
+#: src/etc/inc/shaper.inc:3318
msgid "Plr must be a value between 0 and 1."
msgstr ""
-#: src/etc/inc/shaper.inc:3355
+#: src/etc/inc/shaper.inc:3322
msgid "Buckets must be an integer between 16 and 65535."
msgstr ""
-#: src/etc/inc/shaper.inc:3368
+#: src/etc/inc/shaper.inc:3335
msgid "IPV4 bit mask must be blank or numeric value between 1 and 32."
msgstr ""
-#: src/etc/inc/shaper.inc:3373
+#: src/etc/inc/shaper.inc:3340
msgid "IPV6 bit mask must be blank or numeric value between 1 and 128."
msgstr ""
-#: src/etc/inc/shaper.inc:3527
+#: src/etc/inc/shaper.inc:3436
+#, php-format
+msgid "SHAPER: Could not create queue %1$s on interface %2$s because: %3$s"
+msgstr ""
+
+#: src/etc/inc/shaper.inc:3494
#, php-format
msgid "Bandwidth for schedule %s must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:3529
+#: src/etc/inc/shaper.inc:3496
#, php-format
msgid "Burst for schedule %s must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:3536
-msgid "You need to specify a schedule for every additional entry"
+#: src/etc/inc/shaper.inc:3503
+msgid "A schedule needs to be specified for every additional entry."
msgstr ""
-#: src/etc/inc/shaper.inc:3539
-msgid "If more than one bandwidth configured all schedules need to be selected"
+#: src/etc/inc/shaper.inc:3506
+msgid ""
+"If more than one bandwidth configured all schedules need to be selected."
msgstr ""
-#: src/etc/inc/shaper.inc:3542
-msgid "At least one bw specification is necessary"
+#: src/etc/inc/shaper.inc:3509
+msgid "At least one bw specification is necessary."
msgstr ""
-#: src/etc/inc/shaper.inc:3545
+#: src/etc/inc/shaper.inc:3512
msgid "Delay must be an integer."
msgstr ""
-#: src/etc/inc/shaper.inc:3849
-#: src/usr/local/www/diag_dump_states_sources.php:179
-#: src/usr/local/www/diag_gmirror.php:279
-#: src/usr/local/www/diag_gmirror.php:297 src/usr/local/www/diag_tables.php:316
-#: src/usr/local/www/load_balancer_pool_edit.php:461
-#: src/usr/local/www/load_balancer_pool_edit.php:466
-#: src/usr/local/www/pkg_mgr_installed.php:211
-#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:151
-msgid "Remove"
+#: src/etc/inc/shaper.inc:3816 src/usr/local/www/firewall_aliases_edit.php:743
+#: src/usr/local/www/firewall_nat.php:483
+#: src/usr/local/www/firewall_nat_1to1.php:278
+#: src/usr/local/www/firewall_nat_npt.php:267
+#: src/usr/local/www/firewall_nat_out.php:536
+#: src/usr/local/www/firewall_rules.php:849
+#: src/usr/local/www/firewall_schedule_edit.php:652
+#: src/usr/local/www/firewall_schedule_edit.php:1149
+#: src/usr/local/www/interfaces_assign.php:573
+#: src/usr/local/www/interfaces_qinq_edit.php:332
+#: src/usr/local/www/interfaces_vlan.php:166
+#: src/usr/local/www/pkg_edit.php:1463 src/usr/local/www/services_dhcp.php:1221
+#: src/usr/local/www/services_dhcpv6.php:960
+#: src/usr/local/www/services_dnsmasq_edit.php:322
+#: src/usr/local/www/services_igmpproxy_edit.php:264
+#: src/usr/local/www/services_ntpd.php:282
+#: src/usr/local/www/services_ntpd_acls.php:320
+#: src/usr/local/www/services_pppoe_edit.php:557
+#: src/usr/local/www/services_router_advertisements.php:388
+#: src/usr/local/www/services_unbound_acls.php:300
+#: src/usr/local/www/services_unbound_host_edit.php:323
+#: src/usr/local/www/system_certmanager.php:788
+#: src/usr/local/www/system_usermanager.php:551
+msgid "Delete"
msgstr ""
-#: src/etc/inc/shaper.inc:3856
-msgid "Add another schedule"
+#: src/etc/inc/shaper.inc:3824
+msgid "Add Schedule"
msgstr ""
-#: src/etc/inc/shaper.inc:3879 src/etc/inc/shaper.inc:4201
-#: src/usr/local/www/firewall_shaper.php:438
+#: src/etc/inc/shaper.inc:3847 src/etc/inc/shaper.inc:4169
+#: src/usr/local/www/firewall_shaper.php:417
#: src/usr/local/www/firewall_shaper_queues.php:245
#: src/usr/local/www/firewall_shaper_vinterface.php:73
#: src/usr/local/www/firewall_shaper_vinterface.php:417
@@ -6120,14 +6121,14 @@ msgstr ""
msgid "Limiters"
msgstr ""
-#: src/etc/inc/shaper.inc:3883 src/etc/inc/shaper.inc:4205
-#: src/usr/local/www/firewall_nat_1to1_edit.php:524
-#: src/usr/local/www/firewall_rules.php:796
-#: src/usr/local/www/interfaces.php:1714 src/usr/local/www/interfaces.php:2986
-#: src/usr/local/www/services_captiveportal.php:577
-#: src/usr/local/www/services_captiveportal_vouchers.php:514
-#: src/usr/local/www/services_dhcp.php:794
-#: src/usr/local/www/services_dhcp.php:1235
+#: src/etc/inc/shaper.inc:3851 src/etc/inc/shaper.inc:4173
+#: src/usr/local/www/firewall_nat_1to1_edit.php:521
+#: src/usr/local/www/firewall_rules.php:800
+#: src/usr/local/www/interfaces.php:1720 src/usr/local/www/interfaces.php:2993
+#: src/usr/local/www/services_captiveportal.php:578
+#: src/usr/local/www/services_captiveportal_vouchers.php:515
+#: src/usr/local/www/services_dhcp.php:790
+#: src/usr/local/www/services_dhcp.php:1249
#: src/usr/local/www/services_dhcp_relay.php:178
#: src/usr/local/www/services_dhcpv6_relay.php:176
#: src/usr/local/www/services_dnsmasq.php:237
@@ -6135,26 +6136,26 @@ msgstr ""
#: src/usr/local/www/services_rfc2136_edit.php:199
#: src/usr/local/www/services_snmp.php:229
#: src/usr/local/www/services_snmp.php:272
-#: src/usr/local/www/services_unbound.php:295
-#: src/usr/local/www/vpn_ipsec_phase1.php:894
-#: src/usr/local/www/vpn_l2tp.php:245 src/usr/local/www/vpn_l2tp.php:331
+#: src/usr/local/www/services_unbound.php:301
+#: src/usr/local/www/vpn_ipsec_phase1.php:892
+#: src/usr/local/www/vpn_l2tp.php:242 src/usr/local/www/vpn_l2tp.php:328
#: src/usr/local/www/diag_routes.php:114
msgid "Enable"
msgstr ""
-#: src/etc/inc/shaper.inc:3936 src/etc/inc/shaper.inc:4240
+#: src/etc/inc/shaper.inc:3904 src/etc/inc/shaper.inc:4208
msgid "Source addresses"
msgstr ""
-#: src/etc/inc/shaper.inc:3936 src/etc/inc/shaper.inc:4240
+#: src/etc/inc/shaper.inc:3904 src/etc/inc/shaper.inc:4208
msgid "Destination addresses"
msgstr ""
-#: src/etc/inc/shaper.inc:3934 src/etc/inc/shaper.inc:4238
+#: src/etc/inc/shaper.inc:3902 src/etc/inc/shaper.inc:4206
msgid "Mask"
msgstr ""
-#: src/etc/inc/shaper.inc:3937 src/etc/inc/shaper.inc:4241
+#: src/etc/inc/shaper.inc:3905 src/etc/inc/shaper.inc:4209
msgid ""
"If \"source\" or \"destination\" slots is chosen a dynamic pipe with the "
"bandwidth, delay, packet loss and queue size given above will be created for "
@@ -6162,123 +6163,159 @@ msgid ""
"possible to easily specify bandwidth limits per host."
msgstr ""
-#: src/etc/inc/shaper.inc:3948 src/etc/inc/shaper.inc:4252
+#: src/etc/inc/shaper.inc:3916 src/etc/inc/shaper.inc:4220
msgid "IPV4 mask bits<br />255.255.255.255/?"
msgstr ""
-#: src/etc/inc/shaper.inc:3955 src/etc/inc/shaper.inc:4259
+#: src/etc/inc/shaper.inc:3923 src/etc/inc/shaper.inc:4227
msgid ""
"IPV6 mask bits<br /><span style=\"font-family:consolas\">ffff:ffff:ffff:ffff:"
"ffff:ffff:ffff:ffff/?</span>"
msgstr ""
-#: src/etc/inc/shaper.inc:3964 src/etc/inc/shaper.inc:4268
-#: src/usr/local/www/firewall_aliases_edit.php:685
+#: src/etc/inc/shaper.inc:3932 src/etc/inc/shaper.inc:4236
+#: src/usr/local/www/firewall_aliases_edit.php:682
#: src/usr/local/www/firewall_aliases_import.php:211
-#: src/usr/local/www/firewall_nat_1to1_edit.php:516
+#: src/usr/local/www/firewall_nat_1to1_edit.php:513
#: src/usr/local/www/firewall_nat_edit.php:900
#: src/usr/local/www/firewall_nat_npt_edit.php:270
-#: src/usr/local/www/firewall_nat_out_edit.php:644
-#: src/usr/local/www/firewall_virtual_ip_edit.php:458
-#: src/usr/local/www/interfaces_gif_edit.php:258
-#: src/usr/local/www/interfaces_gre_edit.php:259
-#: src/usr/local/www/interfaces_qinq_edit.php:293
+#: src/usr/local/www/firewall_nat_out_edit.php:643
+#: src/usr/local/www/firewall_virtual_ip_edit.php:467
+#: src/usr/local/www/interfaces_gif_edit.php:262
+#: src/usr/local/www/interfaces_gre_edit.php:265
+#: src/usr/local/www/interfaces_qinq_edit.php:290
#: src/usr/local/www/interfaces_wireless_edit.php:235
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:229
-#: src/usr/local/www/services_captiveportal_zones_edit.php:132
-#: src/usr/local/www/services_dhcp_edit.php:490
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:228
+#: src/usr/local/www/services_captiveportal_zones_edit.php:129
+#: src/usr/local/www/services_dhcp_edit.php:492
#: src/usr/local/www/services_dhcpv6_edit.php:277
-#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:193
+#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:194
#: src/usr/local/www/services_dnsmasq_edit.php:272
#: src/usr/local/www/services_dyndns_edit.php:435
#: src/usr/local/www/services_igmpproxy_edit.php:198
#: src/usr/local/www/services_rfc2136_edit.php:325
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:172
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:176
#: src/usr/local/www/services_unbound_host_edit.php:273
#: src/usr/local/www/services_wol_edit.php:176
-#: src/usr/local/www/system_gateway_groups_edit.php:345
-#: src/usr/local/www/system_gateways_edit.php:701
+#: src/usr/local/www/system_gateway_groups_edit.php:374
#: src/usr/local/www/system_routes_edit.php:309
-#: src/usr/local/www/vpn_ipsec_phase1.php:732
+#: src/usr/local/www/vpn_ipsec_phase1.php:730
#: src/usr/local/www/vpn_ipsec_phase2.php:622
#: src/usr/local/www/vpn_openvpn_client.php:558
#: src/usr/local/www/vpn_openvpn_server.php:698
-msgid "You may enter a description here for your reference (not parsed)."
+msgid ""
+"A description may be entered here for administrative reference (not parsed)."
msgstr ""
-#: src/etc/inc/shaper.inc:3968 src/etc/inc/shaper.inc:4272
-#: src/usr/local/www/firewall_rules_edit.php:1444
-#: src/usr/local/www/vpn_ipsec_phase1.php:859
+#: src/etc/inc/shaper.inc:3936 src/etc/inc/shaper.inc:4240
+#: src/usr/local/www/firewall_rules_edit.php:1454
+#: src/usr/local/www/firewall_rules_edit.php:1460
+#: src/usr/local/www/interfaces_bridge_edit.php:458
+#: src/usr/local/www/vpn_ipsec_phase1.php:857
msgid "Advanced Options"
msgstr ""
-#: src/etc/inc/shaper.inc:3972
+#: src/etc/inc/shaper.inc:3940
msgid "Delay (ms)"
msgstr ""
-#: src/etc/inc/shaper.inc:3975
-msgid "In most cases, you should specify 0 here (or leave the field empty)"
+#: src/etc/inc/shaper.inc:3943
+msgid ""
+"In most cases, zero (0) should specified here (or leave the field empty)."
msgstr ""
-#: src/etc/inc/shaper.inc:3979 src/etc/inc/shaper.inc:4285
+#: src/etc/inc/shaper.inc:3947 src/etc/inc/shaper.inc:4253
msgid "Packet Loss Rate"
msgstr ""
-#: src/etc/inc/shaper.inc:3983 src/etc/inc/shaper.inc:4289
+#: src/etc/inc/shaper.inc:3951
msgid ""
-"In most cases, you should specify 0 here (or leave the field empty). A value "
-"of 0.001 means one packet in 1000 gets dropped"
+"In most cases, zero (0) should be specified here (or leave the field empty). "
+"A value of 0.001 means one packet in 1000 gets dropped."
msgstr ""
-#: src/etc/inc/shaper.inc:3988 src/etc/inc/shaper.inc:4294
+#: src/etc/inc/shaper.inc:3956 src/etc/inc/shaper.inc:4262
msgid "Queue size (slots)"
msgstr ""
-#: src/etc/inc/shaper.inc:3991 src/etc/inc/shaper.inc:4297
+#: src/etc/inc/shaper.inc:3959 src/etc/inc/shaper.inc:4265
msgid ""
-"In most cases, you should leave the field empty. All packets in this pipe "
-"are placed into a fixed-size queue first, then they are delayed by value "
+"In most cases, the field should be left empty. All packets in this pipe are "
+"placed into a fixed-size queue first, then they are delayed by value "
"specified in the Delay field, and then they are delivered to their "
"destination."
msgstr ""
-#: src/etc/inc/shaper.inc:3996 src/etc/inc/shaper.inc:4302
+#: src/etc/inc/shaper.inc:3964 src/etc/inc/shaper.inc:4270
msgid "Bucket size (slots)"
msgstr ""
-#: src/etc/inc/shaper.inc:3999 src/etc/inc/shaper.inc:4305
+#: src/etc/inc/shaper.inc:3967
msgid ""
-"In most cases, you should leave this field empty. It increases the hash size "
-"set"
+"In most cases, this field should be left empty. It increases the hash size "
+"set."
msgstr ""
-#: src/etc/inc/shaper.inc:4070
+#: src/etc/inc/shaper.inc:4038
msgid "Weight must be an integer between 1 and 100."
msgstr ""
-#: src/etc/inc/shaper.inc:4276 src/usr/local/www/system_gateways_edit.php:741
+#: src/etc/inc/shaper.inc:4244 src/usr/local/www/system_gateways_edit.php:725
msgid "Weight"
msgstr ""
-#: src/etc/inc/shaper.inc:4280
+#: src/etc/inc/shaper.inc:4248
msgid ""
"For queues under the same parent this specifies the share that a queue "
-"gets(values range from 1 to 100), you can leave it blank otherwise"
+"gets(values range from 1 to 100), it can be left blank otherwise."
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4257
+msgid ""
+"In most cases, zero (0) should be specified here (or leave the field empty). "
+"A value of 0.001 means one packet in 1000 gets dropped"
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4273
+msgid ""
+"In most cases, this field should be left empty. It increases the hash size "
+"set"
msgstr ""
-#: src/etc/inc/shaper.inc:4691
-msgid "Clone shaper on the I/F"
+#: src/etc/inc/shaper.inc:4660
+msgid "Clone Shaper to this Interface"
msgstr ""
-#: src/etc/inc/shaper.inc:4700
+#: src/etc/inc/shaper.inc:4669
#, php-format
msgid "Welcome to the %s Traffic Shaper."
msgstr ""
-#: src/etc/inc/shaper.inc:4701
+#: src/etc/inc/shaper.inc:4672
+#, php-format
+msgid "The tree on the left navigates through the %s."
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4673
+msgid "queues"
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4674
+msgid "limiters"
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4676
+#, php-format
msgid ""
-"The tree on the left helps you navigate through the queues.<br />Buttons at "
-"the bottom represent queue actions and are activated accordingly."
+"Buttons at the bottom represent %s actions and are activated accordingly."
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4677 src/usr/local/www/diag_pftop.php:131
+msgid "queue"
+msgstr ""
+
+#: src/etc/inc/shaper.inc:4678
+msgid "limiter"
msgstr ""
#: src/etc/inc/system.inc:463
@@ -6308,126 +6345,114 @@ msgstr ""
msgid "Starting syslog..."
msgstr ""
-#: src/etc/inc/system.inc:1042
+#: src/etc/inc/system.inc:1045
#, php-format
msgid "Error: cannot open syslog.conf in system_syslogd_start().%s"
msgstr ""
-#: src/etc/inc/system.inc:1106
+#: src/etc/inc/system.inc:1109
msgid "Creating SSL Certificate for this host"
msgstr ""
-#: src/etc/inc/system.inc:1110
+#: src/etc/inc/system.inc:1113
#, php-format
msgid "webConfigurator default (%s)"
msgstr ""
-#: src/etc/inc/system.inc:1122
+#: src/etc/inc/system.inc:1125
#, php-format
msgid "Error creating WebGUI Certificate: openssl library returns: %s"
msgstr ""
-#: src/etc/inc/system.inc:1131
+#: src/etc/inc/system.inc:1134
#, php-format
msgid "Generated new self-signed HTTPS certificate (%s)"
msgstr ""
-#: src/etc/inc/system.inc:1139
+#: src/etc/inc/system.inc:1142
msgid "Starting webConfigurator..."
msgstr ""
-#: src/etc/inc/system.inc:1189 src/etc/inc/system.inc:2050
-#: src/etc/inc/system.inc:2053
+#: src/etc/inc/system.inc:1192 src/etc/inc/system.inc:2025
+#: src/etc/inc/system.inc:2028
msgid "failed!"
msgstr ""
-#: src/etc/inc/system.inc:1378
+#: src/etc/inc/system.inc:1390
#, php-format
msgid "Error: cannot open certificate file in system_webgui_start().%s"
msgstr ""
-#: src/etc/inc/system.inc:1391
+#: src/etc/inc/system.inc:1403
#, php-format
msgid "Error: cannot open certificate key file in system_webgui_start().%s"
msgstr ""
-#: src/etc/inc/system.inc:1418
+#: src/etc/inc/system.inc:1430
#, php-format
msgid "Error: cannot open %s in system_generate_nginx_config().%s"
msgstr ""
-#: src/etc/inc/system.inc:1467
+#: src/etc/inc/system.inc:1479
msgid "Setting timezone..."
msgstr ""
-#: src/etc/inc/system.inc:1855
+#: src/etc/inc/system.inc:1867
#, php-format
msgid "Could not open %s/ntpd.conf for writing"
msgstr ""
-#: src/etc/inc/system.inc:1887
-msgid "Syncing system time before startup..."
-msgstr ""
-
-#: src/etc/inc/system.inc:2005
+#: src/etc/inc/system.inc:1980
#, php-format
msgid "Error: cannot open dmesg.boot in system_dmesg_save().%s"
msgstr ""
-#: src/etc/inc/system.inc:2029
+#: src/etc/inc/system.inc:2004
msgid "Setting hard disk standby... "
msgstr ""
-#: src/etc/inc/system.inc:2166
-msgid "Generic PC"
-msgstr ""
-
-#: src/etc/inc/system.inc:2170
-msgid "Generic PC (CD-ROM)"
-msgstr ""
-
-#: src/etc/inc/system.inc:2206
+#: src/etc/inc/system.inc:2216
msgid "PC Engines WRAP"
msgstr ""
-#: src/etc/inc/system.inc:2210 src/etc/inc/system.inc:2229
+#: src/etc/inc/system.inc:2220 src/etc/inc/system.inc:2239
msgid "PC Engines ALIX"
msgstr ""
-#: src/etc/inc/system.inc:2234
+#: src/etc/inc/system.inc:2244
msgid "embedded (unknown)"
msgstr ""
-#: src/etc/inc/unbound.inc:802 src/usr/local/www/services_dhcpv6.php:810
+#: src/etc/inc/unbound.inc:801 src/usr/local/www/services_dhcpv6.php:812
#: src/usr/local/www/services_unbound_acls.php:265
msgid "Deny"
msgstr ""
-#: src/etc/inc/unbound.inc:803 src/usr/local/www/services_unbound_acls.php:265
+#: src/etc/inc/unbound.inc:802 src/usr/local/www/services_unbound_acls.php:265
msgid "Refuse"
msgstr ""
-#: src/etc/inc/unbound.inc:804
+#: src/etc/inc/unbound.inc:803
msgid "Static"
msgstr ""
-#: src/etc/inc/unbound.inc:805
+#: src/etc/inc/unbound.inc:804
msgid "Transparent"
msgstr ""
-#: src/etc/inc/unbound.inc:806
+#: src/etc/inc/unbound.inc:805
msgid "Type Transparent"
msgstr ""
-#: src/etc/inc/unbound.inc:808
+#: src/etc/inc/unbound.inc:807
msgid "Inform"
msgstr ""
-#: src/etc/inc/unbound.inc:809
+#: src/etc/inc/unbound.inc:808
msgid "Inform Deny"
msgstr ""
-#: src/etc/inc/unbound.inc:810
+#: src/etc/inc/unbound.inc:809
msgid "No Default"
msgstr ""
@@ -6509,8 +6534,8 @@ msgstr ""
#: src/etc/inc/upgrade_config.inc:663
msgid ""
-"This user is associated with the UNIX root user (you should associate this "
-"privilege only with one single user)."
+"This user is associated with the UNIX root user (this privilege should only "
+"be associated with one single user)."
msgstr ""
#: src/etc/inc/upgrade_config.inc:682
@@ -6635,17 +6660,17 @@ msgid ""
"interface will be disabled. Please reconfigure the interface."
msgstr ""
-#: src/etc/inc/upgrade_config.inc:4215
+#: src/etc/inc/upgrade_config.inc:4262
#, php-format
msgid "DES is no longer supported, IPsec phase 1 item '%s' is being disabled."
msgstr ""
-#: src/etc/inc/upgrade_config.inc:4232
+#: src/etc/inc/upgrade_config.inc:4279
#, php-format
msgid "DES is no longer supported, IPsec phase 2 item '%s' is being disabled."
msgstr ""
-#: src/etc/inc/upgrade_config.inc:4277
+#: src/etc/inc/upgrade_config.inc:4335
msgid ""
"Layer 7 shaping is no longer supported. Its configuration has been removed."
msgstr ""
@@ -6656,11 +6681,11 @@ msgid "WARNING: Could not mark subsystem: %s dirty"
msgstr ""
#: src/etc/inc/util.inc:151
-msgid "WARNING: You must give a name as parameter to lock() function."
+msgid "WARNING: A name must be given as parameter to lock() function."
msgstr ""
#: src/etc/inc/util.inc:170
-msgid "WARNING: You must give a name as parameter to try_lock() function."
+msgid "WARNING: A name must be given as parameter to try_lock() function."
msgstr ""
#: src/etc/inc/util.inc:280 src/etc/inc/util.inc:305
@@ -6678,7 +6703,34 @@ msgstr ""
msgid "Could not open shared memory for read %s"
msgstr ""
-#: src/etc/inc/util.inc:1651
+#: src/etc/inc/util.inc:1080
+#, php-format
+msgid ""
+"The %1$s name must be less than 32 characters long, may not consist of only "
+"numbers, may not consist of only underscores, and may only contain the "
+"following characters: %2$s"
+msgstr ""
+
+#: src/etc/inc/util.inc:1087
+#, php-format
+msgid "The %1$s name must not be either of the reserved words %2$s or %3$s."
+msgstr ""
+
+#: src/etc/inc/util.inc:1094
+#, php-format
+msgid ""
+"The %1$s name must not be a well-known IP protocol name such as TCP, UDP, "
+"ICMP etc."
+msgstr ""
+
+#: src/etc/inc/util.inc:1101
+#, php-format
+msgid ""
+"The %1$s name must not be a well-known TCP or UDP port name such as ssh, "
+"smtp, pop3, tftp, http, openvpn etc."
+msgstr ""
+
+#: src/etc/inc/util.inc:1687
#, php-format
msgid "The command '%1$s' returned exit code '%2$d', the output was '%3$s' "
msgstr ""
@@ -6790,109 +6842,109 @@ msgstr ""
msgid "Syncing vouchers"
msgstr ""
-#: src/etc/inc/vpn.inc:271
+#: src/etc/inc/vpn.inc:274
msgid "Configuring IPsec VPN... "
msgstr ""
-#: src/etc/inc/vpn.inc:312
+#: src/etc/inc/vpn.inc:315
#, php-format
msgid ""
"IPsec ERROR: Could not find phase 1 source for connection %s. Omitting from "
"configuration file."
msgstr ""
-#: src/etc/inc/vpn.inc:341
+#: src/etc/inc/vpn.inc:344
#, php-format
msgid "The remote gateway %s already exists on another phase 1 entry"
msgstr ""
-#: src/etc/inc/vpn.inc:657
+#: src/etc/inc/vpn.inc:661
#, php-format
msgid "Warning: Missing CRL data for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:662
+#: src/etc/inc/vpn.inc:666
#, php-format
msgid "Error: Cannot write IPsec CRL file for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:686
+#: src/etc/inc/vpn.inc:690
#, php-format
msgid "Error: Invalid phase1 certificate reference for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:704
+#: src/etc/inc/vpn.inc:708
#, php-format
msgid "Error: Cannot write phase1 key file for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:711
+#: src/etc/inc/vpn.inc:715
#, php-format
msgid "Error: Cannot write phase1 certificate file for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:776
+#: src/etc/inc/vpn.inc:780
#, php-format
msgid "Error: Invalid certificate hash info for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:781
+#: src/etc/inc/vpn.inc:785
#, php-format
msgid "Error: Cannot write IPsec CA file for %s"
msgstr ""
-#: src/etc/inc/vpn.inc:1406
+#: src/etc/inc/vpn.inc:1414
#, php-format
msgid "No phase2 specifications for tunnel with REQID = %s"
msgstr ""
-#: src/etc/inc/vpn.inc:1524
+#: src/etc/inc/vpn.inc:1533
#, php-format
msgid "Ignoring IPsec reload since there are no tunnels on interface %s"
msgstr ""
-#: src/etc/inc/vpn.inc:1530
+#: src/etc/inc/vpn.inc:1539
msgid "Forcefully reloading IPsec"
msgstr ""
-#: src/etc/inc/vpn.inc:1580
+#: src/etc/inc/vpn.inc:1589
msgid "Configuring PPPoE Server service... "
msgstr ""
-#: src/etc/inc/vpn.inc:1605
+#: src/etc/inc/vpn.inc:1614
#, php-format
msgid "Error: cannot open mpd.conf in vpn_pppoe_configure()."
msgstr ""
-#: src/etc/inc/vpn.inc:1727
+#: src/etc/inc/vpn.inc:1736
#, php-format
msgid "Error: cannot open mpd.links in vpn_pppoe_configure()."
msgstr ""
-#: src/etc/inc/vpn.inc:1754
+#: src/etc/inc/vpn.inc:1763
#, php-format
msgid "Error: cannot open mpd.secret in vpn_pppoe_configure()."
msgstr ""
-#: src/etc/inc/vpn.inc:1788
+#: src/etc/inc/vpn.inc:1797
msgid "done"
msgstr ""
-#: src/etc/inc/vpn.inc:1810
+#: src/etc/inc/vpn.inc:1819
msgid "Configuring l2tp VPN service... "
msgstr ""
-#: src/etc/inc/vpn.inc:1849
+#: src/etc/inc/vpn.inc:1858
#, php-format
msgid "Error: cannot open mpd.conf in vpn_l2tp_configure()."
msgstr ""
-#: src/etc/inc/vpn.inc:1952
+#: src/etc/inc/vpn.inc:1961
#, php-format
msgid "Error: cannot open mpd.links in vpn_l2tp_configure()."
msgstr ""
-#: src/etc/inc/vpn.inc:1979
+#: src/etc/inc/vpn.inc:1988
#, php-format
msgid "Error: cannot open mpd.secret in vpn_l2tp_configure()."
msgstr ""
@@ -7073,13 +7125,51 @@ msgid "no info"
msgstr ""
#: src/usr/local/www/classes/Form/Section.class.php:85
-#: src/usr/local/www/diag_gmirror.php:88 src/usr/local/www/diag_gmirror.php:231
+#: src/usr/local/www/diag_gmirror.php:88 src/usr/local/www/diag_gmirror.php:232
+#: src/usr/local/www/diag_gmirror.php:234
+#: src/usr/local/www/pkg_mgr_install.php:348
+#: src/usr/local/www/pkg_mgr_install.php:350
+#: src/usr/local/www/pkg_mgr_install.php:359
+#: src/usr/local/www/pkg_mgr_install.php:361
msgid "Confirm"
msgstr ""
+#: src/usr/local/www/classes/Form.class.php:45
+#: src/usr/local/www/diag_confbak.php:207 src/usr/local/www/diag_edit.php:157
+#: src/usr/local/www/diag_edit.php:159 src/usr/local/www/firewall_nat.php:487
+#: src/usr/local/www/firewall_nat.php:501
+#: src/usr/local/www/firewall_nat_1to1.php:282
+#: src/usr/local/www/firewall_nat_npt.php:271
+#: src/usr/local/www/firewall_nat_out.php:540
+#: src/usr/local/www/firewall_rules.php:853
+#: src/usr/local/www/firewall_rules.php:904
+#: src/usr/local/www/interfaces_assign.php:606 src/usr/local/www/pkg.php:627
+#: src/usr/local/www/pkg_edit.php:623
+#: src/usr/local/www/services_igmpproxy.php:172
+#: src/usr/local/www/services_igmpproxy.php:174
+#: src/usr/local/www/status_lb_pool.php:274
+#: src/usr/local/www/status_lb_pool.php:276
+#: src/usr/local/www/status_logs_common.inc:973
+#: src/usr/local/www/system_advanced_sysctl.php:139
+#: src/usr/local/www/system_authservers.php:114
+#: src/usr/local/www/system_camanager.php:353
+#: src/usr/local/www/system_camanager.php:383
+#: src/usr/local/www/system_certmanager.php:253
+#: src/usr/local/www/system_certmanager.php:561
+#: src/usr/local/www/system_certmanager.php:591
+#: src/usr/local/www/system_crlmanager.php:295
+#: src/usr/local/www/system_crlmanager.php:379
+#: src/usr/local/www/widgets/widgets/log.widget.php:296
+#: src/usr/local/www/widgets/widgets/rss.widget.php:190
+#: src/usr/local/www/widgets/widgets/services_status.widget.php:169
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:273
+#: src/usr/local/www/widgets/widgets/traffic_graphs.widget.php:198
+msgid "Save"
+msgstr ""
+
#: src/usr/local/www/crash_reporter.php:90 src/usr/local/www/diag_arp.php:286
#: src/usr/local/www/diag_authentication.php:103
-#: src/usr/local/www/diag_backup.php:596 src/usr/local/www/diag_command.php:125
+#: src/usr/local/www/diag_backup.php:596 src/usr/local/www/diag_command.php:124
#: src/usr/local/www/diag_confbak.php:135
#: src/usr/local/www/diag_defaults.php:73 src/usr/local/www/diag_dns.php:63
#: src/usr/local/www/diag_dump_states.php:108
@@ -7087,7 +7177,7 @@ msgstr ""
#: src/usr/local/www/diag_edit.php:65 src/usr/local/www/diag_gmirror.php:67
#: src/usr/local/www/diag_halt.php:78
#: src/usr/local/www/diag_limiter_info.php:65
-#: src/usr/local/www/diag_nanobsd.php:74 src/usr/local/www/diag_ndp.php:128
+#: src/usr/local/www/diag_nanobsd.php:74 src/usr/local/www/diag_ndp.php:129
#: src/usr/local/www/diag_packet_capture.php:118
#: src/usr/local/www/diag_pf_info.php:65 src/usr/local/www/diag_pftop.php:65
#: src/usr/local/www/diag_ping.php:68 src/usr/local/www/diag_reboot.php:76
@@ -7097,7 +7187,7 @@ msgstr ""
#: src/usr/local/www/diag_states_summary.php:221
#: src/usr/local/www/diag_system_activity.php:65
#: src/usr/local/www/diag_tables.php:64 src/usr/local/www/diag_testport.php:71
-#: src/usr/local/www/diag_traceroute.php:70 src/usr/local/www/head.inc:596
+#: src/usr/local/www/diag_traceroute.php:70 src/usr/local/www/head.inc:612
msgid "Diagnostics"
msgstr ""
@@ -7126,44 +7216,43 @@ msgid "Could not locate any crash data."
msgstr ""
#: src/usr/local/www/crash_reporter.php:153
-msgid "Unfortunately We Have Detected a Programming Bug"
+msgid "Unfortunately a Programming Bug has been detected"
msgstr ""
#: src/usr/local/www/crash_reporter.php:157
msgid ""
-"Would you like to submit the programming debug logs to the pfSense "
-"developers for inspection?"
+"The programming debug logs can be submitted to the pfSense developers for "
+"inspection."
msgstr ""
#: src/usr/local/www/crash_reporter.php:158
msgid ""
-"Please double check the contents to ensure you are comfortable sending this "
-"information before clicking Yes."
+"Please double check the contents to ensure this information is acceptable to "
+"disclose before submitting."
msgstr ""
-#: src/usr/local/www/crash_reporter.php:164
+#: src/usr/local/www/crash_reporter.php:167
#: src/usr/local/www/diag_defaults.php:77
-#: src/usr/local/www/diag_defaults.php:105 src/usr/local/www/pkg.php:509
+#: src/usr/local/www/diag_defaults.php:105 src/usr/local/www/pkg.php:513
msgid "Yes"
msgstr ""
-#: src/usr/local/www/crash_reporter.php:164
+#: src/usr/local/www/crash_reporter.php:167
msgid "Submit this to the developers for inspection"
msgstr ""
-#: src/usr/local/www/crash_reporter.php:165
+#: src/usr/local/www/crash_reporter.php:171
#: src/usr/local/www/diag_defaults.php:68
-#: src/usr/local/www/diag_defaults.php:106 src/usr/local/www/diag_halt.php:106
-#: src/usr/local/www/diag_pf_info.php:67 src/usr/local/www/diag_reboot.php:147
-#: src/usr/local/www/pkg.php:507
+#: src/usr/local/www/diag_defaults.php:109
+#: src/usr/local/www/diag_pf_info.php:67 src/usr/local/www/pkg.php:511
msgid "No"
msgstr ""
-#: src/usr/local/www/crash_reporter.php:165
-msgid "Just delete the crash report and take me back to the Dashboard"
+#: src/usr/local/www/crash_reporter.php:171
+msgid "Just delete the crash report and return to the Dashboard"
msgstr ""
-#: src/usr/local/www/diag_arp.php:286 src/usr/local/www/diag_arp.php:337
+#: src/usr/local/www/diag_arp.php:286 src/usr/local/www/diag_arp.php:338
#: src/usr/local/www/head.inc:365
msgid "ARP Table"
msgstr ""
@@ -7172,31 +7261,31 @@ msgstr ""
msgid " Loading, please wait..."
msgstr ""
-#: src/usr/local/www/diag_arp.php:344
+#: src/usr/local/www/diag_arp.php:345
#: src/usr/local/www/diag_dump_states.php:163
-#: src/usr/local/www/diag_dump_states.php:202
-#: src/usr/local/www/diag_ndp.php:143
-#: src/usr/local/www/diag_packet_capture.php:301
+#: src/usr/local/www/diag_dump_states.php:212
+#: src/usr/local/www/diag_ndp.php:144
+#: src/usr/local/www/diag_packet_capture.php:313
#: src/usr/local/www/firewall_nat.php:238
#: src/usr/local/www/firewall_nat_1to1.php:183
#: src/usr/local/www/firewall_nat_1to1_edit.php:152
#: src/usr/local/www/firewall_nat_1to1_edit.php:155
-#: src/usr/local/www/firewall_nat_1to1_edit.php:446
+#: src/usr/local/www/firewall_nat_1to1_edit.php:443
#: src/usr/local/www/firewall_nat_edit.php:245
#: src/usr/local/www/firewall_nat_edit.php:248
-#: src/usr/local/www/firewall_nat_edit.php:711
+#: src/usr/local/www/firewall_nat_edit.php:709
#: src/usr/local/www/firewall_nat_npt.php:183
#: src/usr/local/www/firewall_nat_npt_edit.php:133
#: src/usr/local/www/firewall_nat_npt_edit.php:232
#: src/usr/local/www/firewall_nat_out.php:311
-#: src/usr/local/www/firewall_nat_out.php:562
-#: src/usr/local/www/firewall_nat_out_edit.php:181
+#: src/usr/local/www/firewall_nat_out.php:564
+#: src/usr/local/www/firewall_nat_out_edit.php:184
#: src/usr/local/www/firewall_nat_out_edit.php:493
-#: src/usr/local/www/firewall_rules_edit.php:1191
-#: src/usr/local/www/firewall_rules_edit.php:1199
+#: src/usr/local/www/firewall_rules_edit.php:1207
+#: src/usr/local/www/firewall_rules_edit.php:1215
#: src/usr/local/www/firewall_virtual_ip.php:296
-#: src/usr/local/www/firewall_virtual_ip_edit.php:392
-#: src/usr/local/www/interfaces_assign.php:539
+#: src/usr/local/www/firewall_virtual_ip_edit.php:401
+#: src/usr/local/www/interfaces_assign.php:544
#: src/usr/local/www/interfaces_bridge.php:136
#: src/usr/local/www/interfaces_gif.php:131
#: src/usr/local/www/interfaces_gre.php:131
@@ -7205,7 +7294,7 @@ msgstr ""
#: src/usr/local/www/interfaces_qinq.php:143
#: src/usr/local/www/interfaces_vlan.php:140
#: src/usr/local/www/interfaces_wireless.php:133
-#: src/usr/local/www/services_captiveportal.php:246
+#: src/usr/local/www/services_captiveportal.php:247
#: src/usr/local/www/services_dhcp_relay.php:111
#: src/usr/local/www/services_dhcpv6_relay.php:112
#: src/usr/local/www/services_dyndns.php:120
@@ -7216,11 +7305,11 @@ msgstr ""
#: src/usr/local/www/services_rfc2136.php:113
#: src/usr/local/www/services_rfc2136_edit.php:210
#: src/usr/local/www/services_wol.php:173
-#: src/usr/local/www/services_wol.php:200
+#: src/usr/local/www/services_wol.php:208
#: src/usr/local/www/services_wol_edit.php:106
#: src/usr/local/www/services_wol_edit.php:159
-#: src/usr/local/www/status_dhcp_leases.php:494
-#: src/usr/local/www/status_graph.php:166
+#: src/usr/local/www/status_dhcp_leases.php:497
+#: src/usr/local/www/status_graph.php:181
#: src/usr/local/www/status_logs_common.inc:503
#: src/usr/local/www/status_logs_common.inc:535
#: src/usr/local/www/status_logs_common.inc:538
@@ -7230,39 +7319,39 @@ msgstr ""
#: src/usr/local/www/system_gateways_edit.php:142
#: src/usr/local/www/system_gateways_edit.php:621
#: src/usr/local/www/system_routes.php:278
-#: src/usr/local/www/vpn_ipsec_phase1.php:713
-#: src/usr/local/www/vpn_l2tp.php:264
+#: src/usr/local/www/vpn_ipsec_phase1.php:711
+#: src/usr/local/www/vpn_l2tp.php:261
#: src/usr/local/www/vpn_openvpn_client.php:490
#: src/usr/local/www/vpn_openvpn_server.php:680
#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:74
msgid "Interface"
msgstr ""
-#: src/usr/local/www/diag_arp.php:346 src/usr/local/www/diag_ndp.php:141
-#: src/usr/local/www/services_captiveportal_mac.php:209
-#: src/usr/local/www/services_captiveportal_mac_edit.php:131
-#: src/usr/local/www/services_dhcp.php:1316
+#: src/usr/local/www/diag_arp.php:347 src/usr/local/www/diag_ndp.php:142
+#: src/usr/local/www/services_captiveportal_mac.php:210
+#: src/usr/local/www/services_captiveportal_mac_edit.php:132
+#: src/usr/local/www/services_dhcp.php:1330
#: src/usr/local/www/services_wol.php:180
-#: src/usr/local/www/services_wol.php:201
+#: src/usr/local/www/services_wol.php:209
#: src/usr/local/www/services_wol_edit.php:106
#: src/usr/local/www/services_wol_edit.php:166
#: src/usr/local/www/status_captiveportal.php:186
#: src/usr/local/www/status_dhcp_leases.php:380
#: src/usr/local/www/status_dhcpv6_leases.php:460
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:130
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:131
msgid "MAC address"
msgstr ""
-#: src/usr/local/www/diag_arp.php:347 src/usr/local/www/diag_dns.php:227
-#: src/usr/local/www/diag_ndp.php:142 src/usr/local/www/diag_ping.php:176
+#: src/usr/local/www/diag_arp.php:348 src/usr/local/www/diag_dns.php:231
+#: src/usr/local/www/diag_ndp.php:143 src/usr/local/www/diag_ping.php:164
#: src/usr/local/www/diag_testport.php:254
-#: src/usr/local/www/diag_traceroute.php:164
-#: src/usr/local/www/interfaces.php:1926
-#: src/usr/local/www/services_captiveportal_hostname.php:150
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:219
-#: src/usr/local/www/services_dhcp.php:1318
-#: src/usr/local/www/services_dhcp_edit.php:464
-#: src/usr/local/www/services_dhcpv6.php:1004
+#: src/usr/local/www/diag_traceroute.php:152
+#: src/usr/local/www/interfaces.php:1942
+#: src/usr/local/www/services_captiveportal_hostname.php:151
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:218
+#: src/usr/local/www/services_dhcp.php:1332
+#: src/usr/local/www/services_dhcp_edit.php:466
+#: src/usr/local/www/services_dhcpv6.php:1018
#: src/usr/local/www/services_dhcpv6_edit.php:267
#: src/usr/local/www/services_dyndns.php:122
#: src/usr/local/www/services_dyndns_edit.php:128
@@ -7273,21 +7362,21 @@ msgstr ""
#: src/usr/local/www/services_rfc2136_edit.php:217
#: src/usr/local/www/status_dhcp_leases.php:381
#: src/usr/local/www/status_dhcpv6_leases.php:461
-#: src/usr/local/www/system.php:143 src/usr/local/www/system.php:376
+#: src/usr/local/www/system.php:144 src/usr/local/www/system.php:380
#: src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php:130
msgid "Hostname"
msgstr ""
-#: src/usr/local/www/diag_arp.php:389
+#: src/usr/local/www/diag_arp.php:390
msgid "Local IPv6 peers use "
msgstr ""
-#: src/usr/local/www/diag_arp.php:389
+#: src/usr/local/www/diag_arp.php:390
msgid "NDP"
msgstr ""
-#: src/usr/local/www/diag_arp.php:389
-msgid " instead of ARP"
+#: src/usr/local/www/diag_arp.php:390
+msgid " instead of ARP."
msgstr ""
#: src/usr/local/www/diag_authentication.php:72
@@ -7321,7 +7410,7 @@ msgstr ""
#: src/usr/local/www/diag_authentication.php:103
#: src/usr/local/www/guiconfig.inc:189 src/usr/local/www/head.inc:366
-#: src/usr/local/www/services_captiveportal.php:719
+#: src/usr/local/www/services_captiveportal.php:728
msgid "Authentication"
msgstr ""
@@ -7330,12 +7419,18 @@ msgid "Authentication Test"
msgstr ""
#: src/usr/local/www/diag_authentication.php:125
-#: src/usr/local/www/system_usermanager_settings.php:175
+#: src/usr/local/www/system_usermanager_settings.php:231
msgid "Authentication Server"
msgstr ""
#: src/usr/local/www/diag_authentication.php:128
-msgid "Select the authentication server to test against"
+msgid "Select the authentication server to test against."
+msgstr ""
+
+#: src/usr/local/www/diag_authentication.php:150
+#: src/usr/local/www/diag_smart.php:404 src/usr/local/www/diag_testport.php:302
+#: src/usr/local/www/status_captiveportal_test.php:138
+msgid "Test"
msgstr ""
#: src/usr/local/www/diag_backup.php:111 src/usr/local/www/diag_backup.php:126
@@ -7362,16 +7457,19 @@ msgid "Restore configuration"
msgstr ""
#: src/usr/local/www/diag_backup.php:210
-#: src/usr/local/www/pkg_mgr_installed.php:213
+#: src/usr/local/www/pkg_mgr_installed.php:233
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:156
msgid "Reinstall"
msgstr ""
-#: src/usr/local/www/diag_backup.php:212 src/usr/local/www/diag_backup.php:739
+#: src/usr/local/www/diag_backup.php:212 src/usr/local/www/diag_backup.php:745
msgid "Clear Package Lock"
msgstr ""
-#: src/usr/local/www/diag_backup.php:214 src/usr/local/www/diag_command.php:265
+#: src/usr/local/www/diag_backup.php:214 src/usr/local/www/diag_command.php:279
+#: src/usr/local/www/services_captiveportal.php:1125
+#: src/usr/local/www/services_captiveportal.php:1159
+#: src/usr/local/www/services_captiveportal.php:1191
msgid "Download"
msgstr ""
@@ -7380,11 +7478,11 @@ msgid "Restore version"
msgstr ""
#: src/usr/local/www/diag_backup.php:229
-msgid "You must supply and confirm the password for encryption."
+msgid "A password for encryption must be supplied and confirmed."
msgstr ""
#: src/usr/local/www/diag_backup.php:304
-msgid "You must supply and confirm the password for decryption."
+msgid "A password for decryption must be supplied and confirmed."
msgstr ""
#: src/usr/local/www/diag_backup.php:314
@@ -7404,21 +7502,19 @@ msgstr ""
#: src/usr/local/www/diag_backup.php:335 src/usr/local/www/diag_backup.php:338
msgid ""
-"You have selected to restore an area but we could not locate the correct xml "
-"tag."
+"An area to restore was selected but the correct xml tag could not be located."
msgstr ""
#: src/usr/local/www/diag_backup.php:350
msgid ""
-"The configuration area has been restored. You may need to reboot the "
-"firewall."
+"The configuration area has been restored. The firewall may need to be "
+"rebooted."
msgstr ""
#: src/usr/local/www/diag_backup.php:355
#, php-format
msgid ""
-"You have selected to restore the full configuration but we could not locate "
-"a %s tag."
+"A full configuration restore was selected but a %s tag could not be located."
msgstr ""
#: src/usr/local/www/diag_backup.php:373
@@ -7439,7 +7535,7 @@ msgstr ""
#: src/usr/local/www/diag_backup.php:532
msgid ""
-"XXX - this feature may hose your config (do NOT backrev configs!) - billm"
+"XXX - this feature may hose the config (do NOT backrev configs!) - billm"
msgstr ""
#: src/usr/local/www/diag_backup.php:541
@@ -7467,10 +7563,10 @@ msgstr ""
#: src/usr/local/www/diag_backup.php:562
#: src/usr/local/www/services_dhcpv6.php:509
-#: src/usr/local/www/services_dhcpv6.php:589
+#: src/usr/local/www/services_dhcpv6.php:587
#: src/usr/local/www/services_dhcpv6.php:602
#: src/usr/local/www/services_dhcpv6_edit.php:234
-#: src/usr/local/www/services_router_advertisements.php:288
+#: src/usr/local/www/services_router_advertisements.php:290
msgid "DHCPv6 Server"
msgstr ""
@@ -7479,30 +7575,30 @@ msgid "Firewall Rules"
msgstr ""
#: src/usr/local/www/diag_backup.php:564 src/usr/local/www/head.inc:330
-#: src/usr/local/www/interfaces.php:1637
+#: src/usr/local/www/interfaces.php:1646
#: src/usr/local/www/interfaces_assign.php:67
#: src/usr/local/www/interfaces_bridge.php:109
-#: src/usr/local/www/interfaces_bridge_edit.php:403
+#: src/usr/local/www/interfaces_bridge_edit.php:418
#: src/usr/local/www/interfaces_gif.php:103
-#: src/usr/local/www/interfaces_gif_edit.php:195
+#: src/usr/local/www/interfaces_gif_edit.php:199
#: src/usr/local/www/interfaces_gre.php:104
-#: src/usr/local/www/interfaces_gre_edit.php:189
+#: src/usr/local/www/interfaces_gre_edit.php:195
#: src/usr/local/www/interfaces_groups.php:88
#: src/usr/local/www/interfaces_groups_edit.php:67
#: src/usr/local/www/interfaces_lagg.php:110
-#: src/usr/local/www/interfaces_lagg_edit.php:241
+#: src/usr/local/www/interfaces_lagg_edit.php:257
#: src/usr/local/www/interfaces_ppps.php:106
-#: src/usr/local/www/interfaces_ppps_edit.php:462
+#: src/usr/local/www/interfaces_ppps_edit.php:472
#: src/usr/local/www/interfaces_qinq.php:114
#: src/usr/local/www/interfaces_qinq_edit.php:63
#: src/usr/local/www/interfaces_vlan.php:109
#: src/usr/local/www/interfaces_vlan_edit.php:205
#: src/usr/local/www/interfaces_wireless.php:105
#: src/usr/local/www/interfaces_wireless_edit.php:201
-#: src/usr/local/www/services_captiveportal.php:584
+#: src/usr/local/www/services_captiveportal.php:585
#: src/usr/local/www/services_captiveportal_zones.php:113
#: src/usr/local/www/services_dnsmasq.php:319
-#: src/usr/local/www/status_interfaces.php:108
+#: src/usr/local/www/status_interfaces.php:111
#: src/usr/local/www/status_logs_filter_summary.php:118
#: src/usr/local/www/widgets/include/interfaces.inc:3
msgid "Interfaces"
@@ -7515,20 +7611,20 @@ msgstr ""
#: src/usr/local/www/diag_backup.php:566 src/usr/local/www/firewall_nat.php:206
#: src/usr/local/www/firewall_nat_1to1.php:155
#: src/usr/local/www/firewall_nat_1to1_edit.php:281
-#: src/usr/local/www/firewall_nat_edit.php:653
+#: src/usr/local/www/firewall_nat_edit.php:654
#: src/usr/local/www/firewall_nat_npt.php:155
#: src/usr/local/www/firewall_nat_npt_edit.php:212
#: src/usr/local/www/firewall_nat_out.php:239
-#: src/usr/local/www/firewall_nat_out_edit.php:393
+#: src/usr/local/www/firewall_nat_out_edit.php:396
#: src/usr/local/www/head.inc:276
msgid "NAT"
msgstr ""
#: src/usr/local/www/diag_backup.php:568 src/usr/local/www/head.inc:247
-#: src/usr/local/www/head.inc:594 src/usr/local/www/pkg_mgr.php:72
-#: src/usr/local/www/pkg_mgr.php:163 src/usr/local/www/pkg_mgr_install.php:244
+#: src/usr/local/www/head.inc:610 src/usr/local/www/pkg_mgr.php:72
+#: src/usr/local/www/pkg_mgr.php:163 src/usr/local/www/pkg_mgr_install.php:251
#: src/usr/local/www/pkg_mgr_installed.php:68
-#: src/usr/local/www/pkg_mgr_installed.php:75
+#: src/usr/local/www/pkg_mgr_installed.php:242
msgid "Package Manager"
msgstr ""
@@ -7544,43 +7640,43 @@ msgstr ""
msgid "Syslog"
msgstr ""
-#: src/usr/local/www/diag_backup.php:572 src/usr/local/www/head.inc:594
+#: src/usr/local/www/diag_backup.php:572 src/usr/local/www/head.inc:610
#: src/usr/local/www/pkg_mgr.php:72 src/usr/local/www/pkg_mgr.php:163
-#: src/usr/local/www/pkg_mgr_install.php:240
-#: src/usr/local/www/pkg_mgr_install.php:244
+#: src/usr/local/www/pkg_mgr_install.php:247
+#: src/usr/local/www/pkg_mgr_install.php:251
#: src/usr/local/www/pkg_mgr_installed.php:68
-#: src/usr/local/www/pkg_mgr_installed.php:75
+#: src/usr/local/www/pkg_mgr_installed.php:242
#: src/usr/local/www/status_logs.php:129
#: src/usr/local/www/status_logs_common.inc:121
#: src/usr/local/www/status_logs_settings.php:233
-#: src/usr/local/www/system.php:113 src/usr/local/www/system.php:358
-#: src/usr/local/www/system.php:373
-#: src/usr/local/www/system_advanced_admin.php:316
+#: src/usr/local/www/system.php:114 src/usr/local/www/system.php:362
+#: src/usr/local/www/system.php:377
+#: src/usr/local/www/system_advanced_admin.php:318
#: src/usr/local/www/system_advanced_firewall.php:404
-#: src/usr/local/www/system_advanced_misc.php:304
+#: src/usr/local/www/system_advanced_misc.php:320
#: src/usr/local/www/system_advanced_network.php:173
-#: src/usr/local/www/system_advanced_notifications.php:216
+#: src/usr/local/www/system_advanced_notifications.php:215
#: src/usr/local/www/system_advanced_sysctl.php:166
-#: src/usr/local/www/system_authservers.php:377
+#: src/usr/local/www/system_authservers.php:443
#: src/usr/local/www/system_camanager.php:351
#: src/usr/local/www/system_certmanager.php:559
#: src/usr/local/www/system_crlmanager.php:293
-#: src/usr/local/www/system_gateway_groups.php:124
-#: src/usr/local/www/system_gateway_groups_edit.php:180
+#: src/usr/local/www/system_gateway_groups.php:138
+#: src/usr/local/www/system_gateway_groups_edit.php:181
#: src/usr/local/www/system_gateways.php:245
#: src/usr/local/www/system_gateways_edit.php:572
-#: src/usr/local/www/system_groupmanager.php:274
+#: src/usr/local/www/system_groupmanager.php:288
#: src/usr/local/www/system_groupmanager_addprivs.php:69
#: src/usr/local/www/system_hasync.php:137
#: src/usr/local/www/system_routes.php:246
#: src/usr/local/www/system_routes_edit.php:257
-#: src/usr/local/www/system_update_settings.php:99
-#: src/usr/local/www/system_usermanager.php:467
+#: src/usr/local/www/system_update_settings.php:111
+#: src/usr/local/www/system_usermanager.php:468
#: src/usr/local/www/system_usermanager_addprivs.php:70
#: src/usr/local/www/system_usermanager_passwordmg.php:67
-#: src/usr/local/www/system_usermanager_settings.php:75
+#: src/usr/local/www/system_usermanager_settings.php:140
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:180
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:277
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:280
msgid "System"
msgstr ""
@@ -7618,17 +7714,17 @@ msgstr ""
#: src/usr/local/www/diag_backup.php:581
#: src/usr/local/www/firewall_aliases.php:192
-#: src/usr/local/www/pkg_edit.php:1198
+#: src/usr/local/www/pkg_edit.php:1214
#: src/usr/local/www/services_ntpd_gps.php:205
-#: src/usr/local/www/services_unbound.php:248
-#: src/usr/local/www/status_graph.php:185 src/usr/local/www/diag_smart.php:354
+#: src/usr/local/www/services_unbound.php:254
+#: src/usr/local/www/status_graph.php:200 src/usr/local/www/diag_smart.php:377
msgid "All"
msgstr ""
#: src/usr/local/www/diag_backup.php:596 src/usr/local/www/diag_backup.php:619
#: src/usr/local/www/diag_confbak.php:135
#: src/usr/local/www/diag_confbak.php:143 src/usr/local/www/head.inc:367
-#: src/usr/local/www/head.inc:596
+#: src/usr/local/www/head.inc:612
msgid "Backup & Restore"
msgstr ""
@@ -7661,7 +7757,7 @@ msgstr ""
msgid "Skip RRD data"
msgstr ""
-#: src/usr/local/www/diag_backup.php:651 src/usr/local/www/diag_backup.php:696
+#: src/usr/local/www/diag_backup.php:651 src/usr/local/www/diag_backup.php:698
msgid "Encryption"
msgstr ""
@@ -7669,47 +7765,47 @@ msgstr ""
msgid "Download configuration as XML"
msgstr ""
-#: src/usr/local/www/diag_backup.php:673
+#: src/usr/local/www/diag_backup.php:675
msgid "Restore Backup"
msgstr ""
-#: src/usr/local/www/diag_backup.php:677
+#: src/usr/local/www/diag_backup.php:679
#, php-format
msgid ""
"Open a %s configuration XML file and click the button below to restore the "
"configuration."
msgstr ""
-#: src/usr/local/www/diag_backup.php:682
+#: src/usr/local/www/diag_backup.php:684
msgid "Restore area"
msgstr ""
-#: src/usr/local/www/diag_backup.php:689
+#: src/usr/local/www/diag_backup.php:691
msgid "Configuration file"
msgstr ""
-#: src/usr/local/www/diag_backup.php:713
+#: src/usr/local/www/diag_backup.php:715
msgid "Restore Configuration"
msgstr ""
-#: src/usr/local/www/diag_backup.php:714
+#: src/usr/local/www/diag_backup.php:718
msgid "The firewall will reboot after restoring the configuration."
msgstr ""
-#: src/usr/local/www/diag_backup.php:721
+#: src/usr/local/www/diag_backup.php:725
msgid "Package Functions"
msgstr ""
-#: src/usr/local/www/diag_backup.php:728
+#: src/usr/local/www/diag_backup.php:732
msgid "Reinstall Packages"
msgstr ""
-#: src/usr/local/www/diag_backup.php:729
+#: src/usr/local/www/diag_backup.php:735
msgid ""
"Click this button to reinstall all system packages. This may take a while."
msgstr ""
-#: src/usr/local/www/diag_backup.php:740
+#: src/usr/local/www/diag_backup.php:748
msgid ""
"Click this button to clear the package lock if a package fails to reinstall "
"properly after an upgrade."
@@ -7720,65 +7816,85 @@ msgstr ""
msgid "Uploaded file to /tmp/%s."
msgstr ""
-#: src/usr/local/www/diag_command.php:125 src/usr/local/www/head.inc:368
+#: src/usr/local/www/diag_command.php:124 src/usr/local/www/head.inc:368
msgid "Command Prompt"
msgstr ""
-#: src/usr/local/www/diag_command.php:186
+#: src/usr/local/www/diag_command.php:185
msgid "Nothing to recall"
msgstr ""
-#: src/usr/local/www/diag_command.php:221
+#: src/usr/local/www/diag_command.php:220 src/usr/local/www/diag_edit.php:133
msgid ""
"The capabilities offered here can be dangerous. No support is available. Use "
"them at your own risk!"
msgstr ""
-#: src/usr/local/www/diag_command.php:221
+#: src/usr/local/www/diag_command.php:220 src/usr/local/www/diag_edit.php:133
msgid "Advanced Users Only"
msgstr ""
-#: src/usr/local/www/diag_command.php:226
+#: src/usr/local/www/diag_command.php:225
#, php-format
msgid "Shell Output - %s"
msgstr ""
-#: src/usr/local/www/diag_command.php:245
+#: src/usr/local/www/diag_command.php:244
msgid "Execute Shell Command"
msgstr ""
#: src/usr/local/www/diag_command.php:252
-#: src/usr/local/www/diag_command.php:328
+msgid "Recall Previous Command"
+msgstr ""
+
+#: src/usr/local/www/diag_command.php:255
+msgid "Execute the entered command"
+msgstr ""
+
+#: src/usr/local/www/diag_command.php:257
+#: src/usr/local/www/diag_command.php:348
msgid "Execute"
msgstr ""
-#: src/usr/local/www/diag_command.php:254 src/usr/local/www/pkg_mgr.php:197
-#: src/usr/local/www/system_groupmanager_addprivs.php:227
+#: src/usr/local/www/diag_command.php:259
+msgid "Recall Next Command"
+msgstr ""
+
+#: src/usr/local/www/diag_command.php:262
+msgid "Clear command entry"
+msgstr ""
+
+#: src/usr/local/www/diag_command.php:264 src/usr/local/www/pkg_mgr.php:197
+#: src/usr/local/www/system_groupmanager_addprivs.php:226
#: src/usr/local/www/system_usermanager_addprivs.php:220
-#: src/usr/local/www/widgets/widgets/services_status.widget.php:167
-#: src/usr/local/www/interfaces.php:2007
+#: src/usr/local/www/widgets/widgets/services_status.widget.php:170
+#: src/usr/local/www/interfaces.php:2023
msgid "Clear"
msgstr ""
-#: src/usr/local/www/diag_command.php:260
+#: src/usr/local/www/diag_command.php:272
msgid "Download File"
msgstr ""
-#: src/usr/local/www/diag_command.php:276
+#: src/usr/local/www/diag_command.php:291
msgid "Upload File"
msgstr ""
-#: src/usr/local/www/diag_command.php:281
-#: src/usr/local/www/services_captiveportal_filemanager.php:184
-#: src/usr/local/www/widgets/widgets/picture.widget.php:83
+#: src/usr/local/www/diag_command.php:298
+#: src/usr/local/www/services_captiveportal_filemanager.php:206
+#: src/usr/local/www/widgets/widgets/picture.widget.php:85
msgid "Upload"
msgstr ""
-#: src/usr/local/www/diag_command.php:323
+#: src/usr/local/www/diag_command.php:341
msgid "Execute PHP Commands"
msgstr ""
-#: src/usr/local/www/diag_command.php:329
+#: src/usr/local/www/diag_command.php:346
+msgid "Execute this PHP Code"
+msgstr ""
+
+#: src/usr/local/www/diag_command.php:350
msgid "Example"
msgstr ""
@@ -7798,12 +7914,12 @@ msgstr ""
#: src/usr/local/www/diag_confbak.php:86 src/usr/local/www/diag_confbak.php:93
#: src/usr/local/www/diag_confbak.php:152
-#: src/usr/local/www/diag_confbak.php:253
-#: src/usr/local/www/diag_confbak.php:264
+#: src/usr/local/www/diag_confbak.php:260
+#: src/usr/local/www/diag_confbak.php:271
#: src/usr/local/www/firewall_nat_edit.php:977
#: src/usr/local/www/firewall_nat_edit.php:984
-#: src/usr/local/www/firewall_nat_out_edit.php:673
-#: src/usr/local/www/firewall_nat_out_edit.php:680
+#: src/usr/local/www/firewall_nat_out_edit.php:672
+#: src/usr/local/www/firewall_nat_out_edit.php:679
msgid "n/j/y H:i:s"
msgstr ""
@@ -7821,25 +7937,25 @@ msgstr ""
msgid "Configuration Diff from %1$s to %2$s"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:192
+#: src/usr/local/www/diag_confbak.php:189
msgid "Saved Configurations"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:196
+#: src/usr/local/www/diag_confbak.php:193
msgid "Backup Count"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:199
+#: src/usr/local/www/diag_confbak.php:196
msgid ""
"Maximum number of old configurations to keep. By default this is 30 for a "
"full install or 5 on NanoBSD. "
msgstr ""
-#: src/usr/local/www/diag_confbak.php:204
+#: src/usr/local/www/diag_confbak.php:201
msgid "Current space used by backups"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:218
+#: src/usr/local/www/diag_confbak.php:222
msgid ""
"To view the differences between an older configuration and a newer "
"configuration, select the older configuration using the left column of radio "
@@ -7847,40 +7963,42 @@ msgid ""
"the \"Diff\" button."
msgstr ""
-#: src/usr/local/www/diag_confbak.php:237
-#: src/usr/local/www/diag_confbak.php:297
+#: src/usr/local/www/diag_confbak.php:241
+#: src/usr/local/www/diag_confbak.php:243
+#: src/usr/local/www/diag_confbak.php:305
+#: src/usr/local/www/diag_confbak.php:307
msgid "Diff"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:239
-#: src/usr/local/www/firewall_schedule_edit.php:422
+#: src/usr/local/www/diag_confbak.php:246
+#: src/usr/local/www/firewall_schedule_edit.php:417
msgid "Date"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:240 src/usr/local/www/pkg_mgr.php:100
-#: src/usr/local/www/pkg_mgr_installed.php:104
+#: src/usr/local/www/diag_confbak.php:247 src/usr/local/www/pkg_mgr.php:100
+#: src/usr/local/www/pkg_mgr_installed.php:113
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:84
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:117
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:121
msgid "Version"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:241
-#: src/usr/local/www/diag_gmirror.php:332 src/usr/local/www/diag_pftop.php:159
-#: src/usr/local/www/services_captiveportal_filemanager.php:219
+#: src/usr/local/www/diag_confbak.php:248
+#: src/usr/local/www/diag_gmirror.php:337 src/usr/local/www/diag_pftop.php:159
+#: src/usr/local/www/services_captiveportal_filemanager.php:224
msgid "Size"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:242
+#: src/usr/local/www/diag_confbak.php:249
msgid "Configuration Change"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:243
+#: src/usr/local/www/diag_confbak.php:250
#: src/usr/local/www/firewall_aliases.php:229
#: src/usr/local/www/firewall_nat.php:247
#: src/usr/local/www/firewall_nat_1to1.php:188
#: src/usr/local/www/firewall_nat_npt.php:187
#: src/usr/local/www/firewall_nat_out.php:320
-#: src/usr/local/www/firewall_rules.php:415
+#: src/usr/local/www/firewall_rules.php:418
#: src/usr/local/www/firewall_schedule.php:129
#: src/usr/local/www/firewall_virtual_ip.php:299
#: src/usr/local/www/interfaces_bridge.php:139
@@ -7894,77 +8012,88 @@ msgstr ""
#: src/usr/local/www/interfaces_wireless.php:136
#: src/usr/local/www/load_balancer_monitor.php:143
#: src/usr/local/www/load_balancer_pool.php:160
-#: src/usr/local/www/load_balancer_virtual_server.php:161
-#: src/usr/local/www/pkg_mgr_installed.php:106
+#: src/usr/local/www/load_balancer_virtual_server.php:181
+#: src/usr/local/www/pkg_mgr_installed.php:115
+#: src/usr/local/www/services_captiveportal_filemanager.php:225
+#: src/usr/local/www/services_captiveportal_hostname.php:153
+#: src/usr/local/www/services_captiveportal_ip.php:147
+#: src/usr/local/www/services_captiveportal_mac.php:212
+#: src/usr/local/www/services_captiveportal_vouchers.php:460
#: src/usr/local/www/services_captiveportal_zones.php:116
#: src/usr/local/www/services_dhcp.php:691
+#: src/usr/local/www/services_dnsmasq.php:356
+#: src/usr/local/www/services_dnsmasq.php:430
#: src/usr/local/www/services_dyndns.php:125
#: src/usr/local/www/services_igmpproxy.php:125
#: src/usr/local/www/services_pppoe.php:141
#: src/usr/local/www/services_rfc2136.php:118
-#: src/usr/local/www/services_unbound_acls.php:329
-#: src/usr/local/www/services_wol.php:203
+#: src/usr/local/www/services_unbound.php:471
+#: src/usr/local/www/services_unbound.php:547
+#: src/usr/local/www/services_unbound_acls.php:333
+#: src/usr/local/www/services_wol.php:211
+#: src/usr/local/www/status_captiveportal.php:204
#: src/usr/local/www/status_dhcp_leases.php:387
#: src/usr/local/www/status_dhcpv6_leases.php:466
#: src/usr/local/www/status_logs_filter_summary.php:117
-#: src/usr/local/www/status_services.php:133
-#: src/usr/local/www/system_authservers.php:412
+#: src/usr/local/www/status_services.php:123
+#: src/usr/local/www/system_authservers.php:478
#: src/usr/local/www/system_camanager.php:397
-#: src/usr/local/www/system_certmanager.php:1011
-#: src/usr/local/www/system_gateway_groups.php:154
+#: src/usr/local/www/system_certmanager.php:979
+#: src/usr/local/www/system_crlmanager.php:620
+#: src/usr/local/www/system_gateway_groups.php:168
#: src/usr/local/www/system_gateways.php:281
-#: src/usr/local/www/system_groupmanager.php:307
+#: src/usr/local/www/system_groupmanager.php:323
#: src/usr/local/www/system_routes.php:280
-#: src/usr/local/www/system_usermanager.php:504
+#: src/usr/local/www/system_usermanager.php:505
#: src/usr/local/www/vpn_ipsec.php:288 src/usr/local/www/vpn_ipsec_keys.php:136
#: src/usr/local/www/vpn_l2tp_users.php:131
-#: src/usr/local/www/vpn_openvpn_client.php:822
-#: src/usr/local/www/vpn_openvpn_csc.php:672
-#: src/usr/local/www/vpn_openvpn_server.php:1204
+#: src/usr/local/www/vpn_openvpn_client.php:821
+#: src/usr/local/www/vpn_openvpn_csc.php:676
+#: src/usr/local/www/vpn_openvpn_server.php:1209
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:85
msgid "Actions"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:257
+#: src/usr/local/www/diag_confbak.php:264
msgid "Current configuration"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:266
-#: src/usr/local/www/pkg_mgr_installed.php:147
-#: src/usr/local/www/status_ipsec.php:172
-#: src/usr/local/www/status_ipsec.php:182
-#: src/usr/local/www/status_ipsec.php:213
-#: src/usr/local/www/status_ipsec.php:225
-#: src/usr/local/www/status_ipsec.php:326
-#: src/usr/local/www/status_ipsec.php:348
-#: src/usr/local/www/status_ipsec.php:435
-#: src/usr/local/www/status_ipsec.php:446
-#: src/usr/local/www/status_ipsec.php:456
-#: src/usr/local/www/status_ipsec.php:466
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:258
+#: src/usr/local/www/diag_confbak.php:273
+#: src/usr/local/www/pkg_mgr_installed.php:156
+#: src/usr/local/www/status_ipsec.php:147
+#: src/usr/local/www/status_ipsec.php:156
+#: src/usr/local/www/status_ipsec.php:189
+#: src/usr/local/www/status_ipsec.php:201
+#: src/usr/local/www/status_ipsec.php:308
+#: src/usr/local/www/status_ipsec.php:330
+#: src/usr/local/www/status_ipsec.php:419
+#: src/usr/local/www/status_ipsec.php:429
+#: src/usr/local/www/status_ipsec.php:440
+#: src/usr/local/www/status_ipsec.php:449
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:270
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:129
-#: src/usr/local/www/widgets/widgets/smart_status.widget.php:93
+#: src/usr/local/www/widgets/widgets/smart_status.widget.php:96
msgid "Unknown"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:288
+#: src/usr/local/www/diag_confbak.php:295
msgid "Revert config"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:288
+#: src/usr/local/www/diag_confbak.php:295
msgid ""
-"Are you sure you want to replace the current configuration with this backup?"
+"Confirmation Required to replace the current configuration with this backup."
msgstr ""
-#: src/usr/local/www/diag_confbak.php:289
+#: src/usr/local/www/diag_confbak.php:296
msgid "Download config"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:290
+#: src/usr/local/www/diag_confbak.php:297
msgid "Delete config"
msgstr ""
-#: src/usr/local/www/diag_confbak.php:302
+#: src/usr/local/www/diag_confbak.php:314
msgid "No backups found."
msgstr ""
@@ -7975,16 +8104,17 @@ msgstr ""
#: src/usr/local/www/diag_defaults.php:78
msgid ""
"The system has been reset to factory defaults and is now rebooting. This may "
-"take a few minutes, depending on your hardware."
+"take a few minutes, depending on the hardware."
msgstr ""
#: src/usr/local/www/diag_defaults.php:88
-msgid "Are you sure you want to reset the system to the factory defaults?"
+msgid "Factory Defaults Reset"
msgstr ""
#: src/usr/local/www/diag_defaults.php:93
-#, php-format
-msgid "If you click %1$sYes%1$s the firewall will:"
+msgid ""
+"Resetting the system to factory defaults will remove all user configuration "
+"and apply the following settings:"
msgstr ""
#: src/usr/local/www/diag_defaults.php:95
@@ -8022,12 +8152,28 @@ msgstr ""
msgid "Are you sure you want to proceed?"
msgstr ""
-#: src/usr/local/www/diag_dns.php:63 src/usr/local/www/diag_dns.php:223
+#: src/usr/local/www/diag_defaults.php:105
+msgid "Perform a factory reset"
+msgstr ""
+
+#: src/usr/local/www/diag_defaults.php:107
+msgid "Factory Reset"
+msgstr ""
+
+#: src/usr/local/www/diag_defaults.php:109
+msgid "Return to the dashboard"
+msgstr ""
+
+#: src/usr/local/www/diag_defaults.php:111
+msgid "Keep Configuration"
+msgstr ""
+
+#: src/usr/local/www/diag_dns.php:63 src/usr/local/www/diag_dns.php:227
#: src/usr/local/www/head.inc:369
msgid "DNS Lookup"
msgstr ""
-#: src/usr/local/www/diag_dns.php:114
+#: src/usr/local/www/diag_dns.php:115
msgid "Created from Diagnostics-> DNS Lookup"
msgstr ""
@@ -8043,44 +8189,44 @@ msgstr ""
msgid "No record found"
msgstr ""
-#: src/usr/local/www/diag_dns.php:193 src/usr/local/www/diag_tables.php:290
-#: src/usr/local/www/interfaces.php:3060 src/usr/local/www/interfaces.php:3084
-#: src/usr/local/www/interfaces_ppps_edit.php:646
-#: src/usr/local/www/load_balancer_pool_edit.php:412
-#: src/usr/local/www/load_balancer_virtual_server.php:156
+#: src/usr/local/www/diag_dns.php:193 src/usr/local/www/diag_tables.php:294
+#: src/usr/local/www/interfaces.php:3067 src/usr/local/www/interfaces.php:3091
+#: src/usr/local/www/interfaces_ppps_edit.php:656
+#: src/usr/local/www/load_balancer_pool_edit.php:404
+#: src/usr/local/www/load_balancer_virtual_server.php:176
#: src/usr/local/www/load_balancer_virtual_server_edit.php:104
#: src/usr/local/www/load_balancer_virtual_server_edit.php:109
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:223
-#: src/usr/local/www/services_captiveportal_ip_edit.php:251
-#: src/usr/local/www/services_dhcp_edit.php:457
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:224
+#: src/usr/local/www/services_captiveportal_ip_edit.php:253
+#: src/usr/local/www/services_dhcp_edit.php:459
#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:175
#: src/usr/local/www/services_dnsmasq_edit.php:262
#: src/usr/local/www/services_pppoe_edit.php:449
#: src/usr/local/www/services_pppoe_edit.php:482
#: src/usr/local/www/services_pppoe_edit.php:553
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:162
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:166
#: src/usr/local/www/services_unbound_host_edit.php:263
-#: src/usr/local/www/status_graph.php:194
+#: src/usr/local/www/status_graph.php:209
#: src/usr/local/www/status_logs_vpn.php:173
#: src/usr/local/www/status_logs_vpn.php:424
-#: src/usr/local/www/system_advanced_notifications.php:267
+#: src/usr/local/www/system_advanced_notifications.php:266
#: src/usr/local/www/vpn_ipsec_phase2.php:716
#: src/usr/local/www/vpn_l2tp_users_edit.php:209
msgid "IP Address"
msgstr ""
-#: src/usr/local/www/diag_dns.php:194 src/usr/local/www/status_graph.php:195
-#: src/usr/local/www/system_authservers.php:411
+#: src/usr/local/www/diag_dns.php:194 src/usr/local/www/status_graph.php:210
+#: src/usr/local/www/system_authservers.php:477
msgid "Host Name"
msgstr ""
#: src/usr/local/www/diag_dns.php:197
#: src/usr/local/www/services_rfc2136.php:114
#: src/usr/local/www/services_rfc2136_edit.php:273
-#: src/usr/local/www/status_ntpd.php:199
-#: src/usr/local/www/system_certmanager.php:1057
-#: src/usr/local/www/vpn_l2tp.php:345
-#: src/usr/local/www/vpn_openvpn_client.php:820
+#: src/usr/local/www/status_ntpd.php:300
+#: src/usr/local/www/system_certmanager.php:1025
+#: src/usr/local/www/vpn_l2tp.php:342
+#: src/usr/local/www/vpn_openvpn_client.php:819
#: src/usr/local/www/widgets/widgets/load_balancer_status.widget.php:93
msgid "Server"
msgstr ""
@@ -8094,51 +8240,65 @@ msgstr ""
msgid "Host \"%s\" could not be resolved."
msgstr ""
-#: src/usr/local/www/diag_dns.php:219
-msgid "Alias was created/updated successfully."
+#: src/usr/local/www/diag_dns.php:220
+msgid "Alias was updated successfully."
msgstr ""
-#: src/usr/local/www/diag_dns.php:236
+#: src/usr/local/www/diag_dns.php:222
+msgid "Alias was created successfully."
+msgstr ""
+
+#: src/usr/local/www/diag_dns.php:239
+msgid "Update alias"
+msgstr ""
+
+#: src/usr/local/www/diag_dns.php:241
msgid "Add alias"
msgstr ""
-#: src/usr/local/www/diag_dns.php:247 src/usr/local/www/diag_ping.php:210
-#: src/usr/local/www/diag_traceroute.php:212
+#: src/usr/local/www/diag_dns.php:255
+#: src/usr/local/www/status_logs_filter_summary.php:210
+msgid "Lookup"
+msgstr ""
+
+#: src/usr/local/www/diag_dns.php:266 src/usr/local/www/diag_ping.php:206
+#: src/usr/local/www/diag_traceroute.php:208
msgid "Results"
msgstr ""
-#: src/usr/local/www/diag_dns.php:267
+#: src/usr/local/www/diag_dns.php:286
msgid "Timings"
msgstr ""
-#: src/usr/local/www/diag_dns.php:272
+#: src/usr/local/www/diag_dns.php:291
msgid "Name server"
msgstr ""
-#: src/usr/local/www/diag_dns.php:273
+#: src/usr/local/www/diag_dns.php:292
msgid "Query time"
msgstr ""
-#: src/usr/local/www/diag_dns.php:290
+#: src/usr/local/www/diag_dns.php:309
msgid "More Information"
msgstr ""
-#: src/usr/local/www/diag_dns.php:293 src/usr/local/www/diag_ping.php:68
-#: src/usr/local/www/diag_ping.php:172 src/usr/local/www/head.inc:381
+#: src/usr/local/www/diag_dns.php:312 src/usr/local/www/diag_ping.php:68
+#: src/usr/local/www/diag_ping.php:160 src/usr/local/www/diag_ping.php:195
+#: src/usr/local/www/head.inc:381
msgid "Ping"
msgstr ""
-#: src/usr/local/www/diag_dns.php:296
+#: src/usr/local/www/diag_dns.php:315
msgid ""
"NOTE: The following links are to external services, so their reliability "
"cannot be guaranteed."
msgstr ""
-#: src/usr/local/www/diag_dns.php:298
+#: src/usr/local/www/diag_dns.php:317
msgid "IP WHOIS @ DNS Stuff"
msgstr ""
-#: src/usr/local/www/diag_dns.php:299
+#: src/usr/local/www/diag_dns.php:318
msgid "IP Info @ DNS Stuff"
msgstr ""
@@ -8151,14 +8311,14 @@ msgstr ""
#: src/usr/local/www/diag_dump_states.php:108
#: src/usr/local/www/diag_dump_states.php:139
-#: src/usr/local/www/diag_dump_states.php:196
+#: src/usr/local/www/diag_dump_states.php:206
#: src/usr/local/www/diag_dump_states_sources.php:87
#: src/usr/local/www/diag_dump_states_sources.php:91
#: src/usr/local/www/diag_resetstate.php:89
#: src/usr/local/www/diag_resetstate.php:113
#: src/usr/local/www/diag_states_summary.php:181
#: src/usr/local/www/diag_states_summary.php:183
-#: src/usr/local/www/firewall_rules.php:405 src/usr/local/www/head.inc:389
+#: src/usr/local/www/firewall_rules.php:408 src/usr/local/www/head.inc:389
msgid "States"
msgstr ""
@@ -8166,7 +8326,7 @@ msgstr ""
#: src/usr/local/www/diag_dump_states_sources.php:87
#: src/usr/local/www/diag_dump_states_sources.php:92
#: src/usr/local/www/diag_resetstate.php:116
-#: src/usr/local/www/diag_resetstate.php:143
+#: src/usr/local/www/diag_resetstate.php:136
msgid "Source Tracking"
msgstr ""
@@ -8186,41 +8346,43 @@ msgstr ""
msgid "Filter expression"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:176
-#: src/usr/local/www/diag_routes.php:129 src/usr/local/www/status_graph.php:187
-#: src/usr/local/www/system_groupmanager_addprivs.php:209
-#: src/usr/local/www/system_groupmanager_addprivs.php:216
+#: src/usr/local/www/diag_dump_states.php:178
+#: src/usr/local/www/diag_dump_states_sources.php:139
+#: src/usr/local/www/diag_routes.php:129 src/usr/local/www/pkg.php:381
+#: src/usr/local/www/status_graph.php:202
+#: src/usr/local/www/system_groupmanager_addprivs.php:208
+#: src/usr/local/www/system_groupmanager_addprivs.php:215
#: src/usr/local/www/system_usermanager_addprivs.php:202
#: src/usr/local/www/system_usermanager_addprivs.php:209
msgid "Filter"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:184
+#: src/usr/local/www/diag_dump_states.php:191
msgid "Kill States"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:187
+#: src/usr/local/www/diag_dump_states.php:197
msgid "Kill filtered states"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:189
+#: src/usr/local/www/diag_dump_states.php:199
msgid "Remove all states to and from the filtered address"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:203
-#: src/usr/local/www/diag_packet_capture.php:327
+#: src/usr/local/www/diag_dump_states.php:213
+#: src/usr/local/www/diag_packet_capture.php:340
#: src/usr/local/www/diag_states_summary.php:182
#: src/usr/local/www/firewall_nat.php:239
#: src/usr/local/www/firewall_nat_edit.php:245
#: src/usr/local/www/firewall_nat_edit.php:248
-#: src/usr/local/www/firewall_nat_edit.php:720
-#: src/usr/local/www/firewall_nat_out_edit.php:181
+#: src/usr/local/www/firewall_nat_edit.php:718
+#: src/usr/local/www/firewall_nat_out_edit.php:184
#: src/usr/local/www/firewall_nat_out_edit.php:502
-#: src/usr/local/www/firewall_rules.php:406
-#: src/usr/local/www/firewall_rules_edit.php:433
-#: src/usr/local/www/firewall_rules_edit.php:1238
-#: src/usr/local/www/interfaces_bridge_edit.php:561
-#: src/usr/local/www/load_balancer_virtual_server.php:155
+#: src/usr/local/www/firewall_rules.php:409
+#: src/usr/local/www/firewall_rules_edit.php:449
+#: src/usr/local/www/firewall_rules_edit.php:1254
+#: src/usr/local/www/interfaces_bridge_edit.php:573
+#: src/usr/local/www/load_balancer_virtual_server.php:175
#: src/usr/local/www/services_rfc2136_edit.php:280
#: src/usr/local/www/status_ipsec_sad.php:100
#: src/usr/local/www/status_ipsec_spd.php:94
@@ -8228,44 +8390,44 @@ msgstr ""
#: src/usr/local/www/status_logs_filter.php:196
#: src/usr/local/www/status_logs_filter_dynamic.php:427
#: src/usr/local/www/status_upnp.php:104
-#: src/usr/local/www/system_advanced_admin.php:340
-#: src/usr/local/www/system_advanced_admin.php:344
-#: src/usr/local/www/system_advanced_admin.php:352
+#: src/usr/local/www/system_advanced_admin.php:342
+#: src/usr/local/www/system_advanced_admin.php:346
+#: src/usr/local/www/system_advanced_admin.php:354
#: src/usr/local/www/vpn_ipsec_phase2.php:630
#: src/usr/local/www/vpn_openvpn_client.php:476
-#: src/usr/local/www/vpn_openvpn_client.php:819
+#: src/usr/local/www/vpn_openvpn_client.php:818
#: src/usr/local/www/vpn_openvpn_server.php:666
msgid "Protocol"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:204
+#: src/usr/local/www/diag_dump_states.php:214
msgid "Source -> Router -> Destination"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:205
-#: src/usr/local/www/status_dhcpv6_leases.php:556
+#: src/usr/local/www/diag_dump_states.php:215
+#: src/usr/local/www/status_dhcpv6_leases.php:559
msgid "State"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:206
+#: src/usr/local/www/diag_dump_states.php:216
msgid "Packets"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:207
+#: src/usr/local/www/diag_dump_states.php:217
#: src/usr/local/www/diag_pftop.php:152
msgid "Bytes"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:277
+#: src/usr/local/www/diag_dump_states.php:287
#, php-format
msgid "Remove all state entries from %1$s to %2$s"
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:292
+#: src/usr/local/www/diag_dump_states.php:302
msgid "No states were found that match the current filter."
msgstr ""
-#: src/usr/local/www/diag_dump_states.php:294
+#: src/usr/local/www/diag_dump_states.php:304
msgid "No states were found."
msgstr ""
@@ -8273,34 +8435,44 @@ msgstr ""
msgid "Filters"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:140
+#: src/usr/local/www/diag_dump_states_sources.php:148
msgid "Current Source Tracking Entries"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:145
+#: src/usr/local/www/diag_dump_states_sources.php:153
msgid "Source -> Destination"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:146
+#: src/usr/local/www/diag_dump_states_sources.php:154
msgid "# States"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:147
+#: src/usr/local/www/diag_dump_states_sources.php:155
msgid "# Connections"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:148
+#: src/usr/local/www/diag_dump_states_sources.php:156
#: src/usr/local/www/diag_pftop.php:158
-#: src/usr/local/www/status_interfaces.php:174
+#: src/usr/local/www/status_interfaces.php:177
msgid "Rate"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:179
+#: src/usr/local/www/diag_dump_states_sources.php:187
#, php-format
msgid "Remove all source tracking entries from %1$s to %2$s"
msgstr ""
-#: src/usr/local/www/diag_dump_states_sources.php:193
+#: src/usr/local/www/diag_dump_states_sources.php:187
+#: src/usr/local/www/diag_gmirror.php:284
+#: src/usr/local/www/diag_gmirror.php:302
+#: src/usr/local/www/load_balancer_pool_edit.php:455
+#: src/usr/local/www/load_balancer_pool_edit.php:462
+#: src/usr/local/www/pkg_mgr_installed.php:231
+#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:151
+msgid "Remove"
+msgstr ""
+
+#: src/usr/local/www/diag_dump_states_sources.php:201
msgid "No source tracking entries were found."
msgstr ""
@@ -8336,19 +8508,19 @@ msgstr ""
msgid "File saved successfully."
msgstr ""
-#: src/usr/local/www/diag_edit.php:139
+#: src/usr/local/www/diag_edit.php:142
msgid "Save / Load a File from the Filesystem"
msgstr ""
-#: src/usr/local/www/diag_edit.php:144
+#: src/usr/local/www/diag_edit.php:149 src/usr/local/www/diag_edit.php:151
msgid "Load"
msgstr ""
-#: src/usr/local/www/diag_edit.php:145
+#: src/usr/local/www/diag_edit.php:153 src/usr/local/www/diag_edit.php:155
msgid "Browse"
msgstr ""
-#: src/usr/local/www/diag_edit.php:148
+#: src/usr/local/www/diag_edit.php:164
msgid "GoTo Line #"
msgstr ""
@@ -8360,7 +8532,7 @@ msgstr ""
msgid "Forget all formerly connected consumers"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:73 src/usr/local/www/diag_gmirror.php:358
+#: src/usr/local/www/diag_gmirror.php:73
msgid "Remove metadata from disk"
msgstr ""
@@ -8385,11 +8557,11 @@ msgid "Force rebuild of mirror consumer"
msgstr ""
#: src/usr/local/www/diag_gmirror.php:96
-msgid "You must supply a valid mirror name."
+msgid "A valid mirror name must be supplied."
msgstr ""
#: src/usr/local/www/diag_gmirror.php:100
-msgid "You must supply a valid consumer name"
+msgid "A valid consumer name must be supplied"
msgstr ""
#: src/usr/local/www/diag_gmirror.php:107
@@ -8452,63 +8624,67 @@ msgstr ""
msgid "Consumer"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:237
+#: src/usr/local/www/diag_gmirror.php:241
msgid ""
"The options on this page are intended for use by advanced users only. This "
"page is for managing existing mirrors, not creating new mirrors."
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:242
+#: src/usr/local/www/diag_gmirror.php:246
msgid "GEOM Mirror Information - Mirror Status"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:268
+#: src/usr/local/www/diag_gmirror.php:273
msgid "Forget Disconnected Disks"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:277
-#: src/usr/local/www/diag_gmirror.php:295
+#: src/usr/local/www/diag_gmirror.php:282
+#: src/usr/local/www/diag_gmirror.php:300
msgid "Rebuild"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:278
-#: src/usr/local/www/diag_gmirror.php:296
+#: src/usr/local/www/diag_gmirror.php:283
+#: src/usr/local/www/diag_gmirror.php:301
msgid "Deactivate"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:312
+#: src/usr/local/www/diag_gmirror.php:317
msgid "No Mirrors Found"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:320
+#: src/usr/local/www/diag_gmirror.php:325
msgid ""
"Some disk operations may only be performed when there are multiple consumers "
"present in a mirror."
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:324
+#: src/usr/local/www/diag_gmirror.php:329
msgid "Consumer Information - Available Consumers"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:333
+#: src/usr/local/www/diag_gmirror.php:338
msgid "Add to Mirror"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:354
-msgid "Reactivate on:"
+#: src/usr/local/www/diag_gmirror.php:360
+msgid "Reactivate on"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:386
+#: src/usr/local/www/diag_gmirror.php:365
+msgid "Clear Metadata"
+msgstr ""
+
+#: src/usr/local/www/diag_gmirror.php:394
msgid "No unused consumers found"
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:392
+#: src/usr/local/www/diag_gmirror.php:400
msgid ""
"Consumers may only be added to a mirror if they are larger than the size of "
"the mirror."
msgstr ""
-#: src/usr/local/www/diag_gmirror.php:393
+#: src/usr/local/www/diag_gmirror.php:401
msgid ""
"To repair a failed mirror, first perform a 'Forget' command on the mirror, "
"followed by an 'insert' action on the new consumer."
@@ -8528,25 +8704,36 @@ msgid "Not actually halting (DEBUG is set true)%s"
msgstr ""
#: src/usr/local/www/diag_halt.php:99
-msgid "Are you sure you want to halt the system?"
+msgid "System Halt Confirmation"
msgstr ""
#: src/usr/local/www/diag_halt.php:103
msgid ""
-"Click \"Halt\" to halt the system immediately, or \"No\" to go to the system "
-"dashboard. (There will be a brief delay before the dashboard appears.)"
+"Click \"Halt\" to halt the system immediately, or \"Cancel\" to go to the "
+"system dashboard. (There will be a brief delay before the dashboard appears.)"
msgstr ""
-#: src/usr/local/www/diag_halt.php:105
+#: src/usr/local/www/diag_halt.php:105 src/usr/local/www/diag_halt.php:107
msgid "Halt"
msgstr ""
+#: src/usr/local/www/diag_halt.php:105
+msgid "Halt the system and power off"
+msgstr ""
+
+#: src/usr/local/www/diag_halt.php:111 src/usr/local/www/diag_reboot.php:152
+#: src/usr/local/www/firewall_nat.php:500
+#: src/usr/local/www/firewall_rules.php:903
+#: src/usr/local/www/interfaces.php:1903 src/usr/local/www/interfaces.php:3210
+msgid "Cancel"
+msgstr ""
+
#: src/usr/local/www/diag_limiter_info.php:65 src/usr/local/www/head.inc:378
msgid "Limiter Info"
msgstr ""
#: src/usr/local/www/diag_limiter_info.php:71
-msgid "We could not find any limiters on this system."
+msgid "No limiters were found on this system."
msgstr ""
#: src/usr/local/www/diag_limiter_info.php:73
@@ -8554,7 +8741,7 @@ msgid "Limiters:"
msgstr ""
#: src/usr/local/www/diag_limiter_info.php:77 src/usr/local/www/head.inc:340
-#: src/usr/local/www/status_queues.php:145
+#: src/usr/local/www/status_queues.php:144
msgid "Queues"
msgstr ""
@@ -8585,8 +8772,8 @@ msgstr ""
#: src/usr/local/www/diag_nanobsd.php:103
msgid ""
-"If you would like to boot from this newly duplicated slice please set it "
-"using the bootup information area."
+"To boot from this newly duplicated slice set it using the bootup information "
+"area."
msgstr ""
#: src/usr/local/www/diag_nanobsd.php:106
@@ -8622,107 +8809,85 @@ msgstr ""
msgid "Image Size"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:157
+#: src/usr/local/www/diag_nanobsd.php:159
msgid "Switch Slice"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:161
+#: src/usr/local/www/diag_nanobsd.php:166
msgid "Bootup slice"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:174
-#, php-format
-msgid "(Reference count %s)"
-msgstr ""
-
-#: src/usr/local/www/diag_nanobsd.php:176
+#: src/usr/local/www/diag_nanobsd.php:184
msgid "Read/Write"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:177
+#: src/usr/local/www/diag_nanobsd.php:185
msgid "Switch to Read-Only"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:179
+#: src/usr/local/www/diag_nanobsd.php:187
msgid "Read-Only"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:180
+#: src/usr/local/www/diag_nanobsd.php:188
msgid "Switch to Read/Write"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:192
+#: src/usr/local/www/diag_nanobsd.php:206
msgid "Read/Write status"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:194
+#: src/usr/local/www/diag_nanobsd.php:208
msgid ""
-"This setting is only temporary, and can be switched dynamically in the "
-"background."
+"NanoBSD is now always read-write to avoid read-write to read-only mount "
+"problems."
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:198
-msgid "Permanent Read/Write"
-msgstr ""
-
-#: src/usr/local/www/diag_nanobsd.php:218
+#: src/usr/local/www/diag_nanobsd.php:242
msgid "Duplicate "
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:222
+#: src/usr/local/www/diag_nanobsd.php:249
msgid "Duplicate boot slice"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:224
+#: src/usr/local/www/diag_nanobsd.php:251
msgid ""
-"This will duplicate the bootup slice to the alternate slice. Use this if "
-"you would like to duplicate the known good working boot partition to the "
-"alternate."
+"This will duplicate the bootup slice to the alternate slice. Use this to "
+"duplicate the known good working boot partition to the alternate."
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:227
+#: src/usr/local/www/diag_nanobsd.php:254
msgid "RRD/DHCP Backup"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:232
+#: src/usr/local/www/diag_nanobsd.php:261
msgid "View log"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:236
+#: src/usr/local/www/diag_nanobsd.php:268
msgid "View previous upgrade log"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:246
+#: src/usr/local/www/diag_nanobsd.php:278
msgid "Previous Upgrade Log"
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:249
-msgid "File list:"
-msgstr ""
-
-#: src/usr/local/www/diag_nanobsd.php:251
-msgid "Misc log:"
-msgstr ""
-
-#: src/usr/local/www/diag_nanobsd.php:253
-msgid "fdisk/bsdlabel log:"
-msgstr ""
-
-#: src/usr/local/www/diag_ndp.php:128 src/usr/local/www/diag_ndp.php:133
+#: src/usr/local/www/diag_ndp.php:129 src/usr/local/www/diag_ndp.php:134
#: src/usr/local/www/head.inc:379
msgid "NDP Table"
msgstr ""
-#: src/usr/local/www/diag_ndp.php:140 src/usr/local/www/interfaces.php:602
-#: src/usr/local/www/interfaces.php:1827
-#: src/usr/local/www/services_dhcpv6.php:1003
+#: src/usr/local/www/diag_ndp.php:141 src/usr/local/www/interfaces.php:611
+#: src/usr/local/www/interfaces.php:1837
+#: src/usr/local/www/services_dhcpv6.php:1017
#: src/usr/local/www/services_dhcpv6_edit.php:259
#: src/usr/local/www/status_dhcpv6_leases.php:457
msgid "IPv6 address"
msgstr ""
#: src/usr/local/www/diag_packet_capture.php:114
-#: src/usr/local/www/diag_packet_capture.php:413
+#: src/usr/local/www/diag_packet_capture.php:432
msgid "Download Capture"
msgstr ""
@@ -8738,207 +8903,219 @@ msgstr ""
msgid "Invalid address family."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:169
+#: src/usr/local/www/diag_packet_capture.php:170
+msgid "IPv4 with ICMPv6 is not valid."
+msgstr ""
+
+#: src/usr/local/www/diag_packet_capture.php:173
+msgid "IPv6 with ICMP is not valid."
+msgstr ""
+
+#: src/usr/local/www/diag_packet_capture.php:176
+msgid "IPv6 with ARP is not valid."
+msgstr ""
+
+#: src/usr/local/www/diag_packet_capture.php:181
msgid "Invalid protocol."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:183
+#: src/usr/local/www/diag_packet_capture.php:195
#, php-format
msgid "A valid IP address or CIDR block must be specified. [%s]"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:190
+#: src/usr/local/www/diag_packet_capture.php:202
msgid "Invalid value specified for port."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:198
+#: src/usr/local/www/diag_packet_capture.php:210
msgid "Invalid value specified for packet length."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:206
+#: src/usr/local/www/diag_packet_capture.php:218
msgid "Invalid value specified for packet count."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:232
-#: src/usr/local/www/diag_packet_capture.php:396
-#: src/usr/local/www/diag_packet_capture.php:464
+#: src/usr/local/www/diag_packet_capture.php:244
+#: src/usr/local/www/diag_packet_capture.php:409
+#: src/usr/local/www/diag_packet_capture.php:485
#: src/usr/local/www/status_dhcp_leases.php:383
#: src/usr/local/www/status_dhcpv6_leases.php:462
-#: src/usr/local/www/status_dhcpv6_leases.php:554
+#: src/usr/local/www/status_dhcpv6_leases.php:557
msgid "Start"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:240
-#: src/usr/local/www/diag_packet_capture.php:393
-#: src/usr/local/www/diag_packet_capture.php:401
+#: src/usr/local/www/diag_packet_capture.php:252
+#: src/usr/local/www/diag_packet_capture.php:406
+#: src/usr/local/www/diag_packet_capture.php:416
msgid "Stop"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:267
+#: src/usr/local/www/diag_packet_capture.php:279
msgid "Exclude"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:297
+#: src/usr/local/www/diag_packet_capture.php:309
msgid "Packet Capture Options"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:304
+#: src/usr/local/www/diag_packet_capture.php:316
msgid "Select the interface on which to capture traffic. "
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:308
+#: src/usr/local/www/diag_packet_capture.php:320
msgid "Promiscuous"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:311
+#: src/usr/local/www/diag_packet_capture.php:323
msgid ""
-"Note: Some network adapters do not support or work well in promiscuous mode."
-"<br />More: <a target=\"_blank\" href=\"http://www.freebsd.org/cgi/man.cgi?"
+"The packet capture will be performed using promiscuous mode.<br />Note: Some "
+"network adapters do not support or work well in promiscuous mode.<br />More: "
+"<a target=\"_blank\" href=\"http://www.freebsd.org/cgi/man.cgi?"
"query=tcpdump&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+8.3-stable&amp;"
"arch=default&amp;format=html\">Packet capture</a>"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:320
+#: src/usr/local/www/diag_packet_capture.php:333
msgid "IPv4 Only"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:321
+#: src/usr/local/www/diag_packet_capture.php:334
msgid "IPv6 Only"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:317
-#: src/usr/local/www/firewall_rules_edit.php:1227
+#: src/usr/local/www/diag_packet_capture.php:330
+#: src/usr/local/www/firewall_rules_edit.php:1243
#: src/usr/local/www/system_gateways_edit.php:628
msgid "Address Family"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:323
-msgid "Select the type of traffic to be captured"
+#: src/usr/local/www/diag_packet_capture.php:336
+msgid "Select the type of traffic to be captured."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:330
+#: src/usr/local/www/diag_packet_capture.php:343
msgid "Select the protocol to capture, or \"Any\". "
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:334
+#: src/usr/local/www/diag_packet_capture.php:347
msgid "Host Address"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:337
+#: src/usr/local/www/diag_packet_capture.php:350
msgid ""
"This value is either the Source or Destination IP address or subnet in CIDR "
"notation. The packet capture will look for this address in either field.<br /"
">Matching can be negated by preceding the value with \"!\". Multiple IP "
"addresses or CIDR subnets may be specified. Comma (\",\") separated values "
"perform a boolean \"AND\". Separating with a pipe (\"|\") performs a boolean "
-"\"OR\".<br />If you leave this field blank, all packets on the specified "
+"\"OR\".<br />If this field is left blank, all packets on the specified "
"interface will be captured."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:344
-#: src/usr/local/www/diag_testport.php:83
+#: src/usr/local/www/diag_packet_capture.php:357
+#: src/usr/local/www/diag_testport.php:85
#: src/usr/local/www/diag_testport.php:262
-#: src/usr/local/www/firewall_aliases_edit.php:587
+#: src/usr/local/www/firewall_aliases_edit.php:581
#: src/usr/local/www/firewall_nat_edit.php:880
#: src/usr/local/www/firewall_nat_out_edit.php:527
#: src/usr/local/www/firewall_nat_out_edit.php:551
#: src/usr/local/www/firewall_nat_out_edit.php:607
-#: src/usr/local/www/firewall_rules.php:408
-#: src/usr/local/www/firewall_rules.php:410
-#: src/usr/local/www/interfaces.php:3066 src/usr/local/www/interfaces.php:3090
+#: src/usr/local/www/firewall_rules.php:411
+#: src/usr/local/www/firewall_rules.php:413
+#: src/usr/local/www/interfaces.php:3073 src/usr/local/www/interfaces.php:3097
#: src/usr/local/www/load_balancer_pool.php:157
#: src/usr/local/www/load_balancer_pool_edit.php:107
-#: src/usr/local/www/load_balancer_pool_edit.php:371
-#: src/usr/local/www/load_balancer_virtual_server.php:157
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:231
+#: src/usr/local/www/load_balancer_pool_edit.php:363
+#: src/usr/local/www/load_balancer_virtual_server.php:177
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:233
#: src/usr/local/www/status_upnp.php:103
msgid "Port"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:347
+#: src/usr/local/www/diag_packet_capture.php:360
msgid ""
"The port can be either the source or destination port. The packet capture "
-"will look for this port in either field. Leave blank if you do not want to "
-"filter by port."
+"will look for this port in either field. Leave blank if not filtering by "
+"port."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:352
+#: src/usr/local/www/diag_packet_capture.php:365
msgid "Packet Length"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:355
+#: src/usr/local/www/diag_packet_capture.php:368
msgid ""
"The Packet length is the number of bytes of each packet that will be "
"captured. Default value is 0, which will capture the entire frame regardless "
"of its size."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:360
-#: src/usr/local/www/diag_ping.php:95
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:124
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:235
+#: src/usr/local/www/diag_packet_capture.php:373
+#: src/usr/local/www/diag_ping.php:83
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:125
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:236
msgid "Count"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:363
+#: src/usr/local/www/diag_packet_capture.php:376
msgid ""
"This is the number of packets the packet capture will grab. Default value is "
"100.<br />Enter 0 (zero) for no count limit."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:370
-#: src/usr/local/www/services_router_advertisements.php:149
+#: src/usr/local/www/diag_packet_capture.php:383
+#: src/usr/local/www/services_router_advertisements.php:150
msgid "Normal"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:371
+#: src/usr/local/www/diag_packet_capture.php:384
msgid "Medium"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:372
-#: src/usr/local/www/services_router_advertisements.php:150
+#: src/usr/local/www/diag_packet_capture.php:385
+#: src/usr/local/www/services_router_advertisements.php:151
msgid "High"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:373
+#: src/usr/local/www/diag_packet_capture.php:386
msgid "Full"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:368
+#: src/usr/local/www/diag_packet_capture.php:381
msgid "Level of detail"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:375
+#: src/usr/local/www/diag_packet_capture.php:388
msgid ""
"This is the level of detail that will be displayed after hitting \"Stop\" "
"when the packets have been captured.<br />This option does not affect the "
"level of detail when downloading the packet capture. "
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:380
+#: src/usr/local/www/diag_packet_capture.php:393
msgid "Reverse DNS Lookup"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:383
+#: src/usr/local/www/diag_packet_capture.php:396
msgid ""
-"This check box will cause the packet capture to perform a reverse DNS lookup "
-"associated with all IP addresses.<br />This option can cause delays for "
-"large packet captures."
+"The packet capture will perform a reverse DNS lookup associated with all IP "
+"addresses.<br />This option can cause delays for large packet captures."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:408
+#: src/usr/local/www/diag_packet_capture.php:425
msgid "View Capture"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:417
+#: src/usr/local/www/diag_packet_capture.php:438
msgid "Last capture"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:467
+#: src/usr/local/www/diag_packet_capture.php:488
msgid "Packet capture is running."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:477
+#: src/usr/local/www/diag_packet_capture.php:498
msgid "Packets Captured"
msgstr ""
@@ -8978,10 +9155,6 @@ msgstr ""
msgid "long"
msgstr ""
-#: src/usr/local/www/diag_pftop.php:131
-msgid "queue"
-msgstr ""
-
#: src/usr/local/www/diag_pftop.php:132
msgid "rules"
msgstr ""
@@ -9002,8 +9175,11 @@ msgstr ""
msgid "time"
msgstr ""
-#: src/usr/local/www/diag_pftop.php:140 src/usr/local/www/diag_smart.php:303
-#: src/usr/local/www/diag_smart.php:452
+#: src/usr/local/www/diag_pftop.php:140 src/usr/local/www/diag_smart.php:324
+#: src/usr/local/www/diag_smart.php:477
+#: src/usr/local/www/services_captiveportal.php:1118
+#: src/usr/local/www/services_captiveportal.php:1152
+#: src/usr/local/www/services_captiveportal.php:1184
msgid "View"
msgstr ""
@@ -9017,7 +9193,7 @@ msgstr ""
#: src/usr/local/www/diag_pftop.php:154
#: src/usr/local/www/firewall_nat_out.php:315
-#: src/usr/local/www/firewall_nat_out.php:566
+#: src/usr/local/www/firewall_nat_out.php:568
#: src/usr/local/www/status_logs_common.inc:510
msgid "Destination Port"
msgstr ""
@@ -9036,19 +9212,19 @@ msgstr ""
#: src/usr/local/www/diag_pftop.php:160 src/usr/local/www/diag_testport.php:270
#: src/usr/local/www/firewall_nat_out.php:313
-#: src/usr/local/www/firewall_nat_out.php:564
+#: src/usr/local/www/firewall_nat_out.php:566
#: src/usr/local/www/status_logs_common.inc:469
msgid "Source Port"
msgstr ""
#: src/usr/local/www/diag_pftop.php:161 src/usr/local/www/diag_testport.php:285
-#: src/usr/local/www/diag_traceroute.php:179
+#: src/usr/local/www/diag_traceroute.php:167
#: src/usr/local/www/firewall_nat.php:240
-#: src/usr/local/www/status_logs_settings.php:355
+#: src/usr/local/www/status_logs_settings.php:354
msgid "Source Address"
msgstr ""
-#: src/usr/local/www/diag_pftop.php:147 src/usr/local/www/status_graph.php:176
+#: src/usr/local/www/diag_pftop.php:147 src/usr/local/www/status_graph.php:191
msgid "Sort by"
msgstr ""
@@ -9060,74 +9236,68 @@ msgstr ""
msgid "Gathering pfTOP activity, please wait..."
msgstr ""
-#: src/usr/local/www/diag_ping.php:80
-#: src/usr/local/www/firewall_nat_out_edit.php:590
-#: src/usr/local/www/interfaces.php:1856 src/usr/local/www/interfaces.php:2837
-#: src/usr/local/www/interfaces.php:2846 src/usr/local/www/interfaces.php:2855
-#: src/usr/local/www/interfaces.php:2913 src/usr/local/www/interfaces.php:3168
-#: src/usr/local/www/services_ntpd_gps.php:249
-msgid "Default"
-msgstr ""
-
-#: src/usr/local/www/diag_ping.php:95 src/usr/local/www/diag_testport.php:83
-#: src/usr/local/www/diag_traceroute.php:100
-#: src/usr/local/www/load_balancer_monitor_edit.php:339
-#: src/usr/local/www/load_balancer_monitor_edit.php:365
-#: src/usr/local/www/services_dnsmasq.php:374
+#: src/usr/local/www/diag_ping.php:83 src/usr/local/www/diag_testport.php:85
+#: src/usr/local/www/diag_traceroute.php:88
+#: src/usr/local/www/load_balancer_monitor_edit.php:337
+#: src/usr/local/www/load_balancer_monitor_edit.php:363
+#: src/usr/local/www/services_dnsmasq.php:352
#: src/usr/local/www/services_dnsmasq_edit.php:246
-#: src/usr/local/www/services_unbound.php:438
+#: src/usr/local/www/services_unbound.php:467
#: src/usr/local/www/services_unbound_host_edit.php:247
#: src/usr/local/www/status_ipsec_leases.php:89
#: src/usr/local/www/services_rfc2136_edit.php:249
msgid "Host"
msgstr ""
-#: src/usr/local/www/diag_ping.php:99
+#: src/usr/local/www/diag_ping.php:87
#, php-format
msgid "Count must be between 1 and %s"
msgstr ""
-#: src/usr/local/www/diag_ping.php:105
-#: src/usr/local/www/diag_traceroute.php:109
+#: src/usr/local/www/diag_ping.php:93 src/usr/local/www/diag_traceroute.php:97
msgid "When using IPv4, the target host must be an IPv4 address or hostname."
msgstr ""
-#: src/usr/local/www/diag_ping.php:108
-#: src/usr/local/www/diag_traceroute.php:112
+#: src/usr/local/www/diag_ping.php:96 src/usr/local/www/diag_traceroute.php:100
msgid "When using IPv6, the target host must be an IPv6 address or hostname."
msgstr ""
-#: src/usr/local/www/diag_ping.php:159
+#: src/usr/local/www/diag_ping.php:147
#, php-format
msgid "Host \"%s\" did not respond or could not be resolved."
msgstr ""
-#: src/usr/local/www/diag_ping.php:184 src/usr/local/www/diag_testport.php:292
-#: src/usr/local/www/diag_traceroute.php:172
-#: src/usr/local/www/status_logs_settings.php:362
+#: src/usr/local/www/diag_ping.php:172 src/usr/local/www/diag_testport.php:292
+#: src/usr/local/www/diag_traceroute.php:160
+#: src/usr/local/www/status_logs_settings.php:361
msgid "IP Protocol"
msgstr ""
-#: src/usr/local/www/diag_ping.php:191
+#: src/usr/local/www/diag_ping.php:181
+msgid "Automatically selected (default)"
+msgstr ""
+
+#: src/usr/local/www/diag_ping.php:179
#: src/usr/local/www/firewall_nat_1to1_edit.php:160
#: src/usr/local/www/firewall_nat_edit.php:253
msgid "Source address"
msgstr ""
-#: src/usr/local/www/diag_ping.php:194
-msgid "Select source address for the ping"
+#: src/usr/local/www/diag_ping.php:182
+msgid "Select source address for the ping."
msgstr ""
-#: src/usr/local/www/diag_ping.php:198
+#: src/usr/local/www/diag_ping.php:186
msgid "Maximum number of pings"
msgstr ""
-#: src/usr/local/www/diag_ping.php:201
-msgid "Select the maximum number of pings"
+#: src/usr/local/www/diag_ping.php:189
+msgid "Select the maximum number of pings."
msgstr ""
#: src/usr/local/www/diag_reboot.php:76 src/usr/local/www/diag_reboot.php:146
-#: src/usr/local/www/head.inc:385 src/usr/local/www/interfaces.php:1975
+#: src/usr/local/www/diag_reboot.php:148 src/usr/local/www/head.inc:385
+#: src/usr/local/www/interfaces.php:1991
msgid "Reboot"
msgstr ""
@@ -9136,26 +9306,30 @@ msgid "Not actually rebooting (DEBUG is set true)."
msgstr ""
#: src/usr/local/www/diag_reboot.php:112
-#: src/usr/local/www/pkg_mgr_install.php:650
+#: src/usr/local/www/pkg_mgr_install.php:693
#, php-format
msgid "Rebooting%sPage will automatically reload in %s seconds"
msgstr ""
#: src/usr/local/www/diag_reboot.php:120
-#: src/usr/local/www/pkg_mgr_install.php:658
+#: src/usr/local/www/pkg_mgr_install.php:701
#, php-format
msgid "Not yet ready%s Retrying in another %s seconds"
msgstr ""
#: src/usr/local/www/diag_reboot.php:140
-msgid "Are you sure you want to reboot the system?"
+msgid "System Reboot Confirmation"
msgstr ""
#: src/usr/local/www/diag_reboot.php:144
msgid ""
-"Click \"Reboot\" to reboot the system immediately, or \"No\" to go to the "
-"system dashboard without rebooting. (There will be a brief delay before the "
-"dashboard appears.)"
+"Click \"Reboot\" to reboot the system immediately, or \"Cancel\" to go to "
+"the system dashboard without rebooting. (There will be a brief delay before "
+"the dashboard appears.)"
+msgstr ""
+
+#: src/usr/local/www/diag_reboot.php:146
+msgid "Reboot the system"
msgstr ""
#: src/usr/local/www/diag_resetstate.php:77
@@ -9174,8 +9348,8 @@ msgid ""
"be re-established. This may be necessary after making substantial changes to "
"the firewall and/or NAT rules, especially if there are IP protocol mappings "
"(e.g. for PPTP or IPv6) with open connections.%sThe firewall will normally "
-"leave the state tables intact when changing rules.%s%sNOTE:%s If you reset "
-"the firewall state table, the browser session may appear to be hung after "
+"leave the state tables intact when changing rules.%s%sNOTE:%s Resetting the "
+"firewall state table may cause the browser session to appear hung after "
"clicking &quot;Reset&quot;. Simply refresh the page to continue."
msgstr ""
@@ -9189,19 +9363,19 @@ msgid ""
msgstr ""
#: src/usr/local/www/diag_resetstate.php:124
-#: src/usr/local/www/status_lb_pool.php:279
-#: src/usr/local/www/status_lb_pool.php:281
-msgid "Reset"
-msgstr ""
-
-#: src/usr/local/www/diag_resetstate.php:131
msgid "Select States to Reset"
msgstr ""
-#: src/usr/local/www/diag_resetstate.php:135
+#: src/usr/local/www/diag_resetstate.php:128
msgid "State Table"
msgstr ""
+#: src/usr/local/www/diag_resetstate.php:146
+#: src/usr/local/www/status_lb_pool.php:279
+#: src/usr/local/www/status_lb_pool.php:281
+msgid "Reset"
+msgstr ""
+
#: src/usr/local/www/diag_routes.php:97 src/usr/local/www/head.inc:386
msgid "Routes"
msgstr ""
@@ -9216,8 +9390,8 @@ msgstr ""
#: src/usr/local/www/diag_routes.php:116
msgid ""
-"Enabling name resolution may cause the query to take longer. You can stop it "
-"at any time by clicking the Stop button in your browser."
+"Enabling name resolution may cause the query to take longer. It can be "
+"stopped at any time by clicking the Stop button in the browser."
msgstr ""
#: src/usr/local/www/diag_routes.php:122
@@ -9225,24 +9399,36 @@ msgid "Rows to display"
msgstr ""
#: src/usr/local/www/diag_routes.php:132
-msgid "Use a regular expression to filter IP address or hostnames"
+msgid "Use a regular expression to filter IP address or hostnames."
+msgstr ""
+
+#: src/usr/local/www/diag_routes.php:138 src/usr/local/www/diag_tables.php:180
+#: src/usr/local/www/head.inc:243 src/usr/local/www/pkg_mgr_install.php:247
+#: src/usr/local/www/pkg_mgr_installed.php:227
+#: src/usr/local/www/system_certmanager.php:499
+#: src/usr/local/www/system_certmanager.php:561
+#: src/usr/local/www/system_certmanager.php:911
+#: src/usr/local/www/system_certmanager.php:959
+#: src/usr/local/www/system_update_settings.php:111
+#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:154
+msgid "Update"
msgstr ""
-#: src/usr/local/www/diag_routes.php:215
+#: src/usr/local/www/diag_routes.php:223
msgid "IPv4 Routes"
msgstr ""
-#: src/usr/local/www/diag_routes.php:225 src/usr/local/www/diag_routes.php:243
+#: src/usr/local/www/diag_routes.php:233 src/usr/local/www/diag_routes.php:251
msgid "Gathering data, please wait..."
msgstr ""
-#: src/usr/local/www/diag_routes.php:233
+#: src/usr/local/www/diag_routes.php:241
msgid "IPv6 Routes"
msgstr ""
#: src/usr/local/www/diag_smart.php:70 src/usr/local/www/head.inc:387
#: src/usr/local/www/widgets/include/smart_status.inc:3
-#: src/usr/local/www/widgets/widgets/smart_status.widget.php:72
+#: src/usr/local/www/widgets/widgets/smart_status.widget.php:73
msgid "S.M.A.R.T. Status"
msgstr ""
@@ -9270,100 +9456,104 @@ msgstr ""
msgid "Device does not exist, bailing."
msgstr ""
-#: src/usr/local/www/diag_smart.php:135
-msgid "Invalid test type, bailing."
+#: src/usr/local/www/diag_smart.php:131
+msgid "S.M.A.R.T. is not supported in Hyper-V guests."
msgstr ""
#: src/usr/local/www/diag_smart.php:142
+msgid "Invalid test type, bailing."
+msgstr ""
+
+#: src/usr/local/www/diag_smart.php:149
msgid "Test Results"
msgstr ""
-#: src/usr/local/www/diag_smart.php:152 src/usr/local/www/diag_smart.php:218
-#: src/usr/local/www/diag_smart.php:504 src/usr/local/www/diag_smart.php:511
+#: src/usr/local/www/diag_smart.php:159 src/usr/local/www/diag_smart.php:237
+#: src/usr/local/www/diag_smart.php:531 src/usr/local/www/diag_smart.php:540
msgid "Abort"
msgstr ""
-#: src/usr/local/www/diag_smart.php:153 src/usr/local/www/diag_smart.php:181
-#: src/usr/local/www/diag_smart.php:206
+#: src/usr/local/www/diag_smart.php:161
+msgid "Abort Test"
+msgstr ""
+
+#: src/usr/local/www/diag_smart.php:165 src/usr/local/www/diag_smart.php:196
+#: src/usr/local/www/diag_smart.php:224
msgid "Back"
msgstr ""
-#: src/usr/local/www/diag_smart.php:167
+#: src/usr/local/www/diag_smart.php:180
msgid "Invalid info type, bailing."
msgstr ""
-#: src/usr/local/www/diag_smart.php:174 src/usr/local/www/diag_smart.php:308
-#: src/usr/local/www/pkg_mgr_installed.php:212
+#: src/usr/local/www/diag_smart.php:187 src/usr/local/www/diag_smart.php:331
+#: src/usr/local/www/pkg_mgr_installed.php:232
msgid "Information"
msgstr ""
-#: src/usr/local/www/diag_smart.php:192
+#: src/usr/local/www/diag_smart.php:208
msgid "Invalid log type, bailing."
msgstr ""
-#: src/usr/local/www/diag_smart.php:199
+#: src/usr/local/www/diag_smart.php:215
msgid "Logs"
msgstr ""
-#: src/usr/local/www/diag_smart.php:233
+#: src/usr/local/www/diag_smart.php:252
#, php-format
msgid "Email sent to %s"
msgstr ""
-#: src/usr/local/www/diag_smart.php:271
-#: src/usr/local/www/services_captiveportal.php:96
-#: src/usr/local/www/services_captiveportal.php:562
-#: src/usr/local/www/services_captiveportal_filemanager.php:172
-#: src/usr/local/www/services_captiveportal_hostname.php:138
-#: src/usr/local/www/services_captiveportal_ip.php:131
-#: src/usr/local/www/services_captiveportal_mac.php:196
-#: src/usr/local/www/services_captiveportal_vouchers.php:438
+#: src/usr/local/www/diag_smart.php:290
+#: src/usr/local/www/services_captiveportal.php:97
+#: src/usr/local/www/services_captiveportal.php:563
+#: src/usr/local/www/services_captiveportal_filemanager.php:173
+#: src/usr/local/www/services_captiveportal_hostname.php:139
+#: src/usr/local/www/services_captiveportal_ip.php:132
+#: src/usr/local/www/services_captiveportal_mac.php:197
+#: src/usr/local/www/services_captiveportal_vouchers.php:439
#: src/usr/local/www/vpn_l2tp.php:219 src/usr/local/www/vpn_l2tp.php:232
-#: src/usr/local/www/vpn_l2tp.php:259 src/usr/local/www/vpn_l2tp_users.php:118
+#: src/usr/local/www/vpn_l2tp.php:256 src/usr/local/www/vpn_l2tp_users.php:118
msgid "Configuration"
msgstr ""
-#: src/usr/local/www/diag_smart.php:275
-#: src/usr/local/www/system_camanager.php:619
-#: src/usr/local/www/system_certmanager.php:781
-#: src/usr/local/www/system_certmanager.php:896
+#: src/usr/local/www/diag_smart.php:294
+#: src/usr/local/www/system_camanager.php:616
+#: src/usr/local/www/system_certmanager.php:740
+#: src/usr/local/www/system_certmanager.php:859
msgid "Email Address"
msgstr ""
-#: src/usr/local/www/diag_smart.php:285
+#: src/usr/local/www/diag_smart.php:304
msgid "Send test email"
msgstr ""
-#: src/usr/local/www/diag_smart.php:317
+#: src/usr/local/www/diag_smart.php:340
msgid "Info type"
msgstr ""
-#: src/usr/local/www/diag_smart.php:363 src/usr/local/www/diag_smart.php:434
-#: src/usr/local/www/diag_smart.php:488 src/usr/local/www/diag_smart.php:522
+#: src/usr/local/www/diag_smart.php:386 src/usr/local/www/diag_smart.php:459
+#: src/usr/local/www/diag_smart.php:515 src/usr/local/www/diag_smart.php:551
msgid "Device: /dev/"
msgstr ""
-#: src/usr/local/www/diag_smart.php:381
-msgid "Test"
-msgstr ""
-
-#: src/usr/local/www/diag_smart.php:386
+#: src/usr/local/www/diag_smart.php:411
msgid "Perform self-tests"
msgstr ""
-#: src/usr/local/www/diag_smart.php:395
+#: src/usr/local/www/diag_smart.php:420
msgid "Test type"
msgstr ""
-#: src/usr/local/www/diag_smart.php:429
-msgid "Select \"Conveyance\" for ATA disks only"
+#: src/usr/local/www/diag_smart.php:454
+msgid "Select \"Conveyance\" for ATA disks only."
msgstr ""
-#: src/usr/local/www/diag_smart.php:457
+#: src/usr/local/www/diag_smart.php:484
msgid "View Logs"
msgstr ""
-#: src/usr/local/www/diag_smart.php:466
+#: src/usr/local/www/diag_smart.php:493
msgid "Log type"
msgstr ""
@@ -9379,15 +9569,15 @@ msgstr ""
msgid "Show all socket connections"
msgstr ""
-#: src/usr/local/www/diag_sockets.php:93
+#: src/usr/local/www/diag_sockets.php:96
msgid "System Socket Information"
msgstr ""
-#: src/usr/local/www/diag_sockets.php:138
+#: src/usr/local/www/diag_sockets.php:141
msgid "Socket information - explanation."
msgstr ""
-#: src/usr/local/www/diag_sockets.php:139
+#: src/usr/local/www/diag_sockets.php:142
msgid ""
"This page shows the output for the commands: \"sockstat -4lL\" and "
"\"sockstat -6lL\".<br />Or in case of showing all sockets the output for: "
@@ -9410,10 +9600,10 @@ msgstr ""
#: src/usr/local/www/diag_states_summary.php:180
#: src/usr/local/www/firewall_aliases.php:189
-#: src/usr/local/www/services_dnsmasq.php:376
-#: src/usr/local/www/services_dnsmasq.php:456
-#: src/usr/local/www/services_unbound.php:440
-#: src/usr/local/www/services_unbound.php:516
+#: src/usr/local/www/services_dnsmasq.php:354
+#: src/usr/local/www/services_dnsmasq.php:428
+#: src/usr/local/www/services_unbound.php:469
+#: src/usr/local/www/services_unbound.php:545
#: src/usr/local/www/widgets/widgets/ipsec.widget.php:251
msgid "IP"
msgstr ""
@@ -9453,11 +9643,11 @@ msgstr ""
msgid "System Activity"
msgstr ""
-#: src/usr/local/www/diag_system_activity.php:106
+#: src/usr/local/www/diag_system_activity.php:120
msgid "CPU Activity"
msgstr ""
-#: src/usr/local/www/diag_system_activity.php:108
+#: src/usr/local/www/diag_system_activity.php:122
msgid "Gathering CPU activity, please wait..."
msgstr ""
@@ -9487,80 +9677,71 @@ msgstr ""
msgid "Table"
msgstr ""
-#: src/usr/local/www/diag_tables.php:180 src/usr/local/www/head.inc:243
-#: src/usr/local/www/pkg_mgr_install.php:240
-#: src/usr/local/www/pkg_mgr_installed.php:207
-#: src/usr/local/www/system_certmanager.php:499
-#: src/usr/local/www/system_certmanager.php:561
-#: src/usr/local/www/system_certmanager.php:594
-#: src/usr/local/www/system_certmanager.php:949
-#: src/usr/local/www/system_certmanager.php:952
-#: src/usr/local/www/system_update_settings.php:99
-#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:154
-msgid "Update"
+#: src/usr/local/www/diag_tables.php:187
+msgid "Empty Table"
msgstr ""
-#: src/usr/local/www/diag_tables.php:185
-msgid "Clear Table"
-msgstr ""
-
-#: src/usr/local/www/diag_tables.php:213
+#: src/usr/local/www/diag_tables.php:217
#, php-format
msgid "Table last updated on %s."
msgstr ""
-#: src/usr/local/www/diag_tables.php:215
+#: src/usr/local/www/diag_tables.php:219
msgid "Date of last update of table is unknown."
msgstr ""
-#: src/usr/local/www/diag_tables.php:218
+#: src/usr/local/www/diag_tables.php:222
#, php-format
msgid "%s records."
msgstr ""
-#: src/usr/local/www/diag_tables.php:218
+#: src/usr/local/www/diag_tables.php:222
msgid "."
msgstr ""
-#: src/usr/local/www/diag_tables.php:218
+#: src/usr/local/www/diag_tables.php:222
msgid ","
msgstr ""
-#: src/usr/local/www/diag_tables.php:230
+#: src/usr/local/www/diag_tables.php:234
msgid "Hide table comments."
msgstr ""
-#: src/usr/local/www/diag_tables.php:231
+#: src/usr/local/www/diag_tables.php:235
msgid "Show table comments."
msgstr ""
-#: src/usr/local/www/diag_tables.php:280
+#: src/usr/local/www/diag_tables.php:284
msgid "No entries exist in this table."
msgstr ""
+#: src/usr/local/www/diag_tables.php:321
+msgid "Remove this entry"
+msgstr ""
+
#: src/usr/local/www/diag_testport.php:71
#: src/usr/local/www/diag_testport.php:250 src/usr/local/www/head.inc:382
msgid "Test Port"
msgstr ""
-#: src/usr/local/www/diag_testport.php:87
+#: src/usr/local/www/diag_testport.php:89
msgid "Please enter a valid IP or hostname."
msgstr ""
-#: src/usr/local/www/diag_testport.php:91
+#: src/usr/local/www/diag_testport.php:93
msgid "Please enter a valid port number."
msgstr ""
-#: src/usr/local/www/diag_testport.php:95
+#: src/usr/local/www/diag_testport.php:97
msgid "Please enter a valid source port number, or leave the field blank."
msgstr ""
-#: src/usr/local/www/diag_testport.php:99
-msgid "You cannot connect to an IPv4 address using IPv6."
+#: src/usr/local/www/diag_testport.php:101
+msgid "Cannot connect to an IPv4 address using IPv6."
msgstr ""
-#: src/usr/local/www/diag_testport.php:102
-msgid "You cannot connect to an IPv6 address using IPv4."
+#: src/usr/local/www/diag_testport.php:104
+msgid "Cannot connect to an IPv6 address using IPv4."
msgstr ""
#: src/usr/local/www/diag_testport.php:228
@@ -9584,8 +9765,8 @@ msgstr ""
#: src/usr/local/www/diag_testport.php:244
msgid ""
-"This page allows you to perform a simple TCP connection test to determine if "
-"a host is up and accepting connections on a given port."
+"This page performs a simple TCP connection test to determine if a host is up "
+"and accepting connections on a given port."
msgstr ""
#: src/usr/local/www/diag_testport.php:245
@@ -9605,64 +9786,64 @@ msgid ""
msgstr ""
#: src/usr/local/www/diag_testport.php:288
-#: src/usr/local/www/diag_traceroute.php:182
-msgid "Select source address for the trace"
+#: src/usr/local/www/diag_traceroute.php:170
+msgid "Select source address for the trace."
msgstr ""
#: src/usr/local/www/diag_testport.php:295
msgid ""
-"If you force IPv4 or IPv6 and use a hostname that does not contain a result "
-"using that protocol, it will result in an error. For example if you force "
-"IPv4 and use a hostname that only returns an AAAA IPv6 IP address, it will "
-"not work."
+"If IPv4 or IPv6 is forced and a hostname is used that does not contain a "
+"result using that protocol, it will result in an error. For example if IPv4 "
+"is forced and a hostname is used that only returns an AAAA IPv6 IP address, "
+"it will not work."
msgstr ""
-#: src/usr/local/www/diag_testport.php:306
+#: src/usr/local/www/diag_testport.php:314
msgid "Received Remote Text"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:100
+#: src/usr/local/www/diag_traceroute.php:88
msgid "ttl"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:104
+#: src/usr/local/www/diag_traceroute.php:92
#, php-format
msgid "Maximum number of hops must be between 1 and %s"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:154
+#: src/usr/local/www/diag_traceroute.php:142
#, php-format
msgid "Error: %s could not be traced/resolved"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:175
-msgid "Select the protocol to use"
+#: src/usr/local/www/diag_traceroute.php:163
+msgid "Select the protocol to use."
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:186
-msgid "Maximum nuber of hops"
+#: src/usr/local/www/diag_traceroute.php:174
+msgid "Maximum number of hops"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:189
-msgid "Select the maximum number of network hops to trace"
+#: src/usr/local/www/diag_traceroute.php:177
+msgid "Select the maximum number of network hops to trace."
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:193
+#: src/usr/local/www/diag_traceroute.php:181
msgid "Reverse Address Lookup"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:196
+#: src/usr/local/www/diag_traceroute.php:184
msgid ""
"When checked, traceroute will attempt to perform a PTR lookup to locate "
"hostnames for hops along the path. This will slow down the process as it has "
"to wait for DNS replies."
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:200
+#: src/usr/local/www/diag_traceroute.php:188
msgid "Use ICMP"
msgstr ""
-#: src/usr/local/www/diag_traceroute.php:203
+#: src/usr/local/www/diag_traceroute.php:191
msgid ""
"By default, traceroute uses UDP but that may be blocked by some routers. "
"Check this box to use ICMP instead, which may succeed. "
@@ -9687,8 +9868,8 @@ msgstr ""
#: src/usr/local/www/easyrule.php:109
msgid ""
-"If you are seeing this, there apparently was not an error, and you navigated "
-"to the page directly without telling it what to do."
+"There apparently was not an error, and this page was navigated to directly "
+"without any instructions for what it should do."
msgstr ""
#: src/usr/local/www/easyrule.php:111
@@ -9730,14 +9911,14 @@ msgstr ""
#: src/usr/local/www/firewall_nat.php:206
#: src/usr/local/www/firewall_nat_1to1.php:155
#: src/usr/local/www/firewall_nat_1to1_edit.php:281
-#: src/usr/local/www/firewall_nat_edit.php:653
+#: src/usr/local/www/firewall_nat_edit.php:654
#: src/usr/local/www/firewall_nat_npt.php:155
#: src/usr/local/www/firewall_nat_npt_edit.php:212
#: src/usr/local/www/firewall_nat_out.php:239
-#: src/usr/local/www/firewall_nat_out_edit.php:393
-#: src/usr/local/www/firewall_rules.php:72
-#: src/usr/local/www/firewall_rules.php:355
-#: src/usr/local/www/firewall_rules_edit.php:1060
+#: src/usr/local/www/firewall_nat_out_edit.php:396
+#: src/usr/local/www/firewall_rules.php:75
+#: src/usr/local/www/firewall_rules.php:358
+#: src/usr/local/www/firewall_rules_edit.php:1076
#: src/usr/local/www/firewall_schedule.php:75
#: src/usr/local/www/firewall_schedule_edit.php:85
#: src/usr/local/www/firewall_shaper.php:75
@@ -9745,7 +9926,7 @@ msgstr ""
#: src/usr/local/www/firewall_shaper_vinterface.php:73
#: src/usr/local/www/firewall_shaper_wizards.php:96
#: src/usr/local/www/firewall_virtual_ip.php:271
-#: src/usr/local/www/firewall_virtual_ip_edit.php:320
+#: src/usr/local/www/firewall_virtual_ip_edit.php:329
#: src/usr/local/www/status_logs_common.inc:122
#: src/usr/local/www/status_logs_settings.php:234
msgid "Firewall"
@@ -9760,36 +9941,35 @@ msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:164
#: src/usr/local/www/firewall_nat_npt.php:164
#: src/usr/local/www/firewall_nat_out.php:248
-#: src/usr/local/www/firewall_rules.php:366
-#: src/usr/local/www/firewall_shaper.php:432
+#: src/usr/local/www/firewall_rules.php:369
+#: src/usr/local/www/firewall_shaper.php:411
#: src/usr/local/www/firewall_shaper_queues.php:239
#: src/usr/local/www/firewall_shaper_vinterface.php:411
#: src/usr/local/www/firewall_shaper_wizards.php:122
#: src/usr/local/www/firewall_virtual_ip.php:279
-#: src/usr/local/www/interfaces.php:1696
-#: src/usr/local/www/interfaces_assign.php:509
+#: src/usr/local/www/interfaces_assign.php:514
#: src/usr/local/www/load_balancer_monitor.php:121
#: src/usr/local/www/load_balancer_pool.php:135
#: src/usr/local/www/load_balancer_setting.php:134
-#: src/usr/local/www/load_balancer_virtual_server.php:135
-#: src/usr/local/www/services_captiveportal_mac.php:192
+#: src/usr/local/www/load_balancer_virtual_server.php:155
+#: src/usr/local/www/services_captiveportal_mac.php:193
#: src/usr/local/www/services_captiveportal_zones.php:102
#: src/usr/local/www/services_dhcp.php:750
-#: src/usr/local/www/services_dhcpv6.php:530
+#: src/usr/local/www/services_dhcpv6.php:528
#: src/usr/local/www/services_dnsmasq.php:228
#: src/usr/local/www/services_igmpproxy.php:109
#: src/usr/local/www/services_pppoe.php:125
-#: src/usr/local/www/services_unbound.php:280
+#: src/usr/local/www/services_unbound.php:286
#: src/usr/local/www/services_unbound_acls.php:225
#: src/usr/local/www/services_unbound_advanced.php:234
#: src/usr/local/www/status_lb_pool.php:143
#: src/usr/local/www/system_advanced_sysctl.php:182
-#: src/usr/local/www/system_gateway_groups.php:134
+#: src/usr/local/www/system_gateway_groups.php:148
#: src/usr/local/www/system_gateways.php:258
#: src/usr/local/www/system_routes.php:258 src/usr/local/www/vpn_ipsec.php:269
#: src/usr/local/www/vpn_ipsec_keys.php:115
#: src/usr/local/www/vpn_ipsec_mobile.php:440
-msgid "You must apply the changes in order for them to take effect."
+msgid "The changes must be applied for them to take effect."
msgstr ""
#: src/usr/local/www/firewall_aliases.php:219
@@ -9811,20 +9991,20 @@ msgid "Delete alias"
msgstr ""
#: src/usr/local/www/firewall_aliases.php:307
-#: src/usr/local/www/firewall_nat.php:443
-#: src/usr/local/www/firewall_nat.php:447
+#: src/usr/local/www/firewall_nat.php:475
+#: src/usr/local/www/firewall_nat.php:479
#: src/usr/local/www/firewall_nat_1to1.php:270
#: src/usr/local/www/firewall_nat_1to1.php:274
#: src/usr/local/www/firewall_nat_npt.php:259
#: src/usr/local/www/firewall_nat_npt.php:263
-#: src/usr/local/www/firewall_nat_out.php:526
-#: src/usr/local/www/firewall_nat_out.php:530
-#: src/usr/local/www/firewall_rules.php:837
+#: src/usr/local/www/firewall_nat_out.php:528
+#: src/usr/local/www/firewall_nat_out.php:532
#: src/usr/local/www/firewall_rules.php:841
+#: src/usr/local/www/firewall_rules.php:845
#: src/usr/local/www/firewall_schedule.php:278
#: src/usr/local/www/firewall_virtual_ip.php:371
-#: src/usr/local/www/interfaces.php:1882 src/usr/local/www/interfaces.php:3194
-#: src/usr/local/www/interfaces_assign.php:592
+#: src/usr/local/www/interfaces.php:1894 src/usr/local/www/interfaces.php:3201
+#: src/usr/local/www/interfaces_assign.php:597
#: src/usr/local/www/interfaces_bridge.php:190
#: src/usr/local/www/interfaces_gif.php:164
#: src/usr/local/www/interfaces_gre.php:170
@@ -9836,49 +10016,49 @@ msgstr ""
#: src/usr/local/www/interfaces_wireless.php:174
#: src/usr/local/www/load_balancer_monitor.php:180
#: src/usr/local/www/load_balancer_pool.php:215
-#: src/usr/local/www/load_balancer_virtual_server.php:204
-#: src/usr/local/www/pkg.php:600 src/usr/local/www/pkg_edit.php:1447
-#: src/usr/local/www/services_captiveportal_filemanager.php:266
-#: src/usr/local/www/services_captiveportal_hostname.php:195
-#: src/usr/local/www/services_captiveportal_ip.php:191
-#: src/usr/local/www/services_captiveportal_mac.php:254
-#: src/usr/local/www/services_captiveportal_vouchers.php:502
+#: src/usr/local/www/load_balancer_virtual_server.php:237
+#: src/usr/local/www/pkg.php:609 src/usr/local/www/pkg_edit.php:1475
+#: src/usr/local/www/services_captiveportal_filemanager.php:269
+#: src/usr/local/www/services_captiveportal_hostname.php:196
+#: src/usr/local/www/services_captiveportal_ip.php:192
+#: src/usr/local/www/services_captiveportal_mac.php:255
+#: src/usr/local/www/services_captiveportal_vouchers.php:503
#: src/usr/local/www/services_captiveportal_zones.php:156
-#: src/usr/local/www/services_dhcp.php:894
-#: src/usr/local/www/services_dhcp.php:1221
-#: src/usr/local/www/services_dhcp.php:1369
-#: src/usr/local/www/services_dhcpv6.php:1048
-#: src/usr/local/www/services_dnsmasq.php:439
-#: src/usr/local/www/services_dnsmasq.php:492
+#: src/usr/local/www/services_dhcp.php:892
+#: src/usr/local/www/services_dhcp.php:1233
+#: src/usr/local/www/services_dhcp.php:1383
+#: src/usr/local/www/services_dhcpv6.php:1062
+#: src/usr/local/www/services_dnsmasq.php:417
+#: src/usr/local/www/services_dnsmasq.php:464
#: src/usr/local/www/services_dyndns.php:245
#: src/usr/local/www/services_igmpproxy.php:178
-#: src/usr/local/www/services_ntpd.php:290
-#: src/usr/local/www/services_ntpd_acls.php:331
+#: src/usr/local/www/services_ntpd.php:292
+#: src/usr/local/www/services_ntpd_acls.php:333
#: src/usr/local/www/services_pppoe.php:181
#: src/usr/local/www/services_rfc2136.php:234
-#: src/usr/local/www/services_router_advertisements.php:373
-#: src/usr/local/www/services_unbound.php:505
-#: src/usr/local/www/services_unbound.php:554
-#: src/usr/local/www/services_unbound_acls.php:365
-#: src/usr/local/www/services_wol.php:230
-#: src/usr/local/www/system_authservers.php:438
-#: src/usr/local/www/system_camanager.php:467
-#: src/usr/local/www/system_certmanager.php:841
-#: src/usr/local/www/system_certmanager.php:1139
+#: src/usr/local/www/services_router_advertisements.php:402
+#: src/usr/local/www/services_unbound.php:534
+#: src/usr/local/www/services_unbound.php:583
+#: src/usr/local/www/services_unbound_acls.php:369
+#: src/usr/local/www/services_wol.php:240
+#: src/usr/local/www/system_authservers.php:504
+#: src/usr/local/www/system_camanager.php:464
+#: src/usr/local/www/system_certmanager.php:802
+#: src/usr/local/www/system_certmanager.php:1107
#: src/usr/local/www/system_crlmanager.php:575
-#: src/usr/local/www/system_gateway_groups.php:204
+#: src/usr/local/www/system_gateway_groups.php:222
#: src/usr/local/www/system_gateways.php:351
-#: src/usr/local/www/system_groupmanager.php:268
-#: src/usr/local/www/system_groupmanager.php:348
+#: src/usr/local/www/system_groupmanager.php:282
+#: src/usr/local/www/system_groupmanager.php:364
#: src/usr/local/www/system_routes.php:332
-#: src/usr/local/www/system_usermanager.php:415
-#: src/usr/local/www/system_usermanager.php:461
-#: src/usr/local/www/system_usermanager.php:545
+#: src/usr/local/www/system_usermanager.php:416
+#: src/usr/local/www/system_usermanager.php:462
+#: src/usr/local/www/system_usermanager.php:546
#: src/usr/local/www/vpn_ipsec_keys.php:201
#: src/usr/local/www/vpn_l2tp_users.php:158
-#: src/usr/local/www/vpn_openvpn_client.php:859
-#: src/usr/local/www/vpn_openvpn_csc.php:708
-#: src/usr/local/www/vpn_openvpn_server.php:1241
+#: src/usr/local/www/vpn_openvpn_client.php:858
+#: src/usr/local/www/vpn_openvpn_csc.php:712
+#: src/usr/local/www/vpn_openvpn_server.php:1246
msgid "Add"
msgstr ""
@@ -9890,38 +10070,38 @@ msgstr ""
msgid ""
"Aliases act as placeholders for real hosts, networks or ports. They can be "
"used to minimize the number of changes that have to be made if a host, "
-"network or port changes. <br />You can enter the name of an alias instead of "
-"the host, network or port where indicated. The alias will be resolved "
+"network or port changes. <br />The name of an alias can be entered instead "
+"of the host, network or port where indicated. The alias will be resolved "
"according to the list above.<br />If an alias cannot be resolved (e.g. "
-"because you deleted it), the corresponding element (e.g. filter/NAT/shaper "
+"because it was deleted), the corresponding element (e.g. filter/NAT/shaper "
"rule) will be considered invalid and skipped."
msgstr ""
#: src/usr/local/www/firewall_aliases_edit.php:71
#: src/usr/local/www/firewall_nat_1to1_edit.php:281
-#: src/usr/local/www/firewall_nat_edit.php:653
+#: src/usr/local/www/firewall_nat_edit.php:654
#: src/usr/local/www/firewall_nat_npt_edit.php:212
-#: src/usr/local/www/firewall_nat_out_edit.php:393
-#: src/usr/local/www/firewall_rules.php:792
-#: src/usr/local/www/firewall_rules_edit.php:1065
+#: src/usr/local/www/firewall_nat_out_edit.php:396
+#: src/usr/local/www/firewall_rules.php:796
+#: src/usr/local/www/firewall_rules_edit.php:1081
#: src/usr/local/www/firewall_schedule_edit.php:85
-#: src/usr/local/www/firewall_virtual_ip_edit.php:320
-#: src/usr/local/www/interfaces_bridge_edit.php:403
-#: src/usr/local/www/interfaces_gif_edit.php:195
-#: src/usr/local/www/interfaces_gre_edit.php:189
+#: src/usr/local/www/firewall_virtual_ip_edit.php:329
+#: src/usr/local/www/interfaces_bridge_edit.php:418
+#: src/usr/local/www/interfaces_gif_edit.php:199
+#: src/usr/local/www/interfaces_gre_edit.php:195
#: src/usr/local/www/interfaces_groups_edit.php:67
-#: src/usr/local/www/interfaces_lagg_edit.php:241
-#: src/usr/local/www/interfaces_ppps_edit.php:462
+#: src/usr/local/www/interfaces_lagg_edit.php:257
+#: src/usr/local/www/interfaces_ppps_edit.php:472
#: src/usr/local/www/interfaces_qinq_edit.php:63
#: src/usr/local/www/interfaces_vlan_edit.php:205
#: src/usr/local/www/interfaces_wireless_edit.php:201
-#: src/usr/local/www/load_balancer_monitor_edit.php:234
+#: src/usr/local/www/load_balancer_monitor_edit.php:236
#: src/usr/local/www/load_balancer_pool_edit.php:219
#: src/usr/local/www/load_balancer_virtual_server_edit.php:193
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:96
-#: src/usr/local/www/services_captiveportal_ip_edit.php:98
-#: src/usr/local/www/services_captiveportal_mac_edit.php:101
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:86
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:98
+#: src/usr/local/www/services_captiveportal_ip_edit.php:99
+#: src/usr/local/www/services_captiveportal_mac_edit.php:102
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:87
#: src/usr/local/www/services_dyndns_edit.php:273
#: src/usr/local/www/services_igmpproxy_edit.php:66
#: src/usr/local/www/services_pppoe_edit.php:314
@@ -9929,21 +10109,21 @@ msgstr ""
#: src/usr/local/www/services_unbound_acls.php:211
#: src/usr/local/www/services_wol_edit.php:137
#: src/usr/local/www/system_advanced_sysctl.php:169
-#: src/usr/local/www/system_authservers.php:380
+#: src/usr/local/www/system_authservers.php:446
#: src/usr/local/www/system_camanager.php:354
#: src/usr/local/www/system_certmanager.php:562
#: src/usr/local/www/system_crlmanager.php:296
-#: src/usr/local/www/system_gateway_groups_edit.php:180
+#: src/usr/local/www/system_gateway_groups_edit.php:181
#: src/usr/local/www/system_gateways_edit.php:572
-#: src/usr/local/www/system_groupmanager.php:277
+#: src/usr/local/www/system_groupmanager.php:291
#: src/usr/local/www/system_groupmanager_addprivs.php:69
#: src/usr/local/www/system_routes_edit.php:257
-#: src/usr/local/www/system_usermanager.php:470
+#: src/usr/local/www/system_usermanager.php:471
#: src/usr/local/www/system_usermanager_addprivs.php:70
#: src/usr/local/www/vpn_ipsec_keys_edit.php:155
#: src/usr/local/www/vpn_l2tp_users_edit.php:63
#: src/usr/local/www/vpn_openvpn_client.php:429
-#: src/usr/local/www/vpn_openvpn_csc.php:311
+#: src/usr/local/www/vpn_openvpn_csc.php:315
#: src/usr/local/www/vpn_openvpn_server.php:595
msgid "Edit"
msgstr ""
@@ -9957,6 +10137,7 @@ msgid "network"
msgstr ""
#: src/usr/local/www/firewall_aliases_edit.php:112
+#: src/usr/local/www/firewall_aliases_edit.php:730
msgid "port"
msgstr ""
@@ -9982,278 +10163,266 @@ msgid ""
"not allowed. Descriptions have been cleaned. Check and save again."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:180
-#: src/usr/local/www/firewall_aliases_edit.php:182
-msgid "Reserved word used for alias name."
-msgstr ""
-
#: src/usr/local/www/firewall_aliases_edit.php:185
-#, php-format
-msgid ""
-"The alias name must be less than 32 characters long, may not consist of only "
-"numbers, may not consist of only underscores, and may only contain the "
-"following characters: %s"
-msgstr ""
-
-#: src/usr/local/www/firewall_aliases_edit.php:191
#: src/usr/local/www/firewall_aliases_import.php:103
msgid "An alias with this name already exists."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:199
+#: src/usr/local/www/firewall_aliases_edit.php:193
#: src/usr/local/www/firewall_aliases_import.php:110
#, php-format
msgid "Cannot use a reserved keyword as an alias name: %s"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:206
+#: src/usr/local/www/firewall_aliases_edit.php:200
#: src/usr/local/www/firewall_aliases_import.php:117
msgid "An interface description with this name already exists."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:227
-msgid "You must provide a valid URL."
+#: src/usr/local/www/firewall_aliases_edit.php:221
+msgid "A valid URL must be provided."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:229
+#: src/usr/local/www/firewall_aliases_edit.php:223
msgid "Unable to fetch usable data from URL"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:241
-#: src/usr/local/www/firewall_aliases_edit.php:283
-#: src/usr/local/www/firewall_aliases_edit.php:328
+#: src/usr/local/www/firewall_aliases_edit.php:235
+#: src/usr/local/www/firewall_aliases_edit.php:277
+#: src/usr/local/www/firewall_aliases_edit.php:322
#, php-format
msgid "Entry added %s"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:290
+#: src/usr/local/www/firewall_aliases_edit.php:284
#, php-format
-msgid "You must provide a valid URL. Could not fetch usable data from '%s'."
+msgid "A valid URL must be provided. Could not fetch usable data from '%s'."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:294
+#: src/usr/local/www/firewall_aliases_edit.php:288
#, php-format
msgid "URL '%s' is not valid."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:359
+#: src/usr/local/www/firewall_aliases_edit.php:353
#, php-format
msgid "Range is too large to expand into individual host IP addresses (%s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:360
-#: src/usr/local/www/firewall_aliases_edit.php:390
+#: src/usr/local/www/firewall_aliases_edit.php:354
+#: src/usr/local/www/firewall_aliases_edit.php:384
#, php-format
msgid "The maximum number of entries in an alias is %s"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:368
+#: src/usr/local/www/firewall_aliases_edit.php:362
#: src/usr/local/www/firewall_aliases_import.php:142
#, php-format
msgid "IPv6 address ranges are not supported (%s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:389
+#: src/usr/local/www/firewall_aliases_edit.php:383
#, php-format
msgid "Subnet is too large to expand into individual host IP addresses (%s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:397
+#: src/usr/local/www/firewall_aliases_edit.php:391
#, php-format
msgid "IPv6 subnets are not supported in host aliases (%s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:424
+#: src/usr/local/www/firewall_aliases_edit.php:418
#, php-format
msgid "The maximum number of entries in an alias has been exceeded (%s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:443
+#: src/usr/local/www/firewall_aliases_edit.php:437
#, php-format
msgid "%s is not a valid port or alias."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:448
+#: src/usr/local/www/firewall_aliases_edit.php:442
#, php-format
msgid "%1$s is not a valid %2$s address, FQDN or alias."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:454
+#: src/usr/local/www/firewall_aliases_edit.php:448
#, php-format
msgid "%1$s/%2$s is not a valid subnet."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:463
+#: src/usr/local/www/firewall_aliases_edit.php:457
#, php-format
msgid ""
"The alias(es): %s cannot be nested because they are not of the same type."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:565
-#: src/usr/local/www/firewall_aliases_edit.php:623
+#: src/usr/local/www/firewall_aliases_edit.php:559
+#: src/usr/local/www/firewall_aliases_edit.php:620
msgid "Network(s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:566
-#: src/usr/local/www/firewall_aliases_edit.php:622
+#: src/usr/local/www/firewall_aliases_edit.php:560
+#: src/usr/local/www/firewall_aliases_edit.php:619
msgid "Host(s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:567
-#: src/usr/local/www/firewall_aliases_edit.php:624
+#: src/usr/local/www/firewall_aliases_edit.php:561
+#: src/usr/local/www/firewall_aliases_edit.php:621
msgid "Port(s)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:568
-#: src/usr/local/www/firewall_aliases_edit.php:588
-#: src/usr/local/www/firewall_aliases_edit.php:625
+#: src/usr/local/www/firewall_aliases_edit.php:562
+#: src/usr/local/www/firewall_aliases_edit.php:582
+#: src/usr/local/www/firewall_aliases_edit.php:622
msgid "URL (IPs)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:569
-#: src/usr/local/www/firewall_aliases_edit.php:589
-#: src/usr/local/www/firewall_aliases_edit.php:626
+#: src/usr/local/www/firewall_aliases_edit.php:563
+#: src/usr/local/www/firewall_aliases_edit.php:583
+#: src/usr/local/www/firewall_aliases_edit.php:623
msgid "URL (Ports)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:570
-#: src/usr/local/www/firewall_aliases_edit.php:590
-#: src/usr/local/www/firewall_aliases_edit.php:627
+#: src/usr/local/www/firewall_aliases_edit.php:564
+#: src/usr/local/www/firewall_aliases_edit.php:584
+#: src/usr/local/www/firewall_aliases_edit.php:624
msgid "URL Table (IPs)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:571
-#: src/usr/local/www/firewall_aliases_edit.php:591
-#: src/usr/local/www/firewall_aliases_edit.php:628
+#: src/usr/local/www/firewall_aliases_edit.php:565
+#: src/usr/local/www/firewall_aliases_edit.php:585
+#: src/usr/local/www/firewall_aliases_edit.php:625
msgid "URL Table (Ports)"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:575
+#: src/usr/local/www/firewall_aliases_edit.php:569
+#: src/usr/local/www/services_unbound_acls.php:313
msgid "Add Network"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:576
+#: src/usr/local/www/firewall_aliases_edit.php:570
msgid "Add Host"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:577
+#: src/usr/local/www/firewall_aliases_edit.php:571
msgid "Add Port"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:578
-#: src/usr/local/www/firewall_aliases_edit.php:579
+#: src/usr/local/www/firewall_aliases_edit.php:572
+#: src/usr/local/www/firewall_aliases_edit.php:573
msgid "Add URL"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:580
-#: src/usr/local/www/firewall_aliases_edit.php:581
+#: src/usr/local/www/firewall_aliases_edit.php:574
+#: src/usr/local/www/firewall_aliases_edit.php:575
msgid "Add URL Table"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:585
+#: src/usr/local/www/firewall_aliases_edit.php:579
msgid "Network or FQDN"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:586
+#: src/usr/local/www/firewall_aliases_edit.php:580
msgid "IP or FQDN"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:594
+#: src/usr/local/www/firewall_aliases_edit.php:588
msgid "The value after the \"/\" is the update frequency in days."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:597
+#: src/usr/local/www/firewall_aliases_edit.php:591
msgid ""
"Networks are specified in CIDR format. Select the CIDR mask that pertains to "
"each entry. /32 specifies a single IPv4 host, /128 specifies a single IPv6 "
"host, /24 specifies 255.255.255.0, /64 specifies a normal IPv6 network, etc. "
"Hostnames (FQDNs) may also be specified, using a /32 mask for IPv4 or /128 "
-"for IPv6. You may also enter an IP range such as 192.168.1.1-192.168.1.254 "
+"for IPv6. An IP range such as 192.168.1.1-192.168.1.254 may also be entered "
"and a list of CIDR networks will be derived to fill the range."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:598
+#: src/usr/local/www/firewall_aliases_edit.php:592
msgid ""
-"Enter as many hosts as you would like. Hosts must be specified by their IP "
-"address or fully qualified domain name (FQDN). FQDN hostnames are "
-"periodically re-resolved and updated. If multiple IPs are returned by a DNS "
-"query, all are used. You may also enter an IP range such as "
-"192.168.1.1-192.168.1.10 or a small subnet such as 192.168.1.16/28 and a "
-"list of individual IP addresses will be generated."
+"Enter as many hosts as desired. Hosts must be specified by their IP address "
+"or fully qualified domain name (FQDN). FQDN hostnames are periodically re-"
+"resolved and updated. If multiple IPs are returned by a DNS query, all are "
+"used. An IP range such as 192.168.1.1-192.168.1.10 or a small subnet such as "
+"192.168.1.16/28 may also be entered and a list of individual IP addresses "
+"will be generated."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:599
+#: src/usr/local/www/firewall_aliases_edit.php:593
msgid ""
-"Enter as many ports as you wish. Port ranges can be expressed by separating "
+"Enter as many ports as desired. Port ranges can be expressed by separating "
"with a colon."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:600
+#: src/usr/local/www/firewall_aliases_edit.php:594
msgid ""
-"Enter as many URLs as you wish. After saving we will download the URL and "
-"import the items into the alias. Use only with small sets of IP addresses "
+"Enter as many URLs as desired. After saving, the URLs will be downloaded and "
+"the items imported into the alias. Use only with small sets of IP addresses "
"(less than 3000)."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:601
+#: src/usr/local/www/firewall_aliases_edit.php:595
msgid ""
-"Enter as many URLs as you wish. After saving we will download the URL and "
-"import the items into the alias. Use only with small sets of Ports (less "
+"Enter as many URLs as desired. After saving, the URLs will be downloaded and "
+"the items imported into the alias. Use only with small sets of Ports (less "
"than 3000)."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:602
+#: src/usr/local/www/firewall_aliases_edit.php:596
msgid ""
"Enter a single URL containing a large number of IPs and/or Subnets. After "
-"saving we will download the URL and create a table file containing these "
-"addresses. This will work with large numbers of addresses (30,000+) or small "
-"numbers."
+"saving, the URLs will be downloaded and a table file containing these "
+"addresses will be created. This will work with large numbers of addresses "
+"(30,000+) or small numbers."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:604
+#: src/usr/local/www/firewall_aliases_edit.php:598
msgid ""
"Enter a single URL containing a list of Port numbers and/or Port ranges. "
-"After saving we will download the URL."
+"After saving, the URL will be downloaded."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:670
+#: src/usr/local/www/firewall_aliases_edit.php:667
msgid "Properties"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:677
+#: src/usr/local/www/firewall_aliases_edit.php:674
#: src/usr/local/www/firewall_aliases_import.php:203
msgid ""
"The name of the alias may only consist of the characters \"a-z, A-Z, 0-9 and "
"_\"."
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:689
-#: src/usr/local/www/firewall_nat_1to1_edit.php:472
-#: src/usr/local/www/firewall_nat_1to1_edit.php:499
+#: src/usr/local/www/firewall_aliases_edit.php:686
+#: src/usr/local/www/firewall_nat_1to1_edit.php:469
+#: src/usr/local/www/firewall_nat_1to1_edit.php:496
#: src/usr/local/www/firewall_nat_edit.php:752
#: src/usr/local/www/firewall_nat_edit.php:819
#: src/usr/local/www/firewall_nat_out_edit.php:514
#: src/usr/local/www/firewall_nat_out_edit.php:538
-#: src/usr/local/www/firewall_rules_edit.php:433
+#: src/usr/local/www/firewall_rules_edit.php:449
#: src/usr/local/www/firewall_virtual_ip.php:297
#: src/usr/local/www/firewall_virtual_ip_edit.php:129
-#: src/usr/local/www/firewall_virtual_ip_edit.php:354
+#: src/usr/local/www/firewall_virtual_ip_edit.php:363
#: src/usr/local/www/load_balancer_monitor.php:141
-#: src/usr/local/www/load_balancer_monitor_edit.php:118
-#: src/usr/local/www/load_balancer_monitor_edit.php:320
-#: src/usr/local/www/services_captiveportal.php:998
-#: src/usr/local/www/services_dhcp.php:1200
+#: src/usr/local/www/load_balancer_monitor_edit.php:120
+#: src/usr/local/www/load_balancer_monitor_edit.php:318
+#: src/usr/local/www/services_captiveportal.php:1007
+#: src/usr/local/www/services_dhcp.php:1210
#: src/usr/local/www/services_igmpproxy.php:122
#: src/usr/local/www/services_igmpproxy_edit.php:202
#: src/usr/local/www/status_logs_vpn.php:210
#: src/usr/local/www/status_logs_vpn.php:440
-#: src/usr/local/www/status_ntpd.php:202
-#: src/usr/local/www/system_authservers.php:198
-#: src/usr/local/www/system_authservers.php:221
-#: src/usr/local/www/system_authservers.php:410
-#: src/usr/local/www/system_authservers.php:467
-#: src/usr/local/www/system_certmanager.php:810
-#: src/usr/local/www/system_certmanager.php:818
+#: src/usr/local/www/status_ntpd.php:303
+#: src/usr/local/www/system_authservers.php:264
+#: src/usr/local/www/system_authservers.php:287
+#: src/usr/local/www/system_authservers.php:476
+#: src/usr/local/www/system_authservers.php:533
+#: src/usr/local/www/system_certmanager.php:769
+#: src/usr/local/www/system_certmanager.php:777
#: src/usr/local/www/vpn_ipsec_keys.php:134
#: src/usr/local/www/vpn_ipsec_phase2.php:560
#: src/usr/local/www/vpn_ipsec_phase2.php:586
@@ -10261,58 +10430,14 @@ msgstr ""
msgid "Type"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:699
+#: src/usr/local/www/firewall_aliases_edit.php:696
msgid "Hint"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:733
-#: src/usr/local/www/firewall_nat_npt_edit.php:247
-#: src/usr/local/www/firewall_nat_npt_edit.php:261
-#: src/usr/local/www/firewall_nat_out_edit.php:569
-#: src/usr/local/www/status_lb_vs.php:97 src/usr/local/www/system.php:405
-#: src/usr/local/www/vpn_ipsec_phase2.php:559
-#: src/usr/local/www/vpn_ipsec_phase2.php:566
-#: src/usr/local/www/vpn_ipsec_phase2.php:579
-#: src/usr/local/www/vpn_ipsec_phase2.php:592
-#: src/usr/local/www/vpn_ipsec_phase2.php:605
-#: src/usr/local/www/vpn_ipsec_phase2.php:612
-msgid "Address"
-msgstr ""
-
-#: src/usr/local/www/firewall_aliases_edit.php:746
-#: src/usr/local/www/firewall_nat.php:451
-#: src/usr/local/www/firewall_nat_1to1.php:278
-#: src/usr/local/www/firewall_nat_npt.php:267
-#: src/usr/local/www/firewall_nat_out.php:534
-#: src/usr/local/www/firewall_rules.php:845
-#: src/usr/local/www/firewall_schedule_edit.php:653
-#: src/usr/local/www/interfaces_assign.php:568
-#: src/usr/local/www/interfaces_vlan.php:166
-#: src/usr/local/www/pkg_edit.php:1435 src/usr/local/www/services_dhcp.php:1211
-#: src/usr/local/www/services_dhcpv6.php:950
-#: src/usr/local/www/services_dnsmasq_edit.php:322
-#: src/usr/local/www/services_igmpproxy_edit.php:264
-#: src/usr/local/www/services_ntpd.php:282
-#: src/usr/local/www/services_ntpd_acls.php:320
-#: src/usr/local/www/services_pppoe_edit.php:557
-#: src/usr/local/www/services_router_advertisements.php:361
-#: src/usr/local/www/services_unbound_acls.php:300
-#: src/usr/local/www/services_unbound_host_edit.php:323
-#: src/usr/local/www/status_ipsec_sad.php:138
-#: src/usr/local/www/system_certmanager.php:829
-#: src/usr/local/www/system_usermanager.php:550
-msgid "Delete"
-msgstr ""
-
#: src/usr/local/www/firewall_aliases_import.php:72
msgid "Bulk import"
msgstr ""
-#: src/usr/local/www/firewall_aliases_import.php:98
-#, php-format
-msgid "The alias name may only consist of the characters %s"
-msgstr ""
-
#: src/usr/local/www/firewall_aliases_import.php:144
#, php-format
msgid "%s is not an IP address. Please correct the error to continue"
@@ -10336,19 +10461,20 @@ msgstr ""
msgid "Alias Name"
msgstr ""
-#: src/usr/local/www/firewall_aliases_import.php:216
+#: src/usr/local/www/firewall_aliases_import.php:215
msgid "Aliases to import"
msgstr ""
-#: src/usr/local/www/firewall_aliases_import.php:218
+#: src/usr/local/www/firewall_aliases_import.php:217
msgid ""
"Paste in the aliases to import separated by a carriage return. Common "
-"examples are lists of IPs, networks, blacklists, etc.The list may contain IP "
-"addresses, with or without CIDR prefix, IP ranges, blank lines (ignored) and "
-"an optional description after each IP. e.g.:<ul><li>172.16.1.2</"
+"examples are lists of IPs, networks, blacklists, etc. The list may contain "
+"IP addresses, with or without CIDR prefix, IP ranges, blank lines (ignored) "
+"and an optional description after each IP. e.g.:</span><ul><li>172.16.1.2</"
"li><li>172.16.0.0/24</li><li>10.11.12.100-10.11.12.200</li><li>192.168.1.254 "
"Home router</li><li>10.20.0.0/16 Office network</"
-"li><li>10.40.1.10-10.40.1.19 Managed switches</li></ul>"
+"li><li>10.40.1.10-10.40.1.19 Managed switches</li></ul><span class=\"help-"
+"block\">"
msgstr ""
#: src/usr/local/www/firewall_nat.php:198
@@ -10358,7 +10484,7 @@ msgstr ""
#: src/usr/local/www/firewall_nat.php:206
#: src/usr/local/www/firewall_nat.php:219
#: src/usr/local/www/firewall_nat_1to1.php:168
-#: src/usr/local/www/firewall_nat_edit.php:653
+#: src/usr/local/www/firewall_nat_edit.php:654
#: src/usr/local/www/firewall_nat_npt.php:168
#: src/usr/local/www/firewall_nat_out.php:252
msgid "Port Forward"
@@ -10385,7 +10511,7 @@ msgstr ""
#: src/usr/local/www/firewall_nat_npt.php:170
#: src/usr/local/www/firewall_nat_out.php:239
#: src/usr/local/www/firewall_nat_out.php:254
-#: src/usr/local/www/firewall_nat_out_edit.php:393
+#: src/usr/local/www/firewall_nat_out_edit.php:396
msgid "Outbound"
msgstr ""
@@ -10399,9 +10525,9 @@ msgid "NPt"
msgstr ""
#: src/usr/local/www/firewall_nat.php:230
-#: src/usr/local/www/firewall_rules.php:72
-#: src/usr/local/www/firewall_rules.php:355
-#: src/usr/local/www/firewall_rules_edit.php:1060
+#: src/usr/local/www/firewall_rules.php:75
+#: src/usr/local/www/firewall_rules.php:358
+#: src/usr/local/www/firewall_rules_edit.php:1076
#: src/usr/local/www/head.inc:277
msgid "Rules"
msgstr ""
@@ -10418,110 +10544,113 @@ msgstr ""
msgid "NAT Ports"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:294
+#: src/usr/local/www/firewall_nat.php:305
#: src/usr/local/www/firewall_nat_1to1.php:211
#: src/usr/local/www/firewall_nat_npt.php:212
-#: src/usr/local/www/firewall_rules.php:525 src/usr/local/www/vpn_ipsec.php:308
+#: src/usr/local/www/firewall_rules.php:528 src/usr/local/www/vpn_ipsec.php:308
#: src/usr/local/www/vpn_ipsec.php:458
msgid "click to toggle enabled/disabled status"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:301
+#: src/usr/local/www/firewall_nat.php:307
+#: src/usr/local/www/firewall_nat_1to1.php:213
+#: src/usr/local/www/firewall_nat_out.php:368
+msgid "Negated: This rule excludes NAT from a later rule"
+msgstr ""
+
+#: src/usr/local/www/firewall_nat.php:315
msgid "All traffic matching this NAT entry is passed"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:305
+#: src/usr/local/www/firewall_nat.php:319
#, php-format
msgid "Firewall rule ID %s is managed by this rule"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:332
-#: src/usr/local/www/firewall_nat.php:349
-#: src/usr/local/www/firewall_nat.php:367
-#: src/usr/local/www/firewall_nat.php:384
-#: src/usr/local/www/firewall_rules.php:725
-#: src/usr/local/www/firewall_rules.php:734
-#: src/usr/local/www/firewall_rules.php:743
-#: src/usr/local/www/firewall_rules.php:752
+#: src/usr/local/www/firewall_nat.php:346
+#: src/usr/local/www/firewall_nat.php:363
+#: src/usr/local/www/firewall_nat.php:381
+#: src/usr/local/www/firewall_nat.php:398
+#: src/usr/local/www/firewall_nat.php:415
+#: src/usr/local/www/firewall_nat.php:433
+#: src/usr/local/www/firewall_rules.php:728
+#: src/usr/local/www/firewall_rules.php:737
+#: src/usr/local/www/firewall_rules.php:746
+#: src/usr/local/www/firewall_rules.php:755
msgid "Alias details"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:419
+#: src/usr/local/www/firewall_nat.php:451
msgid "Edit rule"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:420
+#: src/usr/local/www/firewall_nat.php:452
msgid "Add a new NAT based on this one"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:421
+#: src/usr/local/www/firewall_nat.php:453
msgid "Delete rule"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:441
-#: src/usr/local/www/firewall_rules.php:835
+#: src/usr/local/www/firewall_nat.php:473
+#: src/usr/local/www/firewall_rules.php:839
msgid "Add rule to the top of the list"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:445
-#: src/usr/local/www/firewall_rules.php:839
+#: src/usr/local/www/firewall_nat.php:477
+#: src/usr/local/www/firewall_rules.php:843
msgid "Add rule to the end of the list"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:449
-#: src/usr/local/www/firewall_rules.php:843
+#: src/usr/local/www/firewall_nat.php:481
+#: src/usr/local/www/firewall_rules.php:847
msgid "Delete selected rules"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:453
-#: src/usr/local/www/firewall_rules.php:847
+#: src/usr/local/www/firewall_nat.php:485
+#: src/usr/local/www/firewall_rules.php:851
msgid "Save rule order"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:457
-#: src/usr/local/www/firewall_rules.php:851
+#: src/usr/local/www/firewall_nat.php:489
+#: src/usr/local/www/firewall_rules.php:855
msgid "Add separator"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:459
-#: src/usr/local/www/firewall_rules.php:853
+#: src/usr/local/www/firewall_nat.php:491
+#: src/usr/local/www/firewall_rules.php:857
msgid "Separator"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:468
-#: src/usr/local/www/firewall_rules.php:896
-#: src/usr/local/www/interfaces.php:1889 src/usr/local/www/interfaces.php:3201
-msgid "Cancel"
-msgstr ""
-
-#: src/usr/local/www/firewall_nat.php:470
-#: src/usr/local/www/firewall_rules.php:898
+#: src/usr/local/www/firewall_nat.php:502
+#: src/usr/local/www/firewall_rules.php:905
msgid "Enter a description, Save, then drag to final location."
msgstr ""
-#: src/usr/local/www/firewall_nat.php:506
-msgid "You have moved one or more Port Forward rules but have not yet saved"
+#: src/usr/local/www/firewall_nat.php:538
+msgid ""
+"One or more Port Forward rules have been moved but have not yet been saved"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:521
-#: src/usr/local/www/firewall_rules.php:862
+#: src/usr/local/www/firewall_nat.php:553
+#: src/usr/local/www/firewall_rules.php:866
msgid "Legend"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:522
+#: src/usr/local/www/firewall_nat.php:554
#: src/usr/local/www/firewall_nat_edit.php:926
#: src/usr/local/www/firewall_nat_edit.php:961
-#: src/usr/local/www/firewall_rules.php:863
-#: src/usr/local/www/firewall_rules_edit.php:1114
-#: src/usr/local/www/services_captiveportal_mac.php:94
-#: src/usr/local/www/services_captiveportal_mac_edit.php:236
+#: src/usr/local/www/firewall_rules.php:867
+#: src/usr/local/www/firewall_rules_edit.php:1130
+#: src/usr/local/www/services_captiveportal_mac.php:95
+#: src/usr/local/www/services_captiveportal_mac_edit.php:237
#: src/usr/local/www/status_logs_common.inc:451
#: src/usr/local/www/widgets/widgets/log.widget.php:258
#: src/usr/local/www/status_logs_common.inc:452
msgid "Pass"
msgstr ""
-#: src/usr/local/www/firewall_nat.php:523
+#: src/usr/local/www/firewall_nat.php:555
msgid "Linked rule"
msgstr ""
@@ -10538,7 +10667,7 @@ msgid "External IP"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:185
-#: src/usr/local/www/firewall_nat_1to1_edit.php:458
+#: src/usr/local/www/firewall_nat_1to1_edit.php:455
#: src/usr/local/www/status_upnp.php:105
msgid "Internal IP"
msgstr ""
@@ -10547,25 +10676,21 @@ msgstr ""
msgid "Destination IP"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1.php:213
-msgid "Negated: This rule excludes NAT from a later rule"
-msgstr ""
-
#: src/usr/local/www/firewall_nat_1to1.php:252
#: src/usr/local/www/firewall_nat_npt.php:242
-#: src/usr/local/www/firewall_nat_out.php:509
+#: src/usr/local/www/firewall_nat_out.php:511
msgid "Edit mapping"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:253
#: src/usr/local/www/firewall_nat_npt.php:243
-#: src/usr/local/www/firewall_nat_out.php:510
+#: src/usr/local/www/firewall_nat_out.php:512
msgid "Add a new mapping based on this one"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:254
#: src/usr/local/www/firewall_nat_npt.php:244
-#: src/usr/local/www/firewall_nat_out.php:511
+#: src/usr/local/www/firewall_nat_out.php:513
msgid "Delete mapping"
msgstr ""
@@ -10586,32 +10711,39 @@ msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:280
#: src/usr/local/www/firewall_nat_npt.php:269
-#: src/usr/local/www/firewall_nat_out.php:536
+#: src/usr/local/www/firewall_nat_out.php:538
msgid "Save mapping order"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:288
-msgid "Depending on the way your WAN connection is setup, you may also need a "
+msgid "Depending on the way the WAN connection is setup, this may also need a "
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:289
-msgid "Virtual IP."
+#: src/usr/local/www/firewall_nat_out.php:676
+#: src/usr/local/www/firewall_nat_out_edit.php:582
+#: src/usr/local/www/status_carp.php:207
+#: src/usr/local/www/system_gateway_groups_edit.php:321
+#: src/usr/local/www/system_gateway_groups_edit.php:341
+#: src/usr/local/www/system_gateway_groups_edit.php:353
+msgid "Virtual IP"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:290
msgid ""
-"If you add a 1:1 NAT entry for any of the interface IPs on this system, it "
-"will make this system inaccessible on that IP address. i.e. if you use your "
-"WAN IP address, any services on this system (IPsec, OpenVPN server, etc.) "
+"If a 1:1 NAT entry is added for any of the interface IPs on this system, it "
+"will make this system inaccessible on that IP address. i.e. if the WAN IP "
+"address is used, any services on this system (IPsec, OpenVPN server, etc.) "
"using the WAN IP address will no longer function."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1.php:325
-msgid "You have moved one or more NAT 1:1 mappings but have not yet saved"
+msgid ""
+"One or more NAT 1:1 mappings have been moved but have not yet been saved"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:145
-#: src/usr/local/www/firewall_nat_out_edit.php:175
+#: src/usr/local/www/firewall_nat_out_edit.php:178
#, php-format
msgid ""
"Invalid characters detected (%s). Please remove invalid characters and save "
@@ -10632,10 +10764,8 @@ msgid "A valid external subnet must be specified."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:205
-#: src/usr/local/www/firewall_nat_edit.php:312
-#: src/usr/local/www/firewall_rules_edit.php:521
-#: src/usr/local/www/firewall_rules_edit.php:526
-msgid "You must specify single host or alias for alias entries."
+#: src/usr/local/www/firewall_nat_edit.php:316
+msgid "Alias entries must specify a single host or alias."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:211
@@ -10648,35 +10778,31 @@ msgid "A valid internal bit count must be specified."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:222
-#: src/usr/local/www/firewall_nat_edit.php:326
-#: src/usr/local/www/firewall_rules_edit.php:540
+#: src/usr/local/www/firewall_nat_edit.php:333
+#: src/usr/local/www/firewall_rules_edit.php:556
#, php-format
msgid "%s is not a valid destination IP address or alias."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:226
-#: src/usr/local/www/firewall_nat_edit.php:329
-#: src/usr/local/www/firewall_nat_out_edit.php:235
-#: src/usr/local/www/firewall_rules_edit.php:543
+#: src/usr/local/www/firewall_nat_edit.php:339
+#: src/usr/local/www/firewall_nat_out_edit.php:238
+#: src/usr/local/www/firewall_rules_edit.php:559
msgid "A valid destination bit count must be specified."
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:287
-#: src/usr/local/www/firewall_nat_1to1_edit.php:329
-#: src/usr/local/www/firewall_nat_edit.php:541
-#: src/usr/local/www/firewall_nat_edit.php:587
-#: src/usr/local/www/firewall_rules_edit.php:1305
-msgid "Single host or alias"
+msgid "Single host"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:287
#: src/usr/local/www/firewall_nat_1to1_edit.php:329
-#: src/usr/local/www/firewall_nat_edit.php:541
-#: src/usr/local/www/firewall_nat_edit.php:587
+#: src/usr/local/www/firewall_nat_edit.php:551
+#: src/usr/local/www/firewall_nat_edit.php:591
#: src/usr/local/www/firewall_nat_out_edit.php:513
#: src/usr/local/www/firewall_nat_out_edit.php:537
-#: src/usr/local/www/firewall_rules_edit.php:1306
-#: src/usr/local/www/firewall_virtual_ip_edit.php:403
+#: src/usr/local/www/firewall_rules_edit.php:1322
+#: src/usr/local/www/firewall_virtual_ip_edit.php:412
#: src/usr/local/www/system_routes.php:276
#: src/usr/local/www/vpn_ipsec_mobile.php:521
#: src/usr/local/www/vpn_ipsec_phase2.php:559
@@ -10687,79 +10813,79 @@ msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:292
#: src/usr/local/www/firewall_nat_1to1_edit.php:332
-#: src/usr/local/www/firewall_nat_edit.php:546
-#: src/usr/local/www/firewall_nat_edit.php:590
-#: src/usr/local/www/firewall_rules_edit.php:1317
+#: src/usr/local/www/firewall_nat_edit.php:554
+#: src/usr/local/www/firewall_nat_edit.php:594
+#: src/usr/local/www/firewall_rules_edit.php:1333
#: src/usr/local/www/guiconfig.inc:251
msgid "PPPoE clients"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:296
#: src/usr/local/www/firewall_nat_1to1_edit.php:336
-#: src/usr/local/www/firewall_nat_edit.php:550
-#: src/usr/local/www/firewall_nat_edit.php:594
-#: src/usr/local/www/firewall_rules_edit.php:1320
+#: src/usr/local/www/firewall_nat_edit.php:558
+#: src/usr/local/www/firewall_nat_edit.php:598
+#: src/usr/local/www/firewall_rules_edit.php:1336
#: src/usr/local/www/guiconfig.inc:252
msgid "L2TP clients"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:329
-#: src/usr/local/www/firewall_nat_edit.php:587
+#: src/usr/local/www/firewall_nat_edit.php:551
+#: src/usr/local/www/firewall_nat_edit.php:591
+#: src/usr/local/www/firewall_rules_edit.php:1321
+msgid "Single host or alias"
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_1to1_edit.php:329
+#: src/usr/local/www/firewall_nat_edit.php:591
#: src/usr/local/www/firewall_nat_out_edit.php:513
-#: src/usr/local/www/firewall_rules_edit.php:1314
+#: src/usr/local/www/firewall_rules_edit.php:1330
msgid "This Firewall (self)"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:400
+#: src/usr/local/www/firewall_nat_1to1_edit.php:397
msgid "Edit NAT 1:1 Entry"
msgstr ""
#: src/usr/local/www/firewall_nat_1to1_edit.php:404
-msgid "Negate"
+msgid "When disabled, the rule will not have any effect."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:407
-msgid "Use this to exclude addresses from a rule that follows this one"
-msgstr ""
-
-#: src/usr/local/www/firewall_nat_1to1_edit.php:411
+#: src/usr/local/www/firewall_nat_1to1_edit.php:408
msgid "No BINAT (NOT)"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:414
-#: src/usr/local/www/firewall_nat_edit.php:679
-msgid ""
-"This option is rarely needed, don't use this unless you know what you're "
-"doing."
+#: src/usr/local/www/firewall_nat_1to1_edit.php:411
+msgid "Excludes the address from a later, more general, rule."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:426
-#: src/usr/local/www/firewall_nat_edit.php:691
+#: src/usr/local/www/firewall_nat_1to1_edit.php:423
+#: src/usr/local/www/firewall_nat_edit.php:689
#: src/usr/local/www/firewall_nat_npt_edit.php:189
-#: src/usr/local/www/firewall_rules.php:173
-#: src/usr/local/www/firewall_rules_edit.php:1040
+#: src/usr/local/www/firewall_rules.php:176
+#: src/usr/local/www/firewall_rules_edit.php:1056
msgid "L2TP VPN"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:431
-#: src/usr/local/www/firewall_nat_edit.php:696
+#: src/usr/local/www/firewall_nat_1to1_edit.php:428
+#: src/usr/local/www/firewall_nat_edit.php:694
#: src/usr/local/www/firewall_nat_npt_edit.php:195
-#: src/usr/local/www/firewall_rules.php:180
-#: src/usr/local/www/firewall_rules_edit.php:1044
+#: src/usr/local/www/firewall_rules.php:183
+#: src/usr/local/www/firewall_rules_edit.php:1060
#: src/usr/local/www/head.inc:300 src/usr/local/www/services_pppoe.php:116
#: src/usr/local/www/services_pppoe.php:130
#: src/usr/local/www/services_pppoe_edit.php:314
msgid "PPPoE Server"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:436
-#: src/usr/local/www/firewall_nat_edit.php:701
+#: src/usr/local/www/firewall_nat_1to1_edit.php:433
+#: src/usr/local/www/firewall_nat_edit.php:699
#: src/usr/local/www/firewall_nat_npt_edit.php:201
-#: src/usr/local/www/firewall_rules.php:187
-#: src/usr/local/www/firewall_rules_edit.php:1049
+#: src/usr/local/www/firewall_rules.php:190
+#: src/usr/local/www/firewall_rules_edit.php:1065
#: src/usr/local/www/head.inc:315 src/usr/local/www/head.inc:331
-#: src/usr/local/www/status_graph.php:87 src/usr/local/www/status_graph.php:252
-#: src/usr/local/www/status_ipsec.php:70
+#: src/usr/local/www/status_graph.php:87 src/usr/local/www/status_graph.php:267
+#: src/usr/local/www/status_ipsec.php:490
#: src/usr/local/www/status_ipsec_leases.php:66
#: src/usr/local/www/status_ipsec_sad.php:69
#: src/usr/local/www/status_ipsec_spd.php:72
@@ -10770,7 +10896,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_keys_edit.php:155
#: src/usr/local/www/vpn_ipsec_mobile.php:339
#: src/usr/local/www/vpn_ipsec_phase1.php:664
-#: src/usr/local/www/vpn_ipsec_phase1.php:667
+#: src/usr/local/www/vpn_ipsec_phase1.php:666
#: src/usr/local/www/vpn_ipsec_phase2.php:441
#: src/usr/local/www/vpn_ipsec_phase2.php:444
#: src/usr/local/www/vpn_ipsec_settings.php:236
@@ -10778,51 +10904,51 @@ msgstr ""
msgid "IPsec"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:449
-#: src/usr/local/www/firewall_nat_edit.php:714
+#: src/usr/local/www/firewall_nat_1to1_edit.php:446
+#: src/usr/local/www/firewall_nat_edit.php:712
#: src/usr/local/www/firewall_nat_out_edit.php:496
msgid ""
"Choose which interface this rule applies to. In most cases \"WAN\" is "
"specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:453
+#: src/usr/local/www/firewall_nat_1to1_edit.php:450
msgid "External subnet IP"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:455
+#: src/usr/local/www/firewall_nat_1to1_edit.php:452
msgid ""
"Enter the external (usually on a WAN) subnet's starting address for the 1:1 "
"mapping. The subnet mask from the internal address below will be applied to "
"this IP address."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:465
-#: src/usr/local/www/firewall_nat_1to1_edit.php:492
+#: src/usr/local/www/firewall_nat_1to1_edit.php:462
+#: src/usr/local/www/firewall_nat_1to1_edit.php:489
msgid "Invert the sense of the match."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:478
-#: src/usr/local/www/firewall_nat_1to1_edit.php:505
+#: src/usr/local/www/firewall_nat_1to1_edit.php:475
+#: src/usr/local/www/firewall_nat_1to1_edit.php:502
#: src/usr/local/www/firewall_nat_edit.php:758
#: src/usr/local/www/firewall_nat_edit.php:825
msgid "Address/mask"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:480
+#: src/usr/local/www/firewall_nat_1to1_edit.php:477
msgid ""
"Enter the internal (LAN) subnet for the 1:1 mapping. The subnet size "
"specified for the internal subnet will be applied to the external subnet."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:485
+#: src/usr/local/www/firewall_nat_1to1_edit.php:482
#: src/usr/local/www/firewall_nat_edit.php:805
#: src/usr/local/www/firewall_nat_out.php:314
-#: src/usr/local/www/firewall_nat_out.php:565
-#: src/usr/local/www/firewall_nat_out_edit.php:181
+#: src/usr/local/www/firewall_nat_out.php:567
+#: src/usr/local/www/firewall_nat_out_edit.php:184
#: src/usr/local/www/firewall_nat_out_edit.php:531
-#: src/usr/local/www/firewall_rules.php:409
-#: src/usr/local/www/firewall_rules_edit.php:436
+#: src/usr/local/www/firewall_rules.php:412
+#: src/usr/local/www/firewall_rules_edit.php:452
#: src/usr/local/www/status_ipsec_sad.php:99
#: src/usr/local/www/status_ipsec_spd.php:92
#: src/usr/local/www/status_logs_filter.php:195
@@ -10832,27 +10958,27 @@ msgstr ""
msgid "Destination"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:507
+#: src/usr/local/www/firewall_nat_1to1_edit.php:504
msgid ""
"The 1:1 mapping will only be used for connections to or from the specified "
"destination. Hint: this is usually \"Any\"."
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:523
+#: src/usr/local/www/firewall_nat_1to1_edit.php:520
#: src/usr/local/www/firewall_nat_edit.php:916
msgid "Use system default"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:525
+#: src/usr/local/www/firewall_nat_1to1_edit.php:522
#: src/usr/local/www/firewall_nat_edit.php:919
-#: src/usr/local/www/firewall_rules.php:799
+#: src/usr/local/www/firewall_rules.php:803
#: src/usr/local/www/services_dyndns_edit.php:292
-#: src/usr/local/www/vpn_ipsec_phase1.php:894
-#: src/usr/local/www/vpn_openvpn_csc.php:358
+#: src/usr/local/www/vpn_ipsec_phase1.php:892
+#: src/usr/local/www/vpn_openvpn_csc.php:362
msgid "Disable"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:520
+#: src/usr/local/www/firewall_nat_1to1_edit.php:517
#: src/usr/local/www/firewall_nat_edit.php:913
msgid "NAT reflection"
msgstr ""
@@ -10883,121 +11009,160 @@ msgid "\"%s\" is not a valid redirect target IP address or host alias."
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:293
-#: src/usr/local/www/firewall_rules_edit.php:471
+#, php-format
+msgid "Redirect target IP must be IPv4."
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_edit.php:297
+#: src/usr/local/www/firewall_rules_edit.php:487
#, php-format
msgid ""
"%s is not a valid start source port. It must be a port alias or integer "
"between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:296
-#: src/usr/local/www/firewall_rules_edit.php:474
+#: src/usr/local/www/firewall_nat_edit.php:300
+#: src/usr/local/www/firewall_rules_edit.php:490
#, php-format
msgid ""
"%s is not a valid end source port. It must be a port alias or integer "
"between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:299
-#: src/usr/local/www/firewall_rules_edit.php:477
+#: src/usr/local/www/firewall_nat_edit.php:303
+#: src/usr/local/www/firewall_rules_edit.php:493
#, php-format
msgid ""
"%s is not a valid start destination port. It must be a port alias or integer "
"between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:302
-#: src/usr/local/www/firewall_rules_edit.php:480
+#: src/usr/local/www/firewall_nat_edit.php:306
+#: src/usr/local/www/firewall_rules_edit.php:496
#, php-format
msgid ""
"%s is not a valid end destination port. It must be a port alias or integer "
"between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:306
+#: src/usr/local/www/firewall_nat_edit.php:310
#, php-format
msgid ""
"A valid redirect target port must be specified. It must be a port alias or "
"integer between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:317
-#: src/usr/local/www/firewall_rules_edit.php:532
+#: src/usr/local/www/firewall_nat_edit.php:321
+#: src/usr/local/www/firewall_rules_edit.php:548
#, php-format
msgid "%s is not a valid source IP address or alias."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:320
-#: src/usr/local/www/firewall_nat_out_edit.php:225
-#: src/usr/local/www/firewall_rules_edit.php:535
+#: src/usr/local/www/firewall_nat_edit.php:324
+#, php-format
+msgid "Source must be IPv4."
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_edit.php:327
+#: src/usr/local/www/firewall_nat_out_edit.php:228
+#: src/usr/local/www/firewall_rules_edit.php:551
msgid "A valid source bit count must be specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:349
+#: src/usr/local/www/firewall_nat_edit.php:336
+#, php-format
+msgid "Destination must be IPv4."
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_edit.php:359
msgid "The target port range must be an integer between 1 and 65535."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:375
+#: src/usr/local/www/firewall_nat_edit.php:385
msgid "The destination port range overlaps with an existing entry."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:495
+#: src/usr/local/www/firewall_nat_edit.php:505
msgid "NAT Port Forward"
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:665
+#: src/usr/local/www/firewall_nat_edit.php:663
msgid "Edit Redirect Entry"
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:676
+#: src/usr/local/www/firewall_nat_edit.php:674
msgid "No RDR (NOT)"
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:723
+#: src/usr/local/www/firewall_nat_edit.php:677
+msgid ""
+"This option is rarely needed. Don't use this without thorough knowledge of "
+"the implications."
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_edit.php:721
msgid ""
"Choose which protocol this rule should match. In most cases \"TCP\" is "
"specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:727 src/usr/local/www/head.inc:242
-#: src/usr/local/www/interfaces_bridge_edit.php:436
-#: src/usr/local/www/services_dhcp.php:1004
+#: src/usr/local/www/firewall_nat_edit.php:725
+#: src/usr/local/www/firewall_nat_edit.php:1211
+#: src/usr/local/www/firewall_rules_edit.php:1366
+#: src/usr/local/www/firewall_rules_edit.php:1446
+#: src/usr/local/www/firewall_rules_edit.php:1765
+#: src/usr/local/www/firewall_rules_edit.php:1837
+#: src/usr/local/www/interfaces_bridge_edit.php:450
+#: src/usr/local/www/interfaces_bridge_edit.php:695
+#: src/usr/local/www/interfaces_ppps_edit.php:832
+#: src/usr/local/www/interfaces_ppps_edit.php:1047
+#: src/usr/local/www/services_dhcp.php:1002
#: src/usr/local/www/services_dhcp.php:1052
-#: src/usr/local/www/services_dhcp.php:1079
-#: src/usr/local/www/services_dhcp.php:1104
-#: src/usr/local/www/services_dhcp.php:1123
-#: src/usr/local/www/services_dhcp.php:1145
-#: src/usr/local/www/services_dhcp_edit.php:593
-#: src/usr/local/www/services_dhcp_edit.php:639
-#: src/usr/local/www/services_dhcp_edit.php:673
+#: src/usr/local/www/services_dhcp.php:1081
+#: src/usr/local/www/services_dhcp.php:1108
+#: src/usr/local/www/services_dhcp.php:1129
+#: src/usr/local/www/services_dhcp.php:1151
+#: src/usr/local/www/services_dhcp.php:1424
+#: src/usr/local/www/services_dhcp.php:1459
+#: src/usr/local/www/services_dhcp.php:1494
+#: src/usr/local/www/services_dhcp.php:1528
+#: src/usr/local/www/services_dhcp.php:1562
+#: src/usr/local/www/services_dhcp.php:1597
+#: src/usr/local/www/services_dhcp_edit.php:595
+#: src/usr/local/www/services_dhcp_edit.php:643
+#: src/usr/local/www/services_dhcp_edit.php:679
+#: src/usr/local/www/services_dhcp_edit.php:736
+#: src/usr/local/www/services_dhcp_edit.php:771
+#: src/usr/local/www/services_dhcp_edit.php:805
#: src/usr/local/www/services_dhcpv6.php:760
-#: src/usr/local/www/services_dhcpv6.php:826
-#: src/usr/local/www/services_dhcpv6.php:860
-#: src/usr/local/www/services_dhcpv6.php:879
-#: src/usr/local/www/services_dhcpv6.php:905
-#: src/usr/local/www/services_ntpd.php:334
-#: src/usr/local/www/services_ntpd.php:368
+#: src/usr/local/www/services_dhcpv6.php:828
+#: src/usr/local/www/services_dhcpv6.php:864
+#: src/usr/local/www/services_dhcpv6.php:885
+#: src/usr/local/www/services_dhcpv6.php:913
+#: src/usr/local/www/services_dhcpv6.php:1107
+#: src/usr/local/www/services_dhcpv6.php:1142
+#: src/usr/local/www/services_dhcpv6.php:1176
+#: src/usr/local/www/services_dhcpv6.php:1211
+#: src/usr/local/www/services_dhcpv6.php:1247
+#: src/usr/local/www/services_ntpd.php:338
+#: src/usr/local/www/services_ntpd.php:374
+#: src/usr/local/www/services_ntpd.php:443
+#: src/usr/local/www/services_ntpd.php:480
#: src/usr/local/www/services_ntpd_gps.php:377
-#: src/usr/local/www/system_advanced_admin.php:316
-#: src/usr/local/www/system_advanced_firewall.php:404
-#: src/usr/local/www/system_advanced_misc.php:304
-#: src/usr/local/www/system_advanced_network.php:173
-#: src/usr/local/www/system_advanced_notifications.php:216
-#: src/usr/local/www/system_advanced_sysctl.php:166
-#: src/usr/local/www/system_gateways_edit.php:731
-#: src/usr/local/www/vpn_openvpn_csc.php:590
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:277
-msgid "Advanced"
+#: src/usr/local/www/services_ntpd_gps.php:568
+#: src/usr/local/www/system_gateways_edit.php:706
+#: src/usr/local/www/system_gateways_edit.php:909
+msgid "Display Advanced"
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:733
#: src/usr/local/www/firewall_nat_edit.php:737
#: src/usr/local/www/firewall_nat_out.php:312
-#: src/usr/local/www/firewall_nat_out.php:563
-#: src/usr/local/www/firewall_nat_out_edit.php:181
+#: src/usr/local/www/firewall_nat_out.php:565
+#: src/usr/local/www/firewall_nat_out_edit.php:184
#: src/usr/local/www/firewall_nat_out_edit.php:507
-#: src/usr/local/www/firewall_rules.php:407
-#: src/usr/local/www/firewall_rules_edit.php:435
+#: src/usr/local/www/firewall_rules.php:410
+#: src/usr/local/www/firewall_rules_edit.php:451
#: src/usr/local/www/status_ipsec_sad.php:98
#: src/usr/local/www/status_ipsec_spd.php:91
#: src/usr/local/www/status_logs_filter.php:194
@@ -11015,7 +11180,7 @@ msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:762
#: src/usr/local/www/firewall_virtual_ip.php:267
-#: src/usr/local/www/firewall_virtual_ip_edit.php:383
+#: src/usr/local/www/firewall_virtual_ip_edit.php:392
msgid "Other"
msgstr ""
@@ -11033,10 +11198,10 @@ msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:844
#: src/usr/local/www/firewall_nat_edit.php:858
#: src/usr/local/www/firewall_nat_edit.php:891
-#: src/usr/local/www/firewall_rules_edit.php:1376
-#: src/usr/local/www/firewall_rules_edit.php:1390
-#: src/usr/local/www/interfaces.php:2597
-#: src/usr/local/www/interfaces_ppps_edit.php:749
+#: src/usr/local/www/firewall_rules_edit.php:1394
+#: src/usr/local/www/firewall_rules_edit.php:1408
+#: src/usr/local/www/interfaces.php:2614
+#: src/usr/local/www/interfaces_ppps_edit.php:759
#: src/usr/local/www/services_ntpd_gps.php:249
msgid "Custom"
msgstr ""
@@ -11050,8 +11215,7 @@ msgstr ""
msgid ""
"Specify the source port or port range for this rule. This is usually random "
"and almost never equal to the destination port range (and should usually be "
-"'any'). You can leave the 'to' field empty if you only want to filter a "
-"single port."
+"'any'). The 'to' field may be left empty if only filtering a single port."
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:809
@@ -11065,14 +11229,13 @@ msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:860
msgid ""
"Specify the port or port range for the destination of the packet for this "
-"mapping. You can leave the 'to' field empty if you only want to map a single "
-"port "
+"mapping. The 'to' field may be left empty if only mapping a single port. "
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:869
msgid ""
-"Enter the internal IP address of the server on which you want to map the "
-"ports.<br />e.g.: 192.168.1.12"
+"Enter the internal IP address of the server on which to map the ports.<br /"
+">e.g.: 192.168.1.12"
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:872
@@ -11083,13 +11246,13 @@ msgstr ""
msgid ""
"Specify the port on the machine with the IP address entered above. In case "
"of a port range, specify the beginning port of the range (the end port will "
-"be calculated automatically).<br />this is usually identical to \"From port"
-"\" above"
+"be calculated automatically).<br />This is usually identical to the \"From "
+"port\" above."
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:905
-#: src/usr/local/www/firewall_nat_out_edit.php:632
-#: src/usr/local/www/firewall_rules_edit.php:1569
+#: src/usr/local/www/firewall_nat_out_edit.php:631
+#: src/usr/local/www/firewall_rules_edit.php:1585
msgid "No XMLRPC Sync"
msgstr ""
@@ -11140,32 +11303,58 @@ msgid ""
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:972
-#: src/usr/local/www/firewall_nat_out_edit.php:668
-#: src/usr/local/www/firewall_rules_edit.php:1699
+#: src/usr/local/www/firewall_nat_out_edit.php:667
+#: src/usr/local/www/firewall_rules_edit.php:1715
msgid "Rule Information"
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:977
#: src/usr/local/www/firewall_nat_edit.php:984
-#: src/usr/local/www/firewall_nat_out_edit.php:673
-#: src/usr/local/www/firewall_nat_out_edit.php:680
-#: src/usr/local/www/firewall_rules_edit.php:1704
-#: src/usr/local/www/firewall_rules_edit.php:1711
+#: src/usr/local/www/firewall_nat_out_edit.php:672
+#: src/usr/local/www/firewall_nat_out_edit.php:679
+#: src/usr/local/www/firewall_rules_edit.php:1720
+#: src/usr/local/www/firewall_rules_edit.php:1727
msgid " by "
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:976
-#: src/usr/local/www/firewall_nat_out_edit.php:672
-#: src/usr/local/www/firewall_rules_edit.php:1703
+#: src/usr/local/www/firewall_nat_out_edit.php:671
+#: src/usr/local/www/firewall_rules_edit.php:1719
msgid "Created"
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:983
-#: src/usr/local/www/firewall_nat_out_edit.php:679
-#: src/usr/local/www/firewall_rules_edit.php:1710
+#: src/usr/local/www/firewall_nat_out_edit.php:678
+#: src/usr/local/www/firewall_rules_edit.php:1726
msgid "Updated"
msgstr ""
+#: src/usr/local/www/firewall_nat_edit.php:1213
+#: src/usr/local/www/firewall_rules_edit.php:1763
+#: src/usr/local/www/firewall_rules_edit.php:1835
+#: src/usr/local/www/interfaces_bridge_edit.php:693
+#: src/usr/local/www/interfaces_ppps_edit.php:1045
+#: src/usr/local/www/services_dhcp.php:1422
+#: src/usr/local/www/services_dhcp.php:1457
+#: src/usr/local/www/services_dhcp.php:1492
+#: src/usr/local/www/services_dhcp.php:1526
+#: src/usr/local/www/services_dhcp.php:1560
+#: src/usr/local/www/services_dhcp.php:1595
+#: src/usr/local/www/services_dhcp_edit.php:734
+#: src/usr/local/www/services_dhcp_edit.php:769
+#: src/usr/local/www/services_dhcp_edit.php:803
+#: src/usr/local/www/services_dhcpv6.php:1105
+#: src/usr/local/www/services_dhcpv6.php:1140
+#: src/usr/local/www/services_dhcpv6.php:1174
+#: src/usr/local/www/services_dhcpv6.php:1209
+#: src/usr/local/www/services_dhcpv6.php:1245
+#: src/usr/local/www/services_ntpd.php:441
+#: src/usr/local/www/services_ntpd.php:478
+#: src/usr/local/www/services_ntpd_gps.php:566
+#: src/usr/local/www/system_gateways_edit.php:907
+msgid "Hide Advanced"
+msgstr ""
+
#: src/usr/local/www/firewall_nat_npt.php:147
msgid "Firewall: NAT: NPt, enable/disable NAT rule"
msgstr ""
@@ -11183,7 +11372,7 @@ msgid "Internal prefix"
msgstr ""
#: src/usr/local/www/firewall_nat_npt.php:303
-msgid "You have moved one or more NPt mappings but have not yet saved"
+msgid "One or more NPt mappings have been moved but have not yet been saved"
msgstr ""
#: src/usr/local/www/firewall_nat_npt_edit.php:135
@@ -11200,8 +11389,8 @@ msgstr ""
#: src/usr/local/www/firewall_nat_npt_edit.php:235
msgid ""
-"Choose which interface this rule applies to.<br />Hint: in most cases, "
-"you'll want to use \"WAN\" here."
+"Choose which interface this rule applies to.<br />Hint: Typically the \"WAN"
+"\" is used here."
msgstr ""
#: src/usr/local/www/firewall_nat_npt_edit.php:240
@@ -11213,6 +11402,19 @@ msgstr ""
msgid "Use this option to invert the sense of the match. "
msgstr ""
+#: src/usr/local/www/firewall_nat_npt_edit.php:247
+#: src/usr/local/www/firewall_nat_npt_edit.php:261
+#: src/usr/local/www/firewall_nat_out_edit.php:569
+#: src/usr/local/www/status_lb_vs.php:97 src/usr/local/www/system.php:409
+#: src/usr/local/www/vpn_ipsec_phase2.php:559
+#: src/usr/local/www/vpn_ipsec_phase2.php:566
+#: src/usr/local/www/vpn_ipsec_phase2.php:579
+#: src/usr/local/www/vpn_ipsec_phase2.php:592
+#: src/usr/local/www/vpn_ipsec_phase2.php:605
+#: src/usr/local/www/vpn_ipsec_phase2.php:612
+msgid "Address"
+msgstr ""
+
#: src/usr/local/www/firewall_nat_npt_edit.php:249
msgid ""
"Internal (LAN) ULA IPv6 Prefix for the Network Prefix translation. The "
@@ -11242,7 +11444,7 @@ msgid "Default rules for each interface have been created."
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:260
-#: src/usr/local/www/status_logs_settings.php:251
+#: src/usr/local/www/status_logs_settings.php:248
msgid "General Logging Options"
msgstr ""
@@ -11270,17 +11472,17 @@ msgid "Mappings"
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:316
-#: src/usr/local/www/firewall_nat_out.php:567
+#: src/usr/local/www/firewall_nat_out.php:569
msgid "NAT Address"
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:317
-#: src/usr/local/www/firewall_nat_out.php:568
+#: src/usr/local/www/firewall_nat_out.php:570
msgid "NAT Port"
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:318
-#: src/usr/local/www/firewall_nat_out.php:569
+#: src/usr/local/www/firewall_nat_out.php:571
msgid "Static Port"
msgstr ""
@@ -11292,37 +11494,27 @@ msgstr ""
msgid "Click to toggle enabled/disabled status"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:496
-#: src/usr/local/www/firewall_nat_out.php:647
-msgid "YES"
-msgstr ""
-
-#: src/usr/local/www/firewall_nat_out.php:498
-#: src/usr/local/www/firewall_nat_out.php:649
-msgid "NO"
-msgstr ""
-
-#: src/usr/local/www/firewall_nat_out.php:524
+#: src/usr/local/www/firewall_nat_out.php:526
msgid "Add new mapping to the top of the list"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:528
+#: src/usr/local/www/firewall_nat_out.php:530
msgid "Add new mapping to the end of the list"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:532
+#: src/usr/local/www/firewall_nat_out.php:534
msgid "Delete selected map"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:532
+#: src/usr/local/www/firewall_nat_out.php:534
msgid "Delete selected maps"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:556
+#: src/usr/local/www/firewall_nat_out.php:558
msgid "Automatic Rules:"
msgstr ""
-#: src/usr/local/www/firewall_nat_out.php:580
+#: src/usr/local/www/firewall_nat_out.php:582
msgid "automatic outbound nat"
msgstr ""
@@ -11332,8 +11524,8 @@ msgid ""
"for each interface's subnet (except WAN-type connections) and the rules on "
"the \"Mappings\" section of this page are ignored.<br />If manual outbound "
"NAT is selected, outbound NAT rules will not be automatically generated and "
-"only the mappings you specify on this page will be used.<br />If hybrid "
-"outbound NAT is selected, mappings you specify on this page will be used, "
+"only the mappings specified on this page will be used.<br />If hybrid "
+"outbound NAT is selected, mappings specified on this page will be used, "
"followed by the automatically generated ones.<br />If disable outbound NAT "
"is selected, no rules will be used.<br />If a target address other than an "
"interface's IP address is used, then depending on the way the WAN connection "
@@ -11341,87 +11533,77 @@ msgid ""
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:676
-#: src/usr/local/www/firewall_nat_out_edit.php:582
-#: src/usr/local/www/status_carp.php:205
-#: src/usr/local/www/system_gateway_groups_edit.php:292
-#: src/usr/local/www/system_gateway_groups_edit.php:312
-#: src/usr/local/www/system_gateway_groups_edit.php:324
-msgid "Virtual IP"
-msgstr ""
-
-#: src/usr/local/www/firewall_nat_out.php:676
msgid " may also be required."
msgstr ""
#: src/usr/local/www/firewall_nat_out.php:709
-msgid "You have moved one or more NAT outbound mappings but have not yet saved"
+msgid ""
+"One or more NAT outbound mappings have been moved but have not yet been saved"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:181
-#: src/usr/local/www/firewall_rules_edit.php:451
+#: src/usr/local/www/firewall_nat_out_edit.php:184
+#: src/usr/local/www/firewall_rules_edit.php:467
msgid "Source bit count"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:181
-#: src/usr/local/www/firewall_rules_edit.php:456
+#: src/usr/local/www/firewall_nat_out_edit.php:184
+#: src/usr/local/www/firewall_rules_edit.php:472
msgid "Destination bit count"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:207
-msgid ""
-"You must supply either a valid port or port alias for the source port entry."
+#: src/usr/local/www/firewall_nat_out_edit.php:210
+msgid "A valid port or port alias must be supplied for the source port entry."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:211
+#: src/usr/local/www/firewall_nat_out_edit.php:214
msgid ""
-"You must supply either a valid port or port alias for the destination port "
-"entry."
+"A valid port or port alias must be supplied for the destination port entry."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:215
-msgid "You must supply a valid port for the NAT port entry."
+#: src/usr/local/www/firewall_nat_out_edit.php:218
+msgid "A valid port must be supplied for the NAT port entry."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:220
+#: src/usr/local/www/firewall_nat_out_edit.php:223
msgid "A valid source must be specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:230
+#: src/usr/local/www/firewall_nat_out_edit.php:233
msgid "A valid destination must be specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:240
+#: src/usr/local/www/firewall_nat_out_edit.php:243
msgid "Negating destination address of \"any\" is invalid."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:245
+#: src/usr/local/www/firewall_nat_out_edit.php:248
msgid "A valid target IP address must be specified."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:250
+#: src/usr/local/www/firewall_nat_out_edit.php:253
msgid "A valid target IP must be specified when using the 'Other Subnet' type."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:254
+#: src/usr/local/www/firewall_nat_out_edit.php:257
msgid ""
"A valid target bit count must be specified when using the 'Other Subnet' "
"type."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:267
+#: src/usr/local/www/firewall_nat_out_edit.php:270
msgid "Only Round Robin pool options may be chosen when selecting an alias."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:400
-#: src/usr/local/www/system_gateway_groups_edit.php:195
+#: src/usr/local/www/firewall_nat_out_edit.php:403
+#: src/usr/local/www/system_gateway_groups_edit.php:196
msgid "Interface Address"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:430
+#: src/usr/local/www/firewall_nat_out_edit.php:433
msgid "Host Alias: "
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:433
+#: src/usr/local/www/firewall_nat_out_edit.php:436
msgid "Other Subnet (Enter Below)"
msgstr ""
@@ -11434,7 +11616,7 @@ msgid "Do not NAT"
msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:461
-msgid "In most cases this option is not required"
+msgid "In most cases this option is not required."
msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:505
@@ -11452,7 +11634,7 @@ msgid "Destination network for the outbound NAT mapping."
msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:560
-msgid "Invert the sense of the destination match"
+msgid "Invert the sense of the destination match."
msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:564
@@ -11466,9 +11648,16 @@ msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:579
msgid ""
"Packets matching this rule will be mapped to the IP address given here.<br /"
-">If you want this rule to apply to another IP address rather than the IP "
-"address of the interface chosen above, select it here (you will need to "
-"define <a href=\"firewall_virtual_ip.php\">"
+">To apply this rule to a different IP address than the IP address of the "
+"interface chosen above, select it here (<a href=\"firewall_virtual_ip.php\">"
+msgstr ""
+
+#: src/usr/local/www/firewall_nat_out_edit.php:590
+#: src/usr/local/www/interfaces.php:1868 src/usr/local/www/interfaces.php:2844
+#: src/usr/local/www/interfaces.php:2853 src/usr/local/www/interfaces.php:2862
+#: src/usr/local/www/interfaces.php:2920 src/usr/local/www/interfaces.php:3175
+#: src/usr/local/www/services_ntpd_gps.php:249
+msgid "Default"
msgstr ""
#: src/usr/local/www/firewall_nat_out_edit.php:591
@@ -11514,53 +11703,63 @@ msgid ""
"ul><span class=\"help-block\">"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:616
-msgid "Enter the source port for the outbound NAT mapping."
+#: src/usr/local/www/firewall_nat_out_edit.php:615
+msgid "Enter the source port or range for the outbound NAT mapping."
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:628
+#: src/usr/local/www/firewall_nat_out_edit.php:627
msgid "Misc"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:636
+#: src/usr/local/www/firewall_nat_out_edit.php:635
msgid ""
"Prevents the rule on Master from automatically syncing to other CARP "
"members. This does NOT prevent the rule from being overwritten on Slave."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:118
+#: src/usr/local/www/firewall_rules.php:72
+msgid ""
+"Move checked rules above this one. Shift+Click to move checked rules below."
+msgstr ""
+
+#: src/usr/local/www/firewall_rules.php:73
+msgid ""
+"Move checked rules below this one. Release shift to move checked rules above."
+msgstr ""
+
+#: src/usr/local/www/firewall_rules.php:121
msgid "States details"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:216
+#: src/usr/local/www/firewall_rules.php:219
#, php-format
msgid ""
"The settings have been applied. The firewall rules are now reloading in the "
-"background.<br />You can also %s monitor %s the reload progress."
+"background.<br />%s Monitor %s the reload progress."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:342
-#: src/usr/local/www/firewall_rules_edit.php:1063
-#: src/usr/local/www/firewall_rules_edit.php:1219
+#: src/usr/local/www/firewall_rules.php:345
+#: src/usr/local/www/firewall_rules_edit.php:1079
+#: src/usr/local/www/firewall_rules_edit.php:1235
msgid "Floating"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:366
+#: src/usr/local/www/firewall_rules.php:369
msgid "The firewall rule configuration has been changed."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:398
+#: src/usr/local/www/firewall_rules.php:401
msgid "Rules (Drag to Change Order)"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:411
-#: src/usr/local/www/firewall_rules_edit.php:1630
-#: src/usr/local/www/interfaces.php:551 src/usr/local/www/interfaces.php:602
-#: src/usr/local/www/services_dhcp.php:936
-#: src/usr/local/www/services_dhcp_edit.php:558
-#: src/usr/local/www/status_gateways.php:94 src/usr/local/www/system.php:427
-#: src/usr/local/www/system.php:430
-#: src/usr/local/www/system_gateway_groups_edit.php:310
+#: src/usr/local/www/firewall_rules.php:414
+#: src/usr/local/www/firewall_rules_edit.php:1646
+#: src/usr/local/www/interfaces.php:560 src/usr/local/www/interfaces.php:611
+#: src/usr/local/www/services_dhcp.php:934
+#: src/usr/local/www/services_dhcp_edit.php:560
+#: src/usr/local/www/status_gateways.php:94 src/usr/local/www/system.php:431
+#: src/usr/local/www/system.php:434
+#: src/usr/local/www/system_gateway_groups_edit.php:339
#: src/usr/local/www/system_gateways.php:278
#: src/usr/local/www/system_gateways_edit.php:645
#: src/usr/local/www/system_routes.php:277
@@ -11569,305 +11768,305 @@ msgstr ""
msgid "Gateway"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:412
-#: src/usr/local/www/status_queues.php:194
+#: src/usr/local/www/firewall_rules.php:415
+#: src/usr/local/www/status_queues.php:193
msgid "Queue"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:413
-#: src/usr/local/www/firewall_rules_edit.php:1599
+#: src/usr/local/www/firewall_rules.php:416
+#: src/usr/local/www/firewall_rules_edit.php:1615
msgid "Schedule"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:429
-#: src/usr/local/www/firewall_rules.php:520
+#: src/usr/local/www/firewall_rules.php:432
+#: src/usr/local/www/firewall_rules.php:523
msgid "traffic is passed"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:439
+#: src/usr/local/www/firewall_rules.php:442
msgid "Anti-Lockout Rule"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:441
-#: src/usr/local/www/firewall_rules.php:460
-#: src/usr/local/www/firewall_rules.php:479
+#: src/usr/local/www/firewall_rules.php:444
+#: src/usr/local/www/firewall_rules.php:463
+#: src/usr/local/www/firewall_rules.php:482 src/usr/local/www/head.inc:549
#: src/usr/local/www/load_balancer_monitor.php:129
#: src/usr/local/www/load_balancer_pool.php:143
#: src/usr/local/www/load_balancer_setting.php:120
#: src/usr/local/www/load_balancer_setting.php:142
-#: src/usr/local/www/load_balancer_virtual_server.php:143
+#: src/usr/local/www/load_balancer_virtual_server.php:163
#: src/usr/local/www/services_ntpd.php:218
#: src/usr/local/www/services_ntpd.php:230
#: src/usr/local/www/services_ntpd_acls.php:207
#: src/usr/local/www/services_ntpd_gps.php:230
#: src/usr/local/www/services_ntpd_pps.php:149
-#: src/usr/local/www/services_router_advertisements.php:397
+#: src/usr/local/www/services_router_advertisements.php:428
#: src/usr/local/www/status_logs_common.inc:131
#: src/usr/local/www/status_logs_settings.php:209
#: src/usr/local/www/status_logs_settings.php:243
-#: src/usr/local/www/system_authservers.php:396
-#: src/usr/local/www/system_groupmanager.php:291
-#: src/usr/local/www/system_groupmanager_addprivs.php:173
-#: src/usr/local/www/system_usermanager.php:485
+#: src/usr/local/www/system_authservers.php:462
+#: src/usr/local/www/system_groupmanager.php:307
+#: src/usr/local/www/system_groupmanager_addprivs.php:172
+#: src/usr/local/www/system_usermanager.php:486
#: src/usr/local/www/system_usermanager_addprivs.php:174
-#: src/usr/local/www/system_usermanager_settings.php:75
-#: src/usr/local/www/system_usermanager_settings.php:145
-#: src/usr/local/www/system_usermanager_settings.php:156
+#: src/usr/local/www/system_usermanager_settings.php:140
+#: src/usr/local/www/system_usermanager_settings.php:201
+#: src/usr/local/www/system_usermanager_settings.php:212
msgid "Settings"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:448
-#: src/usr/local/www/firewall_rules.php:467
-#: src/usr/local/www/firewall_rules.php:511
+#: src/usr/local/www/firewall_rules.php:451
+#: src/usr/local/www/firewall_rules.php:470
+#: src/usr/local/www/firewall_rules.php:514
msgid "traffic is blocked"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:451
+#: src/usr/local/www/firewall_rules.php:454
msgid "RFC 1918 networks"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:458
-#: src/usr/local/www/interfaces.php:3119
+#: src/usr/local/www/firewall_rules.php:461
msgid "Block private networks"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:470
+#: src/usr/local/www/firewall_rules.php:473
#, php-format
msgid "Reserved%sNot assigned by IANA"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:477
-#: src/usr/local/www/interfaces.php:3129
+#: src/usr/local/www/firewall_rules.php:480
+#: src/usr/local/www/interfaces.php:3136
msgid "Block bogon networks"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:514
+#: src/usr/local/www/firewall_rules.php:517
msgid "traffic is rejected"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:517
+#: src/usr/local/www/firewall_rules.php:520
msgid "traffic is matched"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:529
-#: src/usr/local/www/firewall_rules.php:869
+#: src/usr/local/www/firewall_rules.php:532
+#: src/usr/local/www/firewall_rules.php:873
msgid "&quot;Quick&quot; rule. Applied immediately on match."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:534
+#: src/usr/local/www/firewall_rules.php:537
msgid "advanced setting"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:538
+#: src/usr/local/www/firewall_rules.php:541
msgid "traffic is logged"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
-#: src/usr/local/www/firewall_schedule_edit.php:293
+#: src/usr/local/www/firewall_schedule_edit.php:288
msgid "Mon"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
msgid "Tues"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
-#: src/usr/local/www/firewall_schedule_edit.php:295
+#: src/usr/local/www/firewall_schedule_edit.php:290
msgid "Wed"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
msgid "Thur"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
-#: src/usr/local/www/firewall_schedule_edit.php:297
+#: src/usr/local/www/firewall_schedule_edit.php:292
msgid "Fri"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
-#: src/usr/local/www/firewall_schedule_edit.php:298
+#: src/usr/local/www/firewall_schedule_edit.php:293
msgid "Sat"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:557
+#: src/usr/local/www/firewall_rules.php:560
#: src/usr/local/www/firewall_schedule.php:68
#: src/usr/local/www/firewall_schedule_edit.php:89
-#: src/usr/local/www/firewall_schedule_edit.php:299
+#: src/usr/local/www/firewall_schedule_edit.php:294
msgid "Sun"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "January"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "February"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "March"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "April"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "May"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "June"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "July"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "August"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "September"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "October"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "November"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:558
+#: src/usr/local/www/firewall_rules.php:561
#: src/usr/local/www/firewall_schedule.php:69
#: src/usr/local/www/firewall_schedule_edit.php:90
msgid "December"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:671
+#: src/usr/local/www/firewall_rules.php:674
msgid "Traffic matching this rule is currently being denied"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:675
+#: src/usr/local/www/firewall_rules.php:678
msgid "Traffic matching this rule is currently being allowed"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:684
+#: src/usr/local/www/firewall_rules.php:687
msgid "This rule is not currently active because its period has expired"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:713
-#: src/usr/local/www/firewall_rules_edit.php:1261
+#: src/usr/local/www/firewall_rules.php:716
+#: src/usr/local/www/firewall_rules_edit.php:1277
msgid "ICMP type"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:793
+#: src/usr/local/www/firewall_rules.php:797
msgid "Copy"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:802
+#: src/usr/local/www/firewall_rules.php:806
msgid "Delete this rule"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:824
+#: src/usr/local/www/firewall_rules.php:828
msgid "No floating rules are currently defined."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:826
+#: src/usr/local/www/firewall_rules.php:830
msgid "No rules are currently defined for this interface"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:827
+#: src/usr/local/www/firewall_rules.php:831
msgid ""
-"All incoming connections on this interface will be blocked until you add "
-"pass rules."
+"All incoming connections on this interface will be blocked until pass rules "
+"are added."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:829
+#: src/usr/local/www/firewall_rules.php:833
msgid "Click the button to add a new rule."
msgstr ""
-#: src/usr/local/www/firewall_rules.php:864
-#: src/usr/local/www/firewall_rules_edit.php:1120
+#: src/usr/local/www/firewall_rules.php:868
+#: src/usr/local/www/firewall_rules_edit.php:1136
msgid "Match"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:865
-#: src/usr/local/www/firewall_rules_edit.php:1115
-#: src/usr/local/www/services_captiveportal_mac.php:95
-#: src/usr/local/www/services_captiveportal_mac_edit.php:236
+#: src/usr/local/www/firewall_rules.php:869
+#: src/usr/local/www/firewall_rules_edit.php:1131
+#: src/usr/local/www/services_captiveportal_mac.php:96
+#: src/usr/local/www/services_captiveportal_mac_edit.php:237
#: src/usr/local/www/status_logs_common.inc:492
#: src/usr/local/www/widgets/widgets/log.widget.php:262
#: src/usr/local/www/status_logs_common.inc:493
msgid "Block"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:866
-#: src/usr/local/www/firewall_rules_edit.php:1116
+#: src/usr/local/www/firewall_rules.php:870
+#: src/usr/local/www/firewall_rules_edit.php:1132
#: src/usr/local/www/widgets/widgets/log.widget.php:266
msgid "Reject"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:867
-#: src/usr/local/www/firewall_rules_edit.php:1411
+#: src/usr/local/www/firewall_rules.php:871
+#: src/usr/local/www/firewall_rules_edit.php:1429
#: src/usr/local/www/status_logs_common.inc:816
msgid "Log"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:868
+#: src/usr/local/www/firewall_rules.php:872
msgid "Advanced filter"
msgstr ""
-#: src/usr/local/www/firewall_rules.php:874
+#: src/usr/local/www/firewall_rules.php:878
msgid ""
"Rules are evaluated on a first-match basis (i.e. the action of the first "
"rule to match a packet will be executed). "
msgstr ""
-#: src/usr/local/www/firewall_rules.php:876
+#: src/usr/local/www/firewall_rules.php:880
msgid ""
-"This means that if you use block rules, you'll have to pay attention to the "
-"rule order. Everything that isn't explicitly passed is blocked by default. "
+"This means that if block rules are used, it is important to pay attention to "
+"the rule order. Everything that isn't explicitly passed is blocked by "
+"default. "
msgstr ""
-#: src/usr/local/www/firewall_rules.php:880
+#: src/usr/local/www/firewall_rules.php:884
msgid ""
"Floating rules are evaluated on a first-match basis (i.e. the action of the "
"first rule to match a packet will be executed) only if the 'quick' option is "
@@ -11876,296 +12075,313 @@ msgid ""
"matches, the per-interface or default rules are used. "
msgstr ""
-#: src/usr/local/www/firewall_rules.php:932
-msgid "You have moved one or more rules but have not yet saved"
+#: src/usr/local/www/firewall_rules.php:891
+#, php-format
+msgid ""
+"%sClick the anchor icon %s to move checked rules before the clicked row. "
+"Hold down the shift key and click to move the rules after the clicked row."
+msgstr ""
+
+#: src/usr/local/www/firewall_rules.php:1006
+msgid "One or more rules have been moved but have not yet been saved"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:331
-#: src/usr/local/www/firewall_rules_edit.php:345
-msgid "You can not assign a gateway to a rule that applies to IPv4 and IPv6"
+#: src/usr/local/www/firewall_rules_edit.php:347
+#: src/usr/local/www/firewall_rules_edit.php:361
+msgid "A gateway can not be assigned to a rule that applies to IPv4 and IPv6"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:334
-msgid "You can not assign an IPv4 gateway group on IPv6 Address Family rule"
+#: src/usr/local/www/firewall_rules_edit.php:350
+msgid ""
+"An IPv4 gateway group can not be assigned on an IPv6 Address Family rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:337
-msgid "You can not assign an IPv6 gateway group on IPv4 Address Family rule"
+#: src/usr/local/www/firewall_rules_edit.php:353
+msgid ""
+"An IPv6 gateway group can not be assigned on an IPv4 Address Family rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:348
-msgid "You can not assign an IPv4 Gateway to an IPv6 Filter rule"
+#: src/usr/local/www/firewall_rules_edit.php:364
+msgid "An IPv4 Gateway can not be assigned to an IPv6 Filter rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:351
-msgid "You can not assign an IPv6 Gateway to an IPv4 Filter rule"
+#: src/usr/local/www/firewall_rules_edit.php:367
+msgid "An IPv6 Gateway can not be assigned to an IPv4 Filter rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:356
-msgid "You can not assign a ICMP type to a rule that applies to IPv4 and IPv6"
+#: src/usr/local/www/firewall_rules_edit.php:372
+msgid ""
+"An ICMP type can not be assigned to a rule that applies to IPv4 and IPv6"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:441
+#: src/usr/local/www/firewall_rules_edit.php:457
#, php-format
msgid "%s is only valid with protocol TCP."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:444
+#: src/usr/local/www/firewall_rules_edit.php:460
#, php-format
msgid "%s is only valid if the gateway is set to 'default'."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:548
+#: src/usr/local/www/firewall_rules_edit.php:537
+#: src/usr/local/www/firewall_rules_edit.php:542
+msgid "Alias entries must be a single host or alias."
+msgstr ""
+
+#: src/usr/local/www/firewall_rules_edit.php:564
#, php-format
msgid ""
"The Source IP address %s Address Family differs from the destination %s."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:551
-msgid "You can not use IPv6 addresses in IPv4 rules."
+#: src/usr/local/www/firewall_rules_edit.php:568
+msgid "IPv6 addresses cannot be used in IPv4 rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:554
-msgid "You can not use IPv4 addresses in IPv6 rules."
+#: src/usr/local/www/firewall_rules_edit.php:571
+msgid "IPv4 addresses can not be used in IPv6 rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:559
-msgid "You can not use a IPv4 or IPv6 address in combined IPv4 + IPv6 rules."
+#: src/usr/local/www/firewall_rules_edit.php:575
+msgid "An IPv4 or IPv6 address can not be used in combined IPv4 + IPv6 rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:576
+#: src/usr/local/www/firewall_rules_edit.php:592
msgid "OS detection is only valid with protocol TCP."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:579
+#: src/usr/local/www/firewall_rules_edit.php:595
msgid "Invalid OS detection selection. Please select a valid OS."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:585
-msgid "You have to select a queue when you select an acknowledge queue too."
+#: src/usr/local/www/firewall_rules_edit.php:601
+msgid "A queue must be selected when an acknowledge queue is also selected."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:587
+#: src/usr/local/www/firewall_rules_edit.php:603
msgid "Acknowledge queue and Queue cannot be the same."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:591
+#: src/usr/local/www/firewall_rules_edit.php:607
msgid ""
-"You can not use limiters in Floating rules without choosing a direction."
+"Limiters can not be used in Floating rules without choosing a direction."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:594
+#: src/usr/local/www/firewall_rules_edit.php:610
msgid ""
-"You can not use gateways in Floating rules without choosing a direction."
+"Gateways can not be used in Floating rules without choosing a direction."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:598
+#: src/usr/local/www/firewall_rules_edit.php:614
msgid ""
-"You must select a queue for the In direction before selecting one for Out "
+"A queue must be selected for the In direction before selecting one for Out "
"too."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:600
+#: src/usr/local/www/firewall_rules_edit.php:616
msgid "In and Out Queue cannot be the same."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:602
-#: src/usr/local/www/firewall_rules_edit.php:604
+#: src/usr/local/www/firewall_rules_edit.php:618
+#: src/usr/local/www/firewall_rules_edit.php:620
msgid ""
-"You cannot select one queue and one virtual interface for IN and Out. Both "
-"must be from the same type."
+"A queue and a virtual interface cannot be selected for IN and Out. Both must "
+"be from the same type."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:607
+#: src/usr/local/www/firewall_rules_edit.php:623
msgid ""
"Please select a gateway, normally the interface selected gateway, so the "
"limiters work correctly"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:611
+#: src/usr/local/www/firewall_rules_edit.php:627
msgid "ID must be an integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:616
+#: src/usr/local/www/firewall_rules_edit.php:632
msgid ""
-"You can only specify the maximum number of established connections per host "
-"(advanced option) for TCP protocol."
+"The maximum number of established connections per host (advanced option) can "
+"only be specified for TCP protocol."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:619
+#: src/usr/local/www/firewall_rules_edit.php:635
msgid ""
-"You can only specify the maximum new connections per host / per second(s) "
-"(advanced option) for TCP protocol."
+"The maximum new connections per host / per second(s) (advanced option) can "
+"only be specified for TCP protocol."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:622
+#: src/usr/local/www/firewall_rules_edit.php:638
msgid ""
-"You can only specify the state timeout (advanced option) for TCP protocol."
+"The state timeout (advanced option) can only be specified for TCP protocol."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:628
+#: src/usr/local/www/firewall_rules_edit.php:644
msgid ""
-"You can only specify the maximum state entries (advanced option) for Pass "
+"The maximum state entries (advanced option) can only be specified for Pass "
"type rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:631
+#: src/usr/local/www/firewall_rules_edit.php:647
msgid ""
-"You can only specify the maximum number of unique source hosts (advanced "
-"option) for Pass type rules."
+"The maximum number of unique source hosts (advanced option) can only be "
+"specified for Pass type rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:634
+#: src/usr/local/www/firewall_rules_edit.php:650
msgid ""
-"You can only specify the maximum number of established connections per host "
-"(advanced option) for Pass type rules."
+"The maximum number of established connections per host (advanced option) can "
+"only be specified for Pass type rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:637
+#: src/usr/local/www/firewall_rules_edit.php:653
msgid ""
-"You can only specify the maximum state entries per host (advanced option) "
+"The maximum state entries per host (advanced option) can only be specified "
"for Pass type rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:640
+#: src/usr/local/www/firewall_rules_edit.php:656
msgid ""
-"You can only specify the maximum new connections per host / per second(s) "
-"(advanced option) for Pass type rules."
+"The maximum new connections per host / per second(s) (advanced option) can "
+"only be specified for Pass type rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:643
+#: src/usr/local/www/firewall_rules_edit.php:659
msgid ""
-"You can only specify the state timeout (advanced option) for Pass type rules."
+"The state timeout (advanced option) can only be specified for Pass type "
+"rules."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:649
+#: src/usr/local/www/firewall_rules_edit.php:665
msgid ""
-"You cannot specify the maximum state entries (advanced option) if statetype "
+"The maximum state entries (advanced option) cannot be specified if statetype "
"is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:652
+#: src/usr/local/www/firewall_rules_edit.php:668
msgid ""
-"You cannot specify the maximum number of unique source hosts (advanced "
-"option) if statetype is none."
+"The maximum number of unique source hosts (advanced option) cannot be "
+"specified if statetype is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:655
+#: src/usr/local/www/firewall_rules_edit.php:671
msgid ""
-"You cannot specify the maximum number of established connections per host "
-"(advanced option) if statetype is none."
+"The maximum number of established connections per host (advanced option) "
+"cannot be specified if statetype is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:658
+#: src/usr/local/www/firewall_rules_edit.php:674
msgid ""
-"You cannot specify the maximum state entries per host (advanced option) if "
+"The maximum state entries per host (advanced option) cannot be specified if "
"statetype is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:661
+#: src/usr/local/www/firewall_rules_edit.php:677
msgid ""
-"You cannot specify the maximum new connections per host / per second(s) "
-"(advanced option) if statetype is none."
+"The maximum new connections per host / per second(s) (advanced option) "
+"cannot be specified if statetype is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:664
+#: src/usr/local/www/firewall_rules_edit.php:680
msgid ""
-"You cannot specify the state timeout (advanced option) if statetype is none."
+"The state timeout (advanced option) cannot be specified if statetype is none."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:669
+#: src/usr/local/www/firewall_rules_edit.php:685
msgid "Maximum state entries (advanced option) must be a positive integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:673
+#: src/usr/local/www/firewall_rules_edit.php:689
msgid ""
"Maximum number of unique source hosts (advanced option) must be a positive "
"integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:677
+#: src/usr/local/www/firewall_rules_edit.php:693
msgid ""
"Maximum number of established connections per host (advanced option) must be "
"a positive integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:681
+#: src/usr/local/www/firewall_rules_edit.php:697
msgid ""
"Maximum state entries per host (advanced option) must be a positive integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:685
+#: src/usr/local/www/firewall_rules_edit.php:701
msgid ""
"Maximum new connections per host / per second(s) (advanced option) must be a "
"positive integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:689
+#: src/usr/local/www/firewall_rules_edit.php:705
msgid "State timeout (advanced option) must be a positive integer"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:694
+#: src/usr/local/www/firewall_rules_edit.php:710
msgid ""
"Both maximum new connections per host and the interval (per second(s)) must "
"be specified"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:709
+#: src/usr/local/www/firewall_rules_edit.php:725
msgid ""
-"If you specify TCP flags that should be set you should specify out of which "
-"flags as well."
+"If TCP flags that should be set is specified, then out of which flags should "
+"be specified as well."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:986
+#: src/usr/local/www/firewall_rules_edit.php:1002
msgid "set"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:987
+#: src/usr/local/www/firewall_rules_edit.php:1003
msgid "out of"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1014
+#: src/usr/local/www/firewall_rules_edit.php:1030
msgid " Any flags."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1076
+#: src/usr/local/www/firewall_rules_edit.php:1092
msgid "Edit Firewall Rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1081
+#: src/usr/local/www/firewall_rules_edit.php:1097
#: src/usr/local/www/status_ipsec_leases.php:88
msgid "ID"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1090
+#: src/usr/local/www/firewall_rules_edit.php:1106
msgid "Tracker"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1098
+#: src/usr/local/www/firewall_rules_edit.php:1114
msgid "After"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1105
+#: src/usr/local/www/firewall_rules_edit.php:1121
msgid "Ruleid"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1125
-#: src/usr/local/www/services_captiveportal_mac.php:208
-#: src/usr/local/www/services_captiveportal_mac_edit.php:131
-#: src/usr/local/www/services_captiveportal_mac_edit.php:234
-#: src/usr/local/www/services_captiveportal_vouchers.php:459
+#: src/usr/local/www/firewall_rules_edit.php:1141
+#: src/usr/local/www/services_captiveportal_mac.php:209
+#: src/usr/local/www/services_captiveportal_mac_edit.php:132
+#: src/usr/local/www/services_captiveportal_mac_edit.php:235
#: src/usr/local/www/services_unbound_acls.php:263
-#: src/usr/local/www/services_unbound_acls.php:327
+#: src/usr/local/www/services_unbound_acls.php:331
#: src/usr/local/www/status_logs_common.inc:969
#: src/usr/local/www/status_logs_filter.php:182
#: src/usr/local/www/status_logs_filter_dynamic.php:422
#: src/usr/local/www/status_logs_vpn.php:171
#: src/usr/local/www/status_logs_vpn.php:398
+#: src/usr/local/www/system_groupmanager.php:263
+#: src/usr/local/www/system_usermanager.php:381
#: src/usr/local/www/widgets/widgets/services_status.widget.php:110
msgid "Action"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1128
+#: src/usr/local/www/firewall_rules_edit.php:1144
msgid ""
"Choose what to do with packets that match the criteria specified below.<br/"
">Hint: the difference between block and reject is that with reject, a packet "
@@ -12174,369 +12390,359 @@ msgid ""
"original packet is discarded."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1139
+#: src/usr/local/www/firewall_rules_edit.php:1155
msgid "Set this option to disable this rule without removing it from the list."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1145
+#: src/usr/local/www/firewall_rules_edit.php:1161
msgid "Quick"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1148
+#: src/usr/local/www/firewall_rules_edit.php:1164
msgid ""
-"Set this option if you need to apply this action to traffic that matches "
-"this rule immediately."
+"Set this option to apply this action to traffic that matches this rule "
+"immediately."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1158
+#: src/usr/local/www/firewall_rules_edit.php:1174
msgid "View the NAT rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1163
+#: src/usr/local/www/firewall_rules_edit.php:1179
msgid "Associated filter rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1195
+#: src/usr/local/www/firewall_rules_edit.php:1211
msgid "Choose the interface(s) for this rule."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1202
+#: src/usr/local/www/firewall_rules_edit.php:1218
msgid "Choose the interface from which packets must come to match this rule."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1212
+#: src/usr/local/www/firewall_rules_edit.php:1228
msgid "in"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1213
+#: src/usr/local/www/firewall_rules_edit.php:1229
msgid "out"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1208
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:211
-#: src/usr/local/www/services_captiveportal_ip_edit.php:258
+#: src/usr/local/www/firewall_rules_edit.php:1224
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:210
+#: src/usr/local/www/services_captiveportal_ip_edit.php:266
#: src/usr/local/www/status_ipsec_spd.php:93
msgid "Direction"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1234
-msgid "Select the Internet Protocol version this rule applies to"
+#: src/usr/local/www/firewall_rules_edit.php:1250
+msgid "Select the Internet Protocol version this rule applies to."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1257
+#: src/usr/local/www/firewall_rules_edit.php:1273
msgid "Choose which IP protocol this rule should match."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1264
-#: src/usr/local/www/firewall_rules_edit.php:1271
+#: src/usr/local/www/firewall_rules_edit.php:1280
+#: src/usr/local/www/firewall_rules_edit.php:1287
msgid ""
-"If you selected ICMP for the protocol above, you may specify an ICMP type "
+"If ICMP is selected for the protocol above, an ICMP type may be specified "
"here."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1268
+#: src/usr/local/www/firewall_rules_edit.php:1284
msgid "ICMPv6 type"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1283
+#: src/usr/local/www/firewall_rules_edit.php:1299
msgid " not"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1310
+#: src/usr/local/www/firewall_rules_edit.php:1326
msgid "This firewall (self)"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1334
+#: src/usr/local/www/firewall_rules_edit.php:1350
msgid " Type"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1341
+#: src/usr/local/www/firewall_rules_edit.php:1357
msgid " Address"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1350
-msgid "Show advanced"
-msgstr ""
-
-#: src/usr/local/www/firewall_rules_edit.php:1354
+#: src/usr/local/www/firewall_rules_edit.php:1372
msgid "(other)"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1360
+#: src/usr/local/www/firewall_rules_edit.php:1378
msgid " port range"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1366
+#: src/usr/local/www/firewall_rules_edit.php:1384
msgid " port begin"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1369
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:186
-#: src/usr/local/www/services_captiveportal_ip_edit.php:229
-#: src/usr/local/www/services_dhcp.php:872
+#: src/usr/local/www/firewall_rules_edit.php:1387
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:188
+#: src/usr/local/www/services_captiveportal_ip_edit.php:231
+#: src/usr/local/www/services_dhcp.php:868
#: src/usr/local/www/services_dhcpv6.php:646
#: src/usr/local/www/services_dhcpv6.php:671
-#: src/usr/local/www/system_gateways_edit.php:757
-#: src/usr/local/www/system_gateways_edit.php:777
+#: src/usr/local/www/system_gateways_edit.php:741
+#: src/usr/local/www/system_gateways_edit.php:761
msgid "From"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1380
+#: src/usr/local/www/firewall_rules_edit.php:1398
msgid " port end"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1383
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:186
-#: src/usr/local/www/services_captiveportal_ip_edit.php:229
-#: src/usr/local/www/services_dhcp.php:878
+#: src/usr/local/www/firewall_rules_edit.php:1401
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:188
+#: src/usr/local/www/services_captiveportal_ip_edit.php:231
+#: src/usr/local/www/services_dhcp.php:874
#: src/usr/local/www/services_dhcpv6.php:655
#: src/usr/local/www/services_dhcpv6.php:680
-#: src/usr/local/www/system_gateways_edit.php:764
-#: src/usr/local/www/system_gateways_edit.php:784
+#: src/usr/local/www/system_gateways_edit.php:748
+#: src/usr/local/www/system_gateways_edit.php:768
msgid "To"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1394
+#: src/usr/local/www/firewall_rules_edit.php:1412
msgid ""
"Specify the source port or port range for this rule. This is usually random "
"and almost never equal to the destination port range (and should usually be "
-"<b>any</b>). You can leave the \"To\" field empty if you only want to filter "
-"a single port."
+"<b>any</b>). The \"To\" field may be left empty if only filtering a single "
+"port."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1399
+#: src/usr/local/www/firewall_rules_edit.php:1417
msgid ""
-"Specify the destination port or port range for this rule. You can leave the "
-"\"To\" field empty if you only want to filter a single port."
+"Specify the destination port or port range for this rule. The \"To\" field "
+"may be left empty if only filtering a single port."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1408
+#: src/usr/local/www/firewall_rules_edit.php:1426
msgid "Extra Options"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1414
+#: src/usr/local/www/firewall_rules_edit.php:1432
msgid ""
"Hint: the firewall has limited local log space. Don't turn on logging for "
-"everything. If you want to do a lot of logging, consider using a remote "
-"syslog server (see the <a href=\"status_logs_settings.php\">Status: System "
-"Logs: Settings</a> page)."
+"everything. If doing a lot of logging, consider using a remote syslog server "
+"(see the <a href=\"status_logs_settings.php\">Status: System Logs: Settings</"
+"a> page)."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1424
+#: src/usr/local/www/firewall_rules_edit.php:1442
#: src/usr/local/www/services_unbound_acls.php:273
-msgid "You may enter a description here for your reference."
-msgstr ""
-
-#: src/usr/local/www/firewall_rules_edit.php:1430
-#: src/usr/local/www/interfaces_ppps_edit.php:828
-#: src/usr/local/www/system_gateways_edit.php:716
-msgid "Advanced options"
+msgid "A description may be entered here for administrative reference."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1449
+#: src/usr/local/www/firewall_rules_edit.php:1465
msgid "Source OS"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1452
+#: src/usr/local/www/firewall_rules_edit.php:1468
msgid ""
"Note: this only works for TCP rules. General OS choice matches all subtypes."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1456
+#: src/usr/local/www/firewall_rules_edit.php:1472
msgid "Diffserv Code Point"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1463
+#: src/usr/local/www/firewall_rules_edit.php:1479
msgid "Allow IP options"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1471
+#: src/usr/local/www/firewall_rules_edit.php:1487
#: src/usr/local/www/system_advanced_firewall.php:552
msgid "Disable reply-to"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1478
+#: src/usr/local/www/firewall_rules_edit.php:1494
#: src/usr/local/www/interfaces_qinq.php:144
msgid "Tag"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1481
+#: src/usr/local/www/firewall_rules_edit.php:1497
msgid ""
-"You can mark a packet matching this rule and use this mark to match on other "
-"NAT/filter rules. It is called <b>Policy filtering</b>."
+"A packet matching this rule can be marked and this mark used to match on "
+"other NAT/filter rules. It is called <b>Policy filtering</b>."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1486
+#: src/usr/local/www/firewall_rules_edit.php:1502
msgid "Tagged"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1489
-msgid "You can match packet on a mark placed before on another rule."
+#: src/usr/local/www/firewall_rules_edit.php:1505
+msgid "A packet can be matched on a mark placed before on another rule."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1493
+#: src/usr/local/www/firewall_rules_edit.php:1509
msgid "Max. states"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1496
+#: src/usr/local/www/firewall_rules_edit.php:1512
msgid "Maximum state entries this rule can create."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1500
+#: src/usr/local/www/firewall_rules_edit.php:1516
msgid "Max. src nodes"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1503
+#: src/usr/local/www/firewall_rules_edit.php:1519
msgid "Maximum number of unique source hosts."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1507
+#: src/usr/local/www/firewall_rules_edit.php:1523
msgid "Max. connections"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1510
+#: src/usr/local/www/firewall_rules_edit.php:1526
msgid "Maximum number of established connections per host (TCP only)."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1514
+#: src/usr/local/www/firewall_rules_edit.php:1530
msgid "Max. src. states"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1517
+#: src/usr/local/www/firewall_rules_edit.php:1533
msgid "Maximum state entries per host."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1521
+#: src/usr/local/www/firewall_rules_edit.php:1537
msgid "Max. src. conn. Rate"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1524
-msgid "Maximum new connections per host (TCP only)"
+#: src/usr/local/www/firewall_rules_edit.php:1540
+msgid "Maximum new connections per host (TCP only)."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1528
+#: src/usr/local/www/firewall_rules_edit.php:1544
msgid "Max. src. conn. Rates"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1532
+#: src/usr/local/www/firewall_rules_edit.php:1548
msgid "/ per how many second(s) (TCP only)"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1536
+#: src/usr/local/www/firewall_rules_edit.php:1552
msgid "State timeout"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1540
+#: src/usr/local/www/firewall_rules_edit.php:1556
msgid "State Timeout in seconds (TCP only)"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1543
+#: src/usr/local/www/firewall_rules_edit.php:1559
#: src/usr/local/www/status_logs_filter.php:362
#: src/usr/local/www/status_logs_filter_dynamic.php:510
msgid "TCP Flags"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1545
+#: src/usr/local/www/firewall_rules_edit.php:1561
msgid ""
"Use this to choose TCP flags that must be set or cleared for this rule to "
"match."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1549
+#: src/usr/local/www/firewall_rules_edit.php:1565
msgid "No pfSync"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1559
+#: src/usr/local/www/firewall_rules_edit.php:1575
msgid "Keep"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1560
+#: src/usr/local/www/firewall_rules_edit.php:1576
msgid "Sloppy"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1561
+#: src/usr/local/www/firewall_rules_edit.php:1577
msgid "Synproxy"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1556
+#: src/usr/local/www/firewall_rules_edit.php:1572
msgid "State type"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1564
+#: src/usr/local/www/firewall_rules_edit.php:1580
msgid ""
-"Select which type of state tracking mechanism you would like to use. If in "
-"doubt, use keep state<br /><span></span>"
+"Select which type of state tracking mechanism to use. If in doubt, use keep "
+"state.<br /><span></span>"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1572
+#: src/usr/local/www/firewall_rules_edit.php:1588
msgid "This does NOT prevent the rule from being overwritten on Slave."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1578
+#: src/usr/local/www/firewall_rules_edit.php:1594
msgid "VLAN Prio"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1581
-msgid "Choose 802.1p priority to match on"
+#: src/usr/local/www/firewall_rules_edit.php:1597
+msgid "Choose 802.1p priority to match on."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1585
+#: src/usr/local/www/firewall_rules_edit.php:1601
msgid "VLAN Prio Set"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1588
-msgid "Choose 802.1p priority to apply"
+#: src/usr/local/www/firewall_rules_edit.php:1604
+msgid "Choose 802.1p priority to apply."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1602
-msgid "Leave as 'none' to leave the rule enabled all the time"
+#: src/usr/local/www/firewall_rules_edit.php:1618
+msgid "Leave as 'none' to leave the rule enabled all the time."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1633
+#: src/usr/local/www/firewall_rules_edit.php:1649
msgid ""
"Leave as 'default' to use the system routing table. Or choose a gateway to "
"utilize policy based routing."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1636
+#: src/usr/local/www/firewall_rules_edit.php:1652
msgid "In / Out pipe"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1640
+#: src/usr/local/www/firewall_rules_edit.php:1656
msgid "DNpipe"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1647
+#: src/usr/local/www/firewall_rules_edit.php:1663
msgid "PDNpipe"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1652
+#: src/usr/local/www/firewall_rules_edit.php:1668
msgid ""
-"Choose the Out queue/Virtual interface only if you have also selected In. "
-"The Out selection is applied to traffic leaving the interface where the rule "
-"is created, the In selection is applied to traffic coming into the chosen "
-"interface.<br />If you are creating a floating rule, if the direction is In "
-"then the same rules apply, if the direction is Out the selections are "
-"reversed, Out is for incoming and In is for outgoing."
+"Choose the Out queue/Virtual interface only if In is also selected. The Out "
+"selection is applied to traffic leaving the interface where the rule is "
+"created, the In selection is applied to traffic coming into the chosen "
+"interface.<br />If creating a floating rule, if the direction is In then the "
+"same rules apply, if the direction is Out the selections are reversed, Out "
+"is for incoming and In is for outgoing."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1660
+#: src/usr/local/www/firewall_rules_edit.php:1676
msgid "Ackqueue / Queue"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1677
+#: src/usr/local/www/firewall_rules_edit.php:1693
msgid "Ackqueue"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1689
-msgid "Choose the Acknowledge Queue only if you have selected Queue."
+#: src/usr/local/www/firewall_rules_edit.php:1705
+msgid "Choose the Acknowledge Queue only if there is a selected Queue."
msgstr ""
#: src/usr/local/www/firewall_schedule.php:75
#: src/usr/local/www/firewall_schedule.php:120
#: src/usr/local/www/firewall_schedule_edit.php:85
#: src/usr/local/www/head.inc:278
-#: src/usr/local/www/system_advanced_misc.php:479
+#: src/usr/local/www/system_advanced_misc.php:496
msgid "Schedules"
msgstr ""
@@ -12582,75 +12788,68 @@ msgstr ""
msgid "Schedule name cannot be blank."
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:130
-msgid "Reserved word used for schedule name."
+#: src/usr/local/www/firewall_schedule_edit.php:129
+msgid "schedule"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:133
-#, php-format
-msgid ""
-"The schedule name must be less than 32 characters long, may not consist of "
-"only numbers, may not consist of only underscores, and may only contain the "
-"following characters: %s"
-msgstr ""
-
-#: src/usr/local/www/firewall_schedule_edit.php:144
+#: src/usr/local/www/firewall_schedule_edit.php:139
msgid "A Schedule with this name already exists."
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:159
+#: src/usr/local/www/firewall_schedule_edit.php:154
#, php-format
msgid "Invalid start time - '%s'"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:164
+#: src/usr/local/www/firewall_schedule_edit.php:159
#, php-format
msgid "Invalid stop time - '%s'"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:211
+#: src/usr/local/www/firewall_schedule_edit.php:206
msgid "The schedule must have at least one time range configured."
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:294
+#: src/usr/local/www/firewall_schedule_edit.php:289
msgid "Tue"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:296
+#: src/usr/local/www/firewall_schedule_edit.php:291
msgid "Thu"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:345
+#: src/usr/local/www/firewall_schedule_edit.php:340
msgid ""
"Click individual date to select that date only. Click the appropriate "
"weekday Header to select all occurrences of that weekday. "
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:389
+#: src/usr/local/www/firewall_schedule_edit.php:384
msgid "Schedule Information"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:393
+#: src/usr/local/www/firewall_schedule_edit.php:388
msgid "Schedule Name"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:398
+#: src/usr/local/www/firewall_schedule_edit.php:393
msgid ""
"The name of the schedule may only consist of the characters \"a-z, A-Z, 0-9 "
"and _\"."
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:412
-#: src/usr/local/www/firewall_schedule_edit.php:465
-#: src/usr/local/www/vpn_openvpn_csc.php:375
-msgid "You may enter a description here for your reference (not parsed). "
+#: src/usr/local/www/firewall_schedule_edit.php:407
+#: src/usr/local/www/firewall_schedule_edit.php:460
+#: src/usr/local/www/vpn_openvpn_csc.php:379
+msgid ""
+"A description may be entered here for administrative reference (not parsed). "
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:416
+#: src/usr/local/www/firewall_schedule_edit.php:411
msgid "Month"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:426
+#: src/usr/local/www/firewall_schedule_edit.php:421
#: src/usr/local/www/status_logs.php:172 src/usr/local/www/status_logs.php:224
#: src/usr/local/www/status_logs_common.inc:276
#: src/usr/local/www/status_logs_common.inc:462
@@ -12665,58 +12864,58 @@ msgstr ""
msgid "Time"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:433
+#: src/usr/local/www/firewall_schedule_edit.php:428
msgid "Start Hrs"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:440
+#: src/usr/local/www/firewall_schedule_edit.php:435
msgid "Start Mins"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:447
+#: src/usr/local/www/firewall_schedule_edit.php:442
msgid "Stop Hrs"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:454
+#: src/usr/local/www/firewall_schedule_edit.php:449
msgid "Stop Mins"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:456
+#: src/usr/local/www/firewall_schedule_edit.php:451
msgid ""
"Select the time range for the day(s) selected on the Month(s) above. A full "
"day is 0:00-23:59."
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:462
+#: src/usr/local/www/firewall_schedule_edit.php:457
msgid "Time range description"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:471
+#: src/usr/local/www/firewall_schedule_edit.php:466
msgid "Add Time"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:476
+#: src/usr/local/www/firewall_schedule_edit.php:473
msgid "Clear selection"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:492
+#: src/usr/local/www/firewall_schedule_edit.php:491
msgid "Configured Ranges"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:628
+#: src/usr/local/www/firewall_schedule_edit.php:627
msgid "Day(s)"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:635
+#: src/usr/local/www/firewall_schedule_edit.php:634
msgid "Start time"
msgstr ""
-#: src/usr/local/www/firewall_schedule_edit.php:642
+#: src/usr/local/www/firewall_schedule_edit.php:641
msgid "Stop time"
msgstr ""
#: src/usr/local/www/firewall_shaper.php:75
-#: src/usr/local/www/firewall_shaper.php:436
+#: src/usr/local/www/firewall_shaper.php:415
#: src/usr/local/www/firewall_shaper_queues.php:243
#: src/usr/local/www/firewall_shaper_vinterface.php:415
#: src/usr/local/www/firewall_shaper_wizards.php:111
@@ -12730,8 +12929,8 @@ msgstr ""
#: src/usr/local/www/firewall_shaper.php:203
msgid ""
-"Could not create new queue/discipline! Did you remember to apply any recent "
-"changes?"
+"Could not create new queue/discipline! Any recent changes may need to be "
+"applied first."
msgstr ""
#: src/usr/local/www/firewall_shaper.php:225
@@ -12743,19 +12942,19 @@ msgstr ""
msgid "Queue not found!"
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:334
+#: src/usr/local/www/firewall_shaper.php:313
#: src/usr/local/www/firewall_shaper_vinterface.php:303
msgid "Could not add new queue."
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:432
+#: src/usr/local/www/firewall_shaper.php:411
#: src/usr/local/www/firewall_shaper_queues.php:239
#: src/usr/local/www/firewall_shaper_vinterface.php:411
#: src/usr/local/www/firewall_shaper_wizards.php:122
msgid "The traffic shaper configuration has been changed."
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:437
+#: src/usr/local/www/firewall_shaper.php:416
#: src/usr/local/www/firewall_shaper_queues.php:221
#: src/usr/local/www/firewall_shaper_queues.php:244
#: src/usr/local/www/firewall_shaper_vinterface.php:416
@@ -12763,27 +12962,27 @@ msgstr ""
msgid "By Queue"
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:439
+#: src/usr/local/www/firewall_shaper.php:418
#: src/usr/local/www/firewall_shaper_queues.php:246
#: src/usr/local/www/firewall_shaper_vinterface.php:418
#: src/usr/local/www/firewall_shaper_wizards.php:96
#: src/usr/local/www/firewall_shaper_wizards.php:114
#: src/usr/local/www/vpn_openvpn_client.php:451
-#: src/usr/local/www/vpn_openvpn_csc.php:329
+#: src/usr/local/www/vpn_openvpn_csc.php:333
#: src/usr/local/www/vpn_openvpn_server.php:617
msgid "Wizards"
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:457
+#: src/usr/local/www/firewall_shaper.php:437
msgid "Remove Shaper"
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:478
-#: src/usr/local/www/firewall_shaper_vinterface.php:448
+#: src/usr/local/www/firewall_shaper.php:458
+#: src/usr/local/www/firewall_shaper_vinterface.php:447
msgid "Add new Queue"
msgstr ""
-#: src/usr/local/www/firewall_shaper.php:492
+#: src/usr/local/www/firewall_shaper.php:473
#: src/usr/local/www/firewall_shaper_vinterface.php:462
msgid "Delete this queue"
msgstr ""
@@ -12809,10 +13008,10 @@ msgstr ""
#: src/usr/local/www/firewall_shaper_vinterface.php:260
#: src/usr/local/www/firewall_shaper_vinterface.php:286
-msgid "You cannot name a child queue with the same name as a parent limiter"
+msgid "A child queue cannot be named the same as a parent limiter."
msgstr ""
-#: src/usr/local/www/firewall_shaper_vinterface.php:428
+#: src/usr/local/www/firewall_shaper_vinterface.php:429
msgid "New Limiter"
msgstr ""
@@ -12870,23 +13069,23 @@ msgid ""
msgstr ""
#: src/usr/local/www/firewall_virtual_ip.php:265
-#: src/usr/local/www/firewall_virtual_ip_edit.php:375
+#: src/usr/local/www/firewall_virtual_ip_edit.php:384
msgid "Proxy ARP"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip.php:266
#: src/usr/local/www/status_carp.php:140
-#: src/usr/local/www/firewall_virtual_ip_edit.php:367
+#: src/usr/local/www/firewall_virtual_ip_edit.php:376
msgid "CARP"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip.php:268
-#: src/usr/local/www/firewall_virtual_ip_edit.php:359
+#: src/usr/local/www/firewall_virtual_ip_edit.php:368
msgid "IP Alias"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip.php:271
-#: src/usr/local/www/firewall_virtual_ip_edit.php:320
+#: src/usr/local/www/firewall_virtual_ip_edit.php:329
#: src/usr/local/www/head.inc:280
msgid "Virtual IPs"
msgstr ""
@@ -12920,9 +13119,7 @@ msgstr ""
#: src/usr/local/www/firewall_virtual_ip.php:377
#, php-format
-msgid ""
-"You can check the status of your CARP Virtual IPs and interfaces %1$shere"
-"%2$s."
+msgid "Check the status of CARP Virtual IPs and interfaces %1$shere%2$s."
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:139
@@ -12943,16 +13140,17 @@ msgid ""
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:183
-msgid "You cannot use the network address for this VIP"
+msgid "The network address cannot be used for this VIP"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:185
-msgid "You cannot use the broadcast address for this VIP"
+msgid "The broadcast address cannot be used for this VIP"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:204
msgid ""
-"You must specify a CARP password that is shared between the two VHID members."
+"A CARP password that is shared between the two VHID members must be "
+"specified."
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:208
@@ -12960,99 +13158,107 @@ msgid "Password and confirm password must match"
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:212
-#: src/usr/local/www/firewall_virtual_ip_edit.php:223
+#: src/usr/local/www/firewall_virtual_ip_edit.php:232
msgid "For this type of vip localhost is not allowed."
msgstr ""
#: src/usr/local/www/firewall_virtual_ip_edit.php:214
-#: src/usr/local/www/firewall_virtual_ip_edit.php:225
+#: src/usr/local/www/firewall_virtual_ip_edit.php:234
msgid ""
"A CARP parent interface can only be used with IP Alias type Virtual IPs."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:317
+#: src/usr/local/www/firewall_virtual_ip_edit.php:223
+msgid "An IPv4 Virtual IP cannot have an IPv6 CARP parent."
+msgstr ""
+
+#: src/usr/local/www/firewall_virtual_ip_edit.php:226
+msgid "An IPv6 Virtual IP cannot have an IPv4 CARP parent."
+msgstr ""
+
+#: src/usr/local/www/firewall_virtual_ip_edit.php:326
msgid ""
"The mask must be the network's subnet mask. It does not specify a CIDR range."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:318
+#: src/usr/local/www/firewall_virtual_ip_edit.php:327
msgid "Enter a CIDR block of proxy ARP addresses."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:352
+#: src/usr/local/www/firewall_virtual_ip_edit.php:361
msgid "Edit Virtual IP"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:402
+#: src/usr/local/www/firewall_virtual_ip_edit.php:411
msgid "Single address"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:399
+#: src/usr/local/www/firewall_virtual_ip_edit.php:408
msgid "Address type"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:409
+#: src/usr/local/www/firewall_virtual_ip_edit.php:418
msgid "Address(es)"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:411
+#: src/usr/local/www/firewall_virtual_ip_edit.php:420
msgid "<span id=\"address_note\"></span>"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:415
+#: src/usr/local/www/firewall_virtual_ip_edit.php:424
msgid "Expansion"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:422
+#: src/usr/local/www/firewall_virtual_ip_edit.php:431
msgid "Virtual IP Password"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:425
+#: src/usr/local/www/firewall_virtual_ip_edit.php:434
msgid "Enter the VHID group password."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:429
+#: src/usr/local/www/firewall_virtual_ip_edit.php:438
msgid "VHID Group"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:432
-msgid "Enter the VHID group that the machines will share"
+#: src/usr/local/www/firewall_virtual_ip_edit.php:441
+msgid "Enter the VHID group that the machines will share."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:434
+#: src/usr/local/www/firewall_virtual_ip_edit.php:443
msgid "Advertising frequency"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:437
-#: src/usr/local/www/firewall_virtual_ip_edit.php:440
+#: src/usr/local/www/firewall_virtual_ip_edit.php:446
+#: src/usr/local/www/firewall_virtual_ip_edit.php:449
msgid "Base"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:444
-#: src/usr/local/www/firewall_virtual_ip_edit.php:447
+#: src/usr/local/www/firewall_virtual_ip_edit.php:453
+#: src/usr/local/www/firewall_virtual_ip_edit.php:456
msgid "Skew"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:449
+#: src/usr/local/www/firewall_virtual_ip_edit.php:458
msgid ""
"The frequency that this machine will advertise. 0 means usually master. "
"Otherwise the lowest combination of both values in the cluster determines "
"the master."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:482
+#: src/usr/local/www/firewall_virtual_ip_edit.php:491
msgid ""
"Proxy ARP and Other type Virtual IPs cannot be bound to by anything running "
"on the firewall, such as IPsec, OpenVPN, etc. Use a CARP or IP Alias type "
"address for these types."
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:483
+#: src/usr/local/www/firewall_virtual_ip_edit.php:492
#, php-format
msgid "For more information on CARP and the above values, visit the OpenBSD %s"
msgstr ""
-#: src/usr/local/www/foot.inc:12 src/usr/local/www/foot.inc:16
+#: src/usr/local/www/foot.inc:11 src/usr/local/www/foot.inc:15
msgid "Top of page"
msgstr ""
@@ -13147,8 +13353,8 @@ msgid "Authentication and Accounting"
msgstr ""
#: src/usr/local/www/guiconfig.inc:190
-#: src/usr/local/www/services_captiveportal.php:901
-#: src/usr/local/www/vpn_l2tp.php:338
+#: src/usr/local/www/services_captiveportal.php:910
+#: src/usr/local/www/vpn_l2tp.php:335
msgid "Accounting"
msgstr ""
@@ -13176,17 +13382,17 @@ msgstr ""
msgid "10BASE-T half-duplex"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:268 src/usr/local/www/interfaces.php:2928
+#: src/usr/local/www/guiconfig.inc:268 src/usr/local/www/interfaces.php:2935
#: src/usr/local/www/interfaces_wireless_edit.php:224
msgid "Infrastructure (BSS)"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:269 src/usr/local/www/interfaces.php:2928
+#: src/usr/local/www/guiconfig.inc:269 src/usr/local/www/interfaces.php:2935
#: src/usr/local/www/interfaces_wireless_edit.php:225
msgid "Ad-hoc (IBSS)"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:270 src/usr/local/www/interfaces.php:2928
+#: src/usr/local/www/guiconfig.inc:270 src/usr/local/www/interfaces.php:2935
#: src/usr/local/www/interfaces_wireless_edit.php:226
msgid "Access Point"
msgstr ""
@@ -13205,48 +13411,60 @@ msgstr ""
msgid "The following input errors were detected:"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:344
+#: src/usr/local/www/guiconfig.inc:347
msgid "Apply Changes"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:377
+#: src/usr/local/www/guiconfig.inc:380
#: src/usr/local/www/status_logs_common.inc:753
msgid "The changes have been applied successfully."
msgstr ""
-#: src/usr/local/www/guiconfig.inc:384
+#: src/usr/local/www/guiconfig.inc:387
msgid ""
-"You can also <a href=\"status_filter_reload.php\">monitor</a> the filter "
-"reload progress."
+"<a href=\"status_filter_reload.php\">Monitor</a> the filter reload progress."
msgstr ""
-#: src/usr/local/www/guiconfig.inc:565 src/usr/local/www/guiconfig.inc:616
+#: src/usr/local/www/guiconfig.inc:568 src/usr/local/www/guiconfig.inc:619
#, php-format
msgid "File %s is a directory."
msgstr ""
-#: src/usr/local/www/guiconfig.inc:567 src/usr/local/www/guiconfig.inc:618
+#: src/usr/local/www/guiconfig.inc:570 src/usr/local/www/guiconfig.inc:621
msgid "Log file started."
msgstr ""
-#: src/usr/local/www/guiconfig.inc:1005
+#: src/usr/local/www/guiconfig.inc:1008
msgid "Currently viewing: "
msgstr ""
-#: src/usr/local/www/guiconfig.inc:1092
+#: src/usr/local/www/guiconfig.inc:1095
msgid "listing only first 10k items"
msgstr ""
-#: src/usr/local/www/guiconfig.inc:1102
-#: src/usr/local/www/services_dhcp.php:1207
-#: src/usr/local/www/services_dhcpv6.php:946
+#: src/usr/local/www/guiconfig.inc:1105
+#: src/usr/local/www/services_dhcp.php:1217
+#: src/usr/local/www/services_dhcpv6.php:956
#: src/usr/local/www/system_advanced_sysctl.php:207
#: src/usr/local/www/system_advanced_sysctl.php:256
-#: src/usr/local/www/system_certmanager.php:825
+#: src/usr/local/www/system_certmanager.php:784
msgid "Value"
msgstr ""
-#: src/usr/local/www/head.inc:244 src/usr/local/www/system.php:358
+#: src/usr/local/www/head.inc:242
+#: src/usr/local/www/system_advanced_admin.php:318
+#: src/usr/local/www/system_advanced_firewall.php:404
+#: src/usr/local/www/system_advanced_misc.php:320
+#: src/usr/local/www/system_advanced_network.php:173
+#: src/usr/local/www/system_advanced_notifications.php:215
+#: src/usr/local/www/system_advanced_sysctl.php:166
+#: src/usr/local/www/system_gateways_edit.php:719
+#: src/usr/local/www/vpn_openvpn_csc.php:594
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:280
+msgid "Advanced"
+msgstr ""
+
+#: src/usr/local/www/head.inc:244 src/usr/local/www/system.php:362
msgid "General Setup"
msgstr ""
@@ -13260,8 +13478,8 @@ msgstr ""
#: src/usr/local/www/head.inc:250 src/usr/local/www/status_logs.php:92
#: src/usr/local/www/status_logs_common.inc:138
-#: src/usr/local/www/system_gateway_groups.php:124
-#: src/usr/local/www/system_gateway_groups_edit.php:180
+#: src/usr/local/www/system_gateway_groups.php:138
+#: src/usr/local/www/system_gateway_groups_edit.php:181
#: src/usr/local/www/system_gateways.php:245
#: src/usr/local/www/system_gateways_edit.php:572
#: src/usr/local/www/system_routes.php:246
@@ -13274,12 +13492,12 @@ msgid "Cert. Manager"
msgstr ""
#: src/usr/local/www/head.inc:253 src/usr/local/www/head.inc:255
-#: src/usr/local/www/system_authservers.php:377
-#: src/usr/local/www/system_groupmanager.php:274
+#: src/usr/local/www/system_authservers.php:443
+#: src/usr/local/www/system_groupmanager.php:288
#: src/usr/local/www/system_groupmanager_addprivs.php:69
-#: src/usr/local/www/system_usermanager.php:467
+#: src/usr/local/www/system_usermanager.php:468
#: src/usr/local/www/system_usermanager_addprivs.php:70
-#: src/usr/local/www/system_usermanager_settings.php:75
+#: src/usr/local/www/system_usermanager_settings.php:140
msgid "User Manager"
msgstr ""
@@ -13289,7 +13507,7 @@ msgstr ""
#: src/usr/local/www/head.inc:293 src/usr/local/www/services_dhcpv6.php:505
#: src/usr/local/www/services_dhcpv6_edit.php:234
-#: src/usr/local/www/services_router_advertisements.php:242
+#: src/usr/local/www/services_router_advertisements.php:244
msgid "DHCPv6 Server & RA"
msgstr ""
@@ -13301,11 +13519,11 @@ msgstr ""
#: src/usr/local/www/head.inc:298 src/usr/local/www/head.inc:332
#: src/usr/local/www/load_balancer_monitor.php:107
-#: src/usr/local/www/load_balancer_monitor_edit.php:234
+#: src/usr/local/www/load_balancer_monitor_edit.php:236
#: src/usr/local/www/load_balancer_pool.php:121
#: src/usr/local/www/load_balancer_pool_edit.php:219
#: src/usr/local/www/load_balancer_setting.php:120
-#: src/usr/local/www/load_balancer_virtual_server.php:121
+#: src/usr/local/www/load_balancer_virtual_server.php:141
#: src/usr/local/www/load_balancer_virtual_server_edit.php:193
#: src/usr/local/www/status_lb_pool.php:92
#: src/usr/local/www/status_lb_vs.php:79 src/usr/local/www/status_logs.php:84
@@ -13315,7 +13533,7 @@ msgid "Load Balancer"
msgstr ""
#: src/usr/local/www/head.inc:299 src/usr/local/www/head.inc:333
-#: src/usr/local/www/services_dhcp.php:1085
+#: src/usr/local/www/services_dhcp.php:1089
#: src/usr/local/www/services_ntpd.php:218
#: src/usr/local/www/services_ntpd_acls.php:195
#: src/usr/local/www/services_ntpd_gps.php:225
@@ -13323,7 +13541,7 @@ msgstr ""
#: src/usr/local/www/status_logs.php:88
#: src/usr/local/www/status_logs_common.inc:130
#: src/usr/local/www/status_logs_settings.php:242
-#: src/usr/local/www/status_ntpd.php:186
+#: src/usr/local/www/status_ntpd.php:287
msgid "NTP"
msgstr ""
@@ -13336,8 +13554,8 @@ msgstr ""
msgid "UPnP &amp; NAT-PMP"
msgstr ""
-#: src/usr/local/www/head.inc:318 src/usr/local/www/interfaces.php:1640
-#: src/usr/local/www/interfaces_ppps_edit.php:466
+#: src/usr/local/www/head.inc:318 src/usr/local/www/interfaces.php:1649
+#: src/usr/local/www/interfaces_ppps_edit.php:476
#: src/usr/local/www/vpn_l2tp.php:219 src/usr/local/www/vpn_l2tp_users.php:63
#: src/usr/local/www/vpn_l2tp_users_edit.php:63
msgid "L2TP"
@@ -13347,7 +13565,7 @@ msgstr ""
msgid "CARP (failover)"
msgstr ""
-#: src/usr/local/www/head.inc:325 src/usr/local/www/index.php:315
+#: src/usr/local/www/head.inc:325 src/usr/local/www/index.php:321
msgid "Dashboard"
msgstr ""
@@ -13360,8 +13578,8 @@ msgstr ""
#: src/usr/local/www/status_gateways.php:86
#: src/usr/local/www/status_logs.php:90
#: src/usr/local/www/status_logs_common.inc:137
-#: src/usr/local/www/system_gateway_groups.php:138
-#: src/usr/local/www/system_gateway_groups.php:151
+#: src/usr/local/www/system_gateway_groups.php:152
+#: src/usr/local/www/system_gateway_groups.php:165
#: src/usr/local/www/system_gateways.php:245
#: src/usr/local/www/system_gateways.php:262
#: src/usr/local/www/system_gateways.php:269
@@ -13390,22 +13608,22 @@ msgstr ""
#: src/usr/local/www/head.inc:341
#: src/usr/local/www/load_balancer_monitor.php:107
-#: src/usr/local/www/load_balancer_monitor_edit.php:234
+#: src/usr/local/www/load_balancer_monitor_edit.php:236
#: src/usr/local/www/load_balancer_pool.php:121
#: src/usr/local/www/load_balancer_pool_edit.php:219
#: src/usr/local/www/load_balancer_setting.php:120
-#: src/usr/local/www/load_balancer_virtual_server.php:121
+#: src/usr/local/www/load_balancer_virtual_server.php:141
#: src/usr/local/www/load_balancer_virtual_server_edit.php:193
-#: src/usr/local/www/services_captiveportal.php:96
-#: src/usr/local/www/services_captiveportal_filemanager.php:99
-#: src/usr/local/www/services_captiveportal_hostname.php:95
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:96
-#: src/usr/local/www/services_captiveportal_ip.php:94
-#: src/usr/local/www/services_captiveportal_ip_edit.php:98
-#: src/usr/local/www/services_captiveportal_mac.php:91
-#: src/usr/local/www/services_captiveportal_mac_edit.php:101
-#: src/usr/local/www/services_captiveportal_vouchers.php:111
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:86
+#: src/usr/local/www/services_captiveportal.php:97
+#: src/usr/local/www/services_captiveportal_filemanager.php:100
+#: src/usr/local/www/services_captiveportal_hostname.php:96
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:98
+#: src/usr/local/www/services_captiveportal_ip.php:95
+#: src/usr/local/www/services_captiveportal_ip_edit.php:99
+#: src/usr/local/www/services_captiveportal_mac.php:92
+#: src/usr/local/www/services_captiveportal_mac_edit.php:102
+#: src/usr/local/www/services_captiveportal_vouchers.php:112
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:87
#: src/usr/local/www/services_captiveportal_zones.php:93
#: src/usr/local/www/services_captiveportal_zones_edit.php:69
#: src/usr/local/www/services_dhcp.php:726
@@ -13429,27 +13647,27 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:314
#: src/usr/local/www/services_rfc2136.php:92
#: src/usr/local/www/services_rfc2136_edit.php:182
-#: src/usr/local/www/services_router_advertisements.php:242
+#: src/usr/local/www/services_router_advertisements.php:244
#: src/usr/local/www/services_snmp.php:210
-#: src/usr/local/www/services_unbound.php:266
+#: src/usr/local/www/services_unbound.php:272
#: src/usr/local/www/services_unbound_acls.php:208
#: src/usr/local/www/services_unbound_advanced.php:221
#: src/usr/local/www/services_unbound_domainoverride_edit.php:145
#: src/usr/local/www/services_unbound_host_edit.php:233
#: src/usr/local/www/services_wol.php:146
#: src/usr/local/www/services_wol_edit.php:137
-#: src/usr/local/www/status_services.php:100
-#: src/usr/local/www/status_services.php:122
-#: src/usr/local/www/system_authservers.php:223
+#: src/usr/local/www/status_services.php:90
+#: src/usr/local/www/status_services.php:112
+#: src/usr/local/www/system_authservers.php:289
msgid "Services"
msgstr ""
-#: src/usr/local/www/head.inc:343 src/usr/local/www/status_graph.php:150
-#: src/usr/local/www/status_graph.php:258
+#: src/usr/local/www/head.inc:343 src/usr/local/www/status_graph.php:165
+#: src/usr/local/www/status_graph.php:273
msgid "Traffic Graph"
msgstr ""
-#: src/usr/local/www/head.inc:358 src/usr/local/www/interfaces_assign.php:524
+#: src/usr/local/www/head.inc:358 src/usr/local/www/interfaces_assign.php:529
#: src/usr/local/www/interfaces_bridge.php:119
#: src/usr/local/www/interfaces_gif.php:114
#: src/usr/local/www/interfaces_gre.php:114
@@ -13508,7 +13726,7 @@ msgstr ""
msgid "FreeBSD Handbook"
msgstr ""
-#: src/usr/local/www/head.inc:479 src/usr/local/www/head.inc:625
+#: src/usr/local/www/head.inc:479 src/usr/local/www/head.inc:641
msgid "Notices"
msgstr ""
@@ -13517,11 +13735,11 @@ msgid "Log out"
msgstr ""
#: src/usr/local/www/head.inc:512
-msgid "Available widgets"
+msgid "Save dashboard layout"
msgstr ""
#: src/usr/local/www/head.inc:520
-msgid "Save dashboard layout"
+msgid "Available widgets"
msgstr ""
#: src/usr/local/www/head.inc:528
@@ -13532,24 +13750,28 @@ msgstr ""
msgid "Manage log"
msgstr ""
-#: src/usr/local/www/head.inc:581
+#: src/usr/local/www/head.inc:557
+msgid "Refresh Graph"
+msgstr ""
+
+#: src/usr/local/www/head.inc:597
msgid "Help for items on this page"
msgstr ""
-#: src/usr/local/www/head.inc:592
+#: src/usr/local/www/head.inc:608
#, php-format
msgid ""
"<p>%s is booting, then packages will be reinstalled in the background.</"
"p><p>Do not make changes in the GUI until this is complete.</p>"
msgstr ""
-#: src/usr/local/www/head.inc:595
+#: src/usr/local/www/head.inc:611
msgid ""
"<p>Packages are currently being reinstalled in the background.</p><p>Do not "
"make changes in the GUI until this is complete.</p>"
msgstr ""
-#: src/usr/local/www/head.inc:596
+#: src/usr/local/www/head.inc:612
#, php-format
msgid ""
"<p>If the above message is still displayed after a couple of hours, use the "
@@ -13557,16 +13779,15 @@ msgid ""
"&gt; %2$s\">%1$s &gt; %2$s</a> page and reinstall packages manually.</p>"
msgstr ""
-#: src/usr/local/www/head.inc:606
+#: src/usr/local/www/head.inc:622
msgid "This page is currently being managed by a remote machine."
msgstr ""
-#: src/usr/local/www/head.inc:664
-#: src/usr/local/www/system_usermanager_settings_ldapacpicker.php:132
+#: src/usr/local/www/head.inc:680
msgid "Close"
msgstr ""
-#: src/usr/local/www/head.inc:665
+#: src/usr/local/www/head.inc:681
msgid "Mark All as Read"
msgstr ""
@@ -13587,7 +13808,7 @@ msgid "Welcome to %s!\n"
msgstr ""
#: src/usr/local/www/index.php:218
-msgid "One moment while we start the initial setup wizard."
+msgid "One moment while the initial setup wizard starts."
msgstr ""
#: src/usr/local/www/index.php:219
@@ -13601,644 +13822,640 @@ msgstr ""
msgid "To bypass the wizard, click on the %s logo on the initial page."
msgstr ""
-#: src/usr/local/www/index.php:328 src/usr/local/www/system.php:532
+#: src/usr/local/www/index.php:334 src/usr/local/www/system.php:552
msgid "Available Widgets"
msgstr ""
-#: src/usr/local/www/index.php:501
-msgid "You have moved one or more widgets but have not yet saved"
+#: src/usr/local/www/index.php:513
+msgid "One or more widgets have been moved but have not yet been saved"
msgstr ""
#: src/usr/local/www/interfaces.php:444
-msgid "You have already applied your settings!"
+msgid "The settings have already been applied!"
msgstr ""
-#: src/usr/local/www/interfaces.php:514
+#: src/usr/local/www/interfaces.php:523
msgid "An interface with the specified description already exists."
msgstr ""
-#: src/usr/local/www/interfaces.php:523
+#: src/usr/local/www/interfaces.php:532
#, php-format
msgid "Sorry, an alias with the name %s already exists."
msgstr ""
-#: src/usr/local/www/interfaces.php:532
+#: src/usr/local/www/interfaces.php:541
#, php-format
msgid "Sorry, an interface group with the name %s already exists."
msgstr ""
-#: src/usr/local/www/interfaces.php:538
+#: src/usr/local/www/interfaces.php:547
msgid "The interface description cannot contain only numbers."
msgstr ""
-#: src/usr/local/www/interfaces.php:542
+#: src/usr/local/www/interfaces.php:551
msgid ""
"The DHCP Server is active on this interface and it can be used only with a "
"static IP configuration. Please disable the DHCP Server service on this "
"interface first, then change the interface configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:545
+#: src/usr/local/www/interfaces.php:554
msgid ""
"The DHCP6 Server is active on this interface and it can be used only with a "
"static IPv6 configuration. Please disable the DHCPv6 Server service on this "
"interface first, then change the interface configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:551
+#: src/usr/local/www/interfaces.php:560
msgid "IPv4 address"
msgstr ""
-#: src/usr/local/www/interfaces.php:551 src/usr/local/www/interfaces.php:602
+#: src/usr/local/www/interfaces.php:560 src/usr/local/www/interfaces.php:611
msgid "Subnet bit count"
msgstr ""
-#: src/usr/local/www/interfaces.php:558
+#: src/usr/local/www/interfaces.php:567
msgid ""
"This interface is referenced by IPv4 VIPs. Please delete those before "
"setting the interface to 'none' configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:565
+#: src/usr/local/www/interfaces.php:574
msgid "Modem Port"
msgstr ""
-#: src/usr/local/www/interfaces.php:565
-#: src/usr/local/www/interfaces_ppps_edit.php:221
+#: src/usr/local/www/interfaces.php:574
+#: src/usr/local/www/interfaces_ppps_edit.php:232
msgid "Phone Number"
msgstr ""
-#: src/usr/local/www/interfaces.php:571 src/usr/local/www/interfaces.php:574
+#: src/usr/local/www/interfaces.php:580 src/usr/local/www/interfaces.php:583
msgid "PPPoE username"
msgstr ""
-#: src/usr/local/www/interfaces.php:571 src/usr/local/www/interfaces.php:574
+#: src/usr/local/www/interfaces.php:580 src/usr/local/www/interfaces.php:583
msgid "PPPoE password"
msgstr ""
-#: src/usr/local/www/interfaces.php:571 src/usr/local/www/interfaces.php:581
-#: src/usr/local/www/interfaces.php:591 src/usr/local/www/interfaces.php:2578
-#: src/usr/local/www/interfaces.php:2714
-#: src/usr/local/www/interfaces_ppps_edit.php:227
+#: src/usr/local/www/interfaces.php:580 src/usr/local/www/interfaces.php:590
+#: src/usr/local/www/interfaces.php:600 src/usr/local/www/interfaces.php:2595
+#: src/usr/local/www/interfaces.php:2726
#: src/usr/local/www/interfaces_ppps_edit.php:238
+#: src/usr/local/www/interfaces_ppps_edit.php:249
msgid "Dial on demand"
msgstr ""
-#: src/usr/local/www/interfaces.php:571 src/usr/local/www/interfaces.php:581
-#: src/usr/local/www/interfaces.php:591
-#: src/usr/local/www/interfaces_ppps_edit.php:227
+#: src/usr/local/www/interfaces.php:580 src/usr/local/www/interfaces.php:590
+#: src/usr/local/www/interfaces.php:600
#: src/usr/local/www/interfaces_ppps_edit.php:238
+#: src/usr/local/www/interfaces_ppps_edit.php:249
msgid "Idle timeout value"
msgstr ""
-#: src/usr/local/www/interfaces.php:581 src/usr/local/www/interfaces.php:584
+#: src/usr/local/www/interfaces.php:590 src/usr/local/www/interfaces.php:593
msgid "PPTP username"
msgstr ""
-#: src/usr/local/www/interfaces.php:581 src/usr/local/www/interfaces.php:584
+#: src/usr/local/www/interfaces.php:590 src/usr/local/www/interfaces.php:593
msgid "PPTP password"
msgstr ""
-#: src/usr/local/www/interfaces.php:581 src/usr/local/www/interfaces.php:584
+#: src/usr/local/www/interfaces.php:590 src/usr/local/www/interfaces.php:593
msgid "PPTP local IP address"
msgstr ""
-#: src/usr/local/www/interfaces.php:581 src/usr/local/www/interfaces.php:584
+#: src/usr/local/www/interfaces.php:590 src/usr/local/www/interfaces.php:593
msgid "PPTP subnet"
msgstr ""
-#: src/usr/local/www/interfaces.php:581 src/usr/local/www/interfaces.php:584
+#: src/usr/local/www/interfaces.php:590 src/usr/local/www/interfaces.php:593
msgid "PPTP remote IP address"
msgstr ""
-#: src/usr/local/www/interfaces.php:591 src/usr/local/www/interfaces.php:594
+#: src/usr/local/www/interfaces.php:600 src/usr/local/www/interfaces.php:603
msgid "L2TP username"
msgstr ""
-#: src/usr/local/www/interfaces.php:591 src/usr/local/www/interfaces.php:594
+#: src/usr/local/www/interfaces.php:600 src/usr/local/www/interfaces.php:603
msgid "L2TP password"
msgstr ""
-#: src/usr/local/www/interfaces.php:591 src/usr/local/www/interfaces.php:594
+#: src/usr/local/www/interfaces.php:600 src/usr/local/www/interfaces.php:603
msgid "L2TP remote IP address"
msgstr ""
-#: src/usr/local/www/interfaces.php:609
+#: src/usr/local/www/interfaces.php:618
msgid ""
"This interface is referenced by IPv6 VIPs. Please delete those before "
"setting the interface to 'none' configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:616 src/usr/local/www/interfaces.php:635
-#: src/usr/local/www/interfaces.php:646 src/usr/local/www/interfaces.php:652
+#: src/usr/local/www/interfaces.php:625 src/usr/local/www/interfaces.php:644
+#: src/usr/local/www/interfaces.php:655 src/usr/local/www/interfaces.php:661
#, php-format
-msgid "You have to reassign the interface to be able to configure as %s."
+msgid "The interface must be reassigned to configure as %s."
msgstr ""
-#: src/usr/local/www/interfaces.php:619
+#: src/usr/local/www/interfaces.php:628
msgid ""
"DHCPv6 Prefix Delegation size must be provided when Send IPv6 prefix hint "
"flag is checked"
msgstr ""
-#: src/usr/local/www/interfaces.php:626
-msgid "You can only have one interface configured in 6rd with same prefix."
+#: src/usr/local/www/interfaces.php:635
+msgid "Only one interface can be configured within a single 6rd prefix."
msgstr ""
-#: src/usr/local/www/interfaces.php:632
+#: src/usr/local/www/interfaces.php:641
msgid "6RD Border Gateway must be an IPv4 address."
msgstr ""
-#: src/usr/local/www/interfaces.php:641
+#: src/usr/local/www/interfaces.php:650
#, php-format
-msgid "You can only have one interface configured as 6to4."
+msgid "Only one interface can be configured as 6to4."
msgstr ""
-#: src/usr/local/www/interfaces.php:656
-msgid "You have to select a valid interface to track."
+#: src/usr/local/www/interfaces.php:665
+msgid "A valid interface to track must be selected."
msgstr ""
-#: src/usr/local/www/interfaces.php:660
-msgid "You must enter a valid hexadecimal number for the IPv6 prefix ID."
+#: src/usr/local/www/interfaces.php:669
+msgid "A valid hexadecimal number must be entered for the IPv6 prefix ID."
msgstr ""
-#: src/usr/local/www/interfaces.php:664
-msgid "You specified an IPv6 prefix ID that is out of range."
+#: src/usr/local/www/interfaces.php:673
+msgid "The specified IPv6 Prefix ID is out of range."
msgstr ""
-#: src/usr/local/www/interfaces.php:674
+#: src/usr/local/www/interfaces.php:683
#, php-format
msgid "This track6 prefix ID is already being used in %s."
msgstr ""
-#: src/usr/local/www/interfaces.php:687
+#: src/usr/local/www/interfaces.php:696
msgid "A valid IPv4 address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:691
+#: src/usr/local/www/interfaces.php:700
#, php-format
msgid "IPv4 address %s is being used by or overlaps with:"
msgstr ""
-#: src/usr/local/www/interfaces.php:701
+#: src/usr/local/www/interfaces.php:710
msgid "This IPv4 address is the network address and cannot be used"
msgstr ""
-#: src/usr/local/www/interfaces.php:703
+#: src/usr/local/www/interfaces.php:712
msgid "This IPv4 address is the broadcast address and cannot be used"
msgstr ""
-#: src/usr/local/www/interfaces.php:710
+#: src/usr/local/www/interfaces.php:719
msgid "This IPv4 address conflicts with a Static Route."
msgstr ""
-#: src/usr/local/www/interfaces.php:719
+#: src/usr/local/www/interfaces.php:728
#: src/usr/local/www/services_dhcpv6_edit.php:160
msgid "A valid IPv6 address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:722
+#: src/usr/local/www/interfaces.php:731
msgid "IPv6 link local addresses cannot be configured as an interface IP."
msgstr ""
-#: src/usr/local/www/interfaces.php:726
+#: src/usr/local/www/interfaces.php:735
#, php-format
msgid "IPv6 address %s is being used by or overlaps with:"
msgstr ""
-#: src/usr/local/www/interfaces.php:736
+#: src/usr/local/www/interfaces.php:745
msgid "This IPv6 address conflicts with a Static Route."
msgstr ""
-#: src/usr/local/www/interfaces.php:744 src/usr/local/www/interfaces.php:747
+#: src/usr/local/www/interfaces.php:753 src/usr/local/www/interfaces.php:756
msgid "A valid subnet bit count must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:750
+#: src/usr/local/www/interfaces.php:759
msgid "A valid alias IP address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:753
+#: src/usr/local/www/interfaces.php:762
msgid "A valid alias subnet bit count must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:756
+#: src/usr/local/www/interfaces.php:765
msgid "A valid alias IP address must be specified to reject DHCP Leases from."
msgstr ""
-#: src/usr/local/www/interfaces.php:771
+#: src/usr/local/www/interfaces.php:780
#: src/usr/local/www/system_routes_edit.php:127
msgid "A valid gateway must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:775
+#: src/usr/local/www/interfaces.php:784
msgid "The service name contains invalid characters."
msgstr ""
-#: src/usr/local/www/interfaces.php:778 src/usr/local/www/interfaces.php:801
-#: src/usr/local/www/interfaces_ppps_edit.php:268
+#: src/usr/local/www/interfaces.php:787 src/usr/local/www/interfaces.php:810
+#: src/usr/local/www/interfaces_ppps_edit.php:279
msgid "The idle timeout value must be an integer."
msgstr ""
-#: src/usr/local/www/interfaces.php:782
-#: src/usr/local/www/interfaces_ppps_edit.php:272
+#: src/usr/local/www/interfaces.php:791
+#: src/usr/local/www/interfaces_ppps_edit.php:283
msgid "A valid PPPoE reset hour must be specified (0-23)."
msgstr ""
-#: src/usr/local/www/interfaces.php:786
-#: src/usr/local/www/interfaces_ppps_edit.php:276
+#: src/usr/local/www/interfaces.php:795
+#: src/usr/local/www/interfaces_ppps_edit.php:287
msgid "A valid PPPoE reset minute must be specified (0-59)."
msgstr ""
-#: src/usr/local/www/interfaces.php:789
-#: src/usr/local/www/interfaces_ppps_edit.php:279
+#: src/usr/local/www/interfaces.php:798
+#: src/usr/local/www/interfaces_ppps_edit.php:290
msgid "A valid PPPoE reset date must be specified (mm/dd/yyyy)."
msgstr ""
-#: src/usr/local/www/interfaces.php:792
+#: src/usr/local/www/interfaces.php:801
msgid "A valid PPTP local IP address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:795
+#: src/usr/local/www/interfaces.php:804
msgid "A valid PPTP subnet bit count must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:798
+#: src/usr/local/www/interfaces.php:807
msgid "A valid PPTP remote IP address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:804
+#: src/usr/local/www/interfaces.php:813
#: src/usr/local/www/services_dhcp_edit.php:214
#: src/usr/local/www/services_wol.php:112
#: src/usr/local/www/services_wol_edit.php:114
msgid "A valid MAC address must be specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:819
+#: src/usr/local/www/interfaces.php:828
#, php-format
msgid "The MTU must be between %d and %d bytes."
msgstr ""
-#: src/usr/local/www/interfaces.php:835
+#: src/usr/local/www/interfaces.php:844
msgid "The MTU of a VLAN cannot be greater than that of its parent interface."
msgstr ""
-#: src/usr/local/www/interfaces.php:851
+#: src/usr/local/www/interfaces.php:860
#, php-format
msgid "Interface %s (VLAN) has MTU set to a larger value."
msgstr ""
-#: src/usr/local/www/interfaces.php:858
+#: src/usr/local/www/interfaces.php:867
msgid "The MSS must be an integer between 576 and 65535 bytes."
msgstr ""
-#: src/usr/local/www/interfaces.php:867 src/usr/local/www/interfaces.php:2933
-#: src/usr/local/www/status_interfaces.php:172
+#: src/usr/local/www/interfaces.php:876 src/usr/local/www/interfaces.php:2940
+#: src/usr/local/www/status_interfaces.php:175
msgid "SSID"
msgstr ""
-#: src/usr/local/www/interfaces.php:870
+#: src/usr/local/www/interfaces.php:879
msgid "A specific channel, not auto, must be selected for Access Point mode."
msgstr ""
-#: src/usr/local/www/interfaces.php:875
+#: src/usr/local/www/interfaces.php:884
msgid "802.11n standards require enabling WME."
msgstr ""
-#: src/usr/local/www/interfaces.php:881
+#: src/usr/local/www/interfaces.php:890
msgid "Key Rotation must be an integer between 1 and 9999."
msgstr ""
-#: src/usr/local/www/interfaces.php:884
+#: src/usr/local/www/interfaces.php:893
msgid "Master Key Regeneration must be an integer between 1 and 9999."
msgstr ""
-#: src/usr/local/www/interfaces.php:888
+#: src/usr/local/www/interfaces.php:897
msgid "Master Key Regeneration must be greater than Key Rotation."
msgstr ""
-#: src/usr/local/www/interfaces.php:893
+#: src/usr/local/www/interfaces.php:902
msgid "802.1X Authentication Server must be an IP or hostname."
msgstr ""
-#: src/usr/local/www/interfaces.php:898
+#: src/usr/local/www/interfaces.php:907
msgid "Secondary 802.1X Authentication Server must be an IP or hostname."
msgstr ""
-#: src/usr/local/www/interfaces.php:903
+#: src/usr/local/www/interfaces.php:912
msgid ""
"802.1X Authentication Server Port must be a valid port number (1-65535)."
msgstr ""
-#: src/usr/local/www/interfaces.php:908
+#: src/usr/local/www/interfaces.php:917
msgid ""
"Secondary 802.1X Authentication Server Port must be a valid port number "
"(1-65535)."
msgstr ""
-#: src/usr/local/www/interfaces.php:913
+#: src/usr/local/www/interfaces.php:922
msgid "Invalid channel specified."
msgstr ""
-#: src/usr/local/www/interfaces.php:916
+#: src/usr/local/www/interfaces.php:925
msgid "Channel must be between 0-255."
msgstr ""
-#: src/usr/local/www/interfaces.php:921
+#: src/usr/local/www/interfaces.php:930
msgid "Distance must be an integer."
msgstr ""
-#: src/usr/local/www/interfaces.php:925
+#: src/usr/local/www/interfaces.php:934
msgid "Channel selected is not valid for 802.11a or 802.11na."
msgstr ""
-#: src/usr/local/www/interfaces.php:930
+#: src/usr/local/www/interfaces.php:939
msgid "Channel selected is not valid for 802.11b or 802.11g."
msgstr ""
-#: src/usr/local/www/interfaces.php:934
+#: src/usr/local/www/interfaces.php:943
msgid "Invalid option chosen for OFDM Protection Mode"
msgstr ""
-#: src/usr/local/www/interfaces.php:940
+#: src/usr/local/www/interfaces.php:949
msgid "The WPA passphrase must be between 8 and 63 characters long."
msgstr ""
-#: src/usr/local/www/interfaces.php:946
+#: src/usr/local/www/interfaces.php:955
msgid "A WPA Passphrase must be specified when WPA PSK is enabled."
msgstr ""
-#: src/usr/local/www/interfaces.php:952
+#: src/usr/local/www/interfaces.php:961
msgid "PPP Password and confirmed password must match!"
msgstr ""
-#: src/usr/local/www/interfaces.php:956
+#: src/usr/local/www/interfaces.php:965
msgid "PPPoE Password and confirmed password must match!"
msgstr ""
-#: src/usr/local/www/interfaces.php:960
+#: src/usr/local/www/interfaces.php:969
msgid "PTPP Password and confirmed password must match!"
msgstr ""
-#: src/usr/local/www/interfaces.php:1614
+#: src/usr/local/www/interfaces.php:1623
#, php-format
msgid ""
-"Unable to change mode to %s.\t You may already have the maximum number of "
-"wireless clones supported in this mode."
+"Unable to change mode to %s. The maximum number of wireless clones supported "
+"in this mode may have been reached."
msgstr ""
-#: src/usr/local/www/interfaces.php:1640
+#: src/usr/local/www/interfaces.php:1649
msgid "Static IPv4"
msgstr ""
-#: src/usr/local/www/interfaces.php:1640 src/usr/local/www/status_logs.php:76
+#: src/usr/local/www/interfaces.php:1649 src/usr/local/www/status_logs.php:76
#: src/usr/local/www/status_logs_common.inc:123
#: src/usr/local/www/status_logs_settings.php:235
msgid "DHCP"
msgstr ""
-#: src/usr/local/www/interfaces.php:1640
-#: src/usr/local/www/interfaces_ppps_edit.php:466
+#: src/usr/local/www/interfaces.php:1649
+#: src/usr/local/www/interfaces_ppps_edit.php:476
#: src/usr/local/www/status_logs.php:82
#: src/usr/local/www/status_logs_common.inc:126
#: src/usr/local/www/status_logs_settings.php:238
msgid "PPP"
msgstr ""
-#: src/usr/local/www/interfaces.php:1640
-#: src/usr/local/www/interfaces_ppps_edit.php:466
+#: src/usr/local/www/interfaces.php:1649
+#: src/usr/local/www/interfaces_ppps_edit.php:476
msgid "PPPoE"
msgstr ""
-#: src/usr/local/www/interfaces.php:1640
-#: src/usr/local/www/interfaces_ppps_edit.php:466
+#: src/usr/local/www/interfaces.php:1649
+#: src/usr/local/www/interfaces_ppps_edit.php:476
msgid "PPTP"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "Static IPv6"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "DHCP6"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "SLAAC"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "6rd Tunnel"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "6to4 Tunnel"
msgstr ""
-#: src/usr/local/www/interfaces.php:1641
+#: src/usr/local/www/interfaces.php:1650
msgid "Track Interface"
msgstr ""
-#: src/usr/local/www/interfaces.php:1651
+#: src/usr/local/www/interfaces.php:1660
msgid "Default (no preference, typically autoselect)"
msgstr ""
-#: src/usr/local/www/interfaces.php:1652
+#: src/usr/local/www/interfaces.php:1661
msgid "------- Media Supported by this interface -------"
msgstr ""
-#: src/usr/local/www/interfaces.php:1695
+#: src/usr/local/www/interfaces.php:1704
#, php-format
msgid "The %s configuration has been changed."
msgstr ""
-#: src/usr/local/www/interfaces.php:1697
+#: src/usr/local/www/interfaces.php:1705
+msgid "The changes must be applied to take effect."
+msgstr ""
+
+#: src/usr/local/www/interfaces.php:1706
msgid "Don't forget to adjust the DHCP Server range if needed after applying."
msgstr ""
-#: src/usr/local/www/interfaces.php:1710
+#: src/usr/local/www/interfaces.php:1716
msgid "General Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:1725
+#: src/usr/local/www/interfaces.php:1731
msgid "Enter a description (name) for the interface here."
msgstr ""
-#: src/usr/local/www/interfaces.php:1729
+#: src/usr/local/www/interfaces.php:1735
msgid "IPv4 Configuration Type"
msgstr ""
-#: src/usr/local/www/interfaces.php:1736
+#: src/usr/local/www/interfaces.php:1742
msgid "IPv6 Configuration Type"
msgstr ""
-#: src/usr/local/www/interfaces.php:1743
-#: src/usr/local/www/services_captiveportal_mac_edit.php:241
-#: src/usr/local/www/services_captiveportal_mac_edit.php:254
+#: src/usr/local/www/interfaces.php:1749
+#: src/usr/local/www/services_captiveportal_mac_edit.php:242
+#: src/usr/local/www/services_captiveportal_mac_edit.php:257
#: src/usr/local/www/services_dhcp_edit.php:429
-#: src/usr/local/www/status_interfaces.php:144
+#: src/usr/local/www/status_interfaces.php:147
msgid "MAC Address"
msgstr ""
-#: src/usr/local/www/interfaces.php:1751
-#: src/usr/local/www/services_captiveportal_mac_edit.php:249
+#: src/usr/local/www/interfaces.php:1757
+#: src/usr/local/www/services_captiveportal_mac_edit.php:250
#: src/usr/local/www/services_dhcp_edit.php:437
msgid "Copy My MAC"
msgstr ""
-#: src/usr/local/www/interfaces.php:1756
-#: src/usr/local/www/services_dhcp_edit.php:442
+#: src/usr/local/www/interfaces.php:1764
+#: src/usr/local/www/services_dhcp_edit.php:444
msgid "MAC controls"
msgstr ""
-#: src/usr/local/www/interfaces.php:1759
+#: src/usr/local/www/interfaces.php:1767
msgid ""
"This field can be used to modify (\"spoof\") the MAC address of this "
"interface.<br />Enter a MAC address in the following format: xx:xx:xx:xx:xx:"
-"xx or leave blank"
+"xx or leave blank."
msgstr ""
-#: src/usr/local/www/interfaces.php:1765
-#: src/usr/local/www/interfaces_ppps_edit.php:915
-#: src/usr/local/www/status_interfaces.php:167
+#: src/usr/local/www/interfaces.php:1773
+#: src/usr/local/www/interfaces_ppps_edit.php:927
+#: src/usr/local/www/status_interfaces.php:170
msgid "MTU"
msgstr ""
-#: src/usr/local/www/interfaces.php:1768
+#: src/usr/local/www/interfaces.php:1776
msgid ""
-"If you leave this field blank, the adapter's default MTU will be used. This "
-"is typically 1500 bytes but can vary in some circumstances."
+"If this field is blank, the adapter's default MTU will be used. This is "
+"typically 1500 bytes but can vary in some circumstances."
msgstr ""
-#: src/usr/local/www/interfaces.php:1773
+#: src/usr/local/www/interfaces.php:1781
msgid "MSS"
msgstr ""
-#: src/usr/local/www/interfaces.php:1776
+#: src/usr/local/www/interfaces.php:1784
msgid ""
-"If you enter a value in this field, then MSS clamping for TCP connections to "
-"the value entered above minus 40 (TCP/IP header size) will be in effect."
+"If a value is entered in this field, then MSS clamping for TCP connections "
+"to the value entered above minus 40 (TCP/IP header size) will be in effect."
msgstr ""
-#: src/usr/local/www/interfaces.php:1782
+#: src/usr/local/www/interfaces.php:1790
msgid "Speed and Duplex"
msgstr ""
-#: src/usr/local/www/interfaces.php:1785
+#: src/usr/local/www/interfaces.php:1793
msgid ""
-"Here you can explicitly set speed and duplex mode for this interface.<br /"
-">WARNING: You MUST leave this set to autoselect (automatically negotiate "
-"speed) unless the port this interface connects to has its speed and duplex "
-"forced."
+"Explicitly set speed and duplex mode for this interface.<br />WARNING: MUST "
+"be set to autoselect (automatically negotiate speed) unless the port this "
+"interface connects to has its speed and duplex forced."
msgstr ""
-#: src/usr/local/www/interfaces.php:1791
+#: src/usr/local/www/interfaces.php:1799
msgid "Static IPv4 Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:1796
-#: src/usr/local/www/status_interfaces.php:149
+#: src/usr/local/www/interfaces.php:1804
+#: src/usr/local/www/status_interfaces.php:152
msgid "IPv4 Address"
msgstr ""
-#: src/usr/local/www/interfaces.php:1800
+#: src/usr/local/www/interfaces.php:1808
msgid "IPv4 Upstream gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1804
+#: src/usr/local/www/interfaces.php:1812
msgid "IPv4 Upstream Gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1811 src/usr/local/www/interfaces.php:1842
+#: src/usr/local/www/interfaces.php:1819 src/usr/local/www/interfaces.php:1852
msgid "Add a new gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1816
-msgid "You can manage gateways by "
+#: src/usr/local/www/interfaces.php:1826
+msgid "Gateways can be managed by "
msgstr ""
-#: src/usr/local/www/interfaces.php:1816
+#: src/usr/local/www/interfaces.php:1826
msgid " clicking here"
msgstr ""
-#: src/usr/local/www/interfaces.php:1814
+#: src/usr/local/www/interfaces.php:1824 src/usr/local/www/interfaces.php:1857
msgid ""
"If this interface is an Internet connection, select an existing Gateway from "
"the list or add a new one using the \"Add\" button.<br />On local LANs the "
-"upstream gateway should be \"none\"."
+"upstream gateway should be \"none\". "
msgstr ""
-#: src/usr/local/www/interfaces.php:1822
+#: src/usr/local/www/interfaces.php:1832
msgid "Static IPv6 Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:1831
+#: src/usr/local/www/interfaces.php:1841
msgid "IPv6 Upstream gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1835
-msgid "IPv6 Upstream Gateway"
-msgstr ""
-
#: src/usr/local/www/interfaces.php:1845
-msgid ""
-"If this interface is an Internet connection, select an existing Gateway from "
-"the list or add a new one using the \"Add\" button.<br />On local LANs the "
-"upstream gateway should be \"none\". "
+msgid "IPv6 Upstream Gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1852
+#: src/usr/local/www/interfaces.php:1864
msgid "New IPv6 Gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1863 src/usr/local/www/interfaces.php:3175
+#: src/usr/local/www/interfaces.php:1875 src/usr/local/www/interfaces.php:3182
#: src/usr/local/www/system_gateways_edit.php:641
msgid "Gateway name"
msgstr ""
-#: src/usr/local/www/interfaces.php:1870
-#: src/usr/local/www/status_interfaces.php:155
+#: src/usr/local/www/interfaces.php:1882
+#: src/usr/local/www/status_interfaces.php:158
msgid "Gateway IPv6"
msgstr ""
-#: src/usr/local/www/interfaces.php:1903
+#: src/usr/local/www/interfaces.php:1919
msgid "DHCP Client Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:1906 src/usr/local/www/interfaces.php:2089
+#: src/usr/local/www/interfaces.php:1922 src/usr/local/www/interfaces.php:2105
msgid "Options"
msgstr ""
-#: src/usr/local/www/interfaces.php:1913
+#: src/usr/local/www/interfaces.php:1929
msgid "Use advanced DHCP configuration options."
msgstr ""
-#: src/usr/local/www/interfaces.php:1920 src/usr/local/www/interfaces.php:2103
+#: src/usr/local/www/interfaces.php:1936 src/usr/local/www/interfaces.php:2119
msgid "Override the configuration from this file."
msgstr ""
-#: src/usr/local/www/interfaces.php:1929
+#: src/usr/local/www/interfaces.php:1945
msgid ""
"The value in this field is sent as the DHCP client identifier and hostname "
"when requesting a DHCP lease. Some ISPs may require this (for client "
"identification)."
msgstr ""
-#: src/usr/local/www/interfaces.php:1933
+#: src/usr/local/www/interfaces.php:1949
msgid "Alias IPv4 address"
msgstr ""
-#: src/usr/local/www/interfaces.php:1935
+#: src/usr/local/www/interfaces.php:1951
msgid ""
"The value in this field is used as a fixed alias IPv4 address by the DHCP "
"client."
msgstr ""
-#: src/usr/local/www/interfaces.php:1939
+#: src/usr/local/www/interfaces.php:1955
msgid "Reject leases from"
msgstr ""
-#: src/usr/local/www/interfaces.php:1942
+#: src/usr/local/www/interfaces.php:1958
msgid ""
"If there is a certain upstream DHCP server that should be ignored, place the "
"IP address or subnet of the DHCP server to be ignored here. This is useful "
@@ -14246,102 +14463,102 @@ msgid ""
"upstream sync."
msgstr ""
-#: src/usr/local/www/interfaces.php:1945
+#: src/usr/local/www/interfaces.php:1961
msgid "Protocol timing"
msgstr ""
-#: src/usr/local/www/interfaces.php:1953
+#: src/usr/local/www/interfaces.php:1969
#: src/usr/local/www/load_balancer_setting.php:151
msgid "Timeout"
msgstr ""
-#: src/usr/local/www/interfaces.php:1960
-#: src/usr/local/www/load_balancer_pool_edit.php:378
+#: src/usr/local/www/interfaces.php:1976
+#: src/usr/local/www/load_balancer_pool_edit.php:370
msgid "Retry"
msgstr ""
-#: src/usr/local/www/interfaces.php:1968
+#: src/usr/local/www/interfaces.php:1984
msgid "Select timeout"
msgstr ""
-#: src/usr/local/www/interfaces.php:1982
+#: src/usr/local/www/interfaces.php:1998
msgid "Backoff cutoff"
msgstr ""
-#: src/usr/local/www/interfaces.php:1989
+#: src/usr/local/www/interfaces.php:2005
msgid "Initial interval"
msgstr ""
-#: src/usr/local/www/interfaces.php:1993
+#: src/usr/local/www/interfaces.php:2009
msgid "Presets"
msgstr ""
-#: src/usr/local/www/interfaces.php:2028
+#: src/usr/local/www/interfaces.php:2044
msgid ""
"The values in these fields are DHCP protocol timings used when requesting a "
"lease.<br /><a target=\"_blank\" href=\"https://www.freebsd.org/cgi/man.cgi?"
"query=dhclient.conf&sektion=5#PROTOCOL_TIMING\">See here more information</a>"
msgstr ""
-#: src/usr/local/www/interfaces.php:2035 src/usr/local/www/interfaces.php:2144
+#: src/usr/local/www/interfaces.php:2051 src/usr/local/www/interfaces.php:2160
msgid "Configuration File Override"
msgstr ""
-#: src/usr/local/www/interfaces.php:2045
+#: src/usr/local/www/interfaces.php:2061
msgid "Lease Requirements and Requests"
msgstr ""
-#: src/usr/local/www/interfaces.php:2050 src/usr/local/www/interfaces.php:2169
+#: src/usr/local/www/interfaces.php:2066 src/usr/local/www/interfaces.php:2185
msgid "Send options"
msgstr ""
-#: src/usr/local/www/interfaces.php:2060
+#: src/usr/local/www/interfaces.php:2076
msgid "Request options"
msgstr ""
-#: src/usr/local/www/interfaces.php:2068
+#: src/usr/local/www/interfaces.php:2084
msgid "Require options"
msgstr ""
-#: src/usr/local/www/interfaces.php:2075
+#: src/usr/local/www/interfaces.php:2091
msgid "Option modifiers"
msgstr ""
-#: src/usr/local/www/interfaces.php:2086
+#: src/usr/local/www/interfaces.php:2102
msgid "DHCP6 Client Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2096
+#: src/usr/local/www/interfaces.php:2112
msgid "Use advanced DHCPv6 configuration options."
msgstr ""
-#: src/usr/local/www/interfaces.php:2109
+#: src/usr/local/www/interfaces.php:2125
msgid "Use IPv4 connectivity as parent interface"
msgstr ""
-#: src/usr/local/www/interfaces.php:2116
+#: src/usr/local/www/interfaces.php:2132
msgid "Request only an IPv6 prefix"
msgstr ""
-#: src/usr/local/www/interfaces.php:2123
+#: src/usr/local/www/interfaces.php:2139
msgid "DHCPv6 Prefix Delegation size"
msgstr ""
-#: src/usr/local/www/interfaces.php:2126
+#: src/usr/local/www/interfaces.php:2142
msgid ""
"The value in this field is the delegated prefix length provided by the "
"DHCPv6 server. Normally specified by the ISP."
msgstr ""
-#: src/usr/local/www/interfaces.php:2130
+#: src/usr/local/www/interfaces.php:2146
msgid "Send IPv6 prefix hint"
msgstr ""
-#: src/usr/local/www/interfaces.php:2137
+#: src/usr/local/www/interfaces.php:2153
msgid "Debug"
msgstr ""
-#: src/usr/local/www/interfaces.php:2147
+#: src/usr/local/www/interfaces.php:2163
msgid ""
"The value in this field is the full absolute path to a DHCP client "
"configuration file.\t [/[dirname/[.../]]filename[.ext]]<br />Value "
@@ -14351,382 +14568,391 @@ msgid ""
"ISPs may require certain options be or not be sent."
msgstr ""
-#: src/usr/local/www/interfaces.php:2156
+#: src/usr/local/www/interfaces.php:2172
msgid "Advanced DHCP6 Client Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2161
+#: src/usr/local/www/interfaces.php:2177
msgid "Information only"
msgstr ""
-#: src/usr/local/www/interfaces.php:2165
+#: src/usr/local/www/interfaces.php:2181
msgid "Only exchange informational configuration parameters with servers."
msgstr ""
-#: src/usr/local/www/interfaces.php:2179
+#: src/usr/local/www/interfaces.php:2195
msgid "Request Options"
msgstr ""
-#: src/usr/local/www/interfaces.php:2187
+#: src/usr/local/www/interfaces.php:2203
msgid "Scripts"
msgstr ""
-#: src/usr/local/www/interfaces.php:2193
+#: src/usr/local/www/interfaces.php:2209
msgid "Identity Association Statement"
msgstr ""
-#: src/usr/local/www/interfaces.php:2272
+#: src/usr/local/www/interfaces.php:2288
msgid "Prefix interface statement"
msgstr ""
-#: src/usr/local/www/interfaces.php:2290
+#: src/usr/local/www/interfaces.php:2306
msgid "Authentication statement"
msgstr ""
-#: src/usr/local/www/interfaces.php:2322
+#: src/usr/local/www/interfaces.php:2338
msgid "Keyinfo statement"
msgstr ""
-#: src/usr/local/www/interfaces.php:2363
+#: src/usr/local/www/interfaces.php:2379
msgid ""
"<a target=\"_blank\" href=\"https://www.freebsd.org/cgi/man.cgi?query=dhcp6c."
"conf&sektion=5&apropos=0&manpath=FreeBSD+10.1-RELEASE+and"
"+Ports#Interface_statement\">See here more information</a>"
msgstr ""
-#: src/usr/local/www/interfaces.php:2369
+#: src/usr/local/www/interfaces.php:2385
msgid "6RD Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2374
+#: src/usr/local/www/interfaces.php:2390
msgid "6RD Prefix"
msgstr ""
-#: src/usr/local/www/interfaces.php:2381
+#: src/usr/local/www/interfaces.php:2397
msgid "6RD Border relay"
msgstr ""
-#: src/usr/local/www/interfaces.php:2388
+#: src/usr/local/www/interfaces.php:2404
msgid "6RD IPv4 Prefix length"
msgstr ""
-#: src/usr/local/www/interfaces.php:2391
+#: src/usr/local/www/interfaces.php:2407
msgid ""
-"6RD IPv4 prefix length. Normally specified by the ISP. A value of 0 means we "
+"6RD IPv4 prefix length. Normally specified by the ISP. A value of 0 means "
"embed the entire IPv4 address in the 6RD prefix."
msgstr ""
-#: src/usr/local/www/interfaces.php:2396
+#: src/usr/local/www/interfaces.php:2412
msgid "Track IPv6 Interface"
msgstr ""
-#: src/usr/local/www/interfaces.php:2438
+#: src/usr/local/www/interfaces.php:2454
msgid "IPv6 Interface"
msgstr ""
-#: src/usr/local/www/interfaces.php:2441
-msgid "selects the dynamic IPv6 WAN interface to track for configuration"
+#: src/usr/local/www/interfaces.php:2457
+msgid "Selects the dynamic IPv6 WAN interface to track for configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:2449
+#: src/usr/local/www/interfaces.php:2465
msgid "IPv6 Prefix ID"
msgstr ""
-#: src/usr/local/www/interfaces.php:2452
+#: src/usr/local/www/interfaces.php:2468
msgid ""
"<span id=\"track6-prefix-id-range\"></span>The value in this field is the "
"(Delegated) IPv6 prefix ID. This determines the configurable network ID "
"based on the dynamic IPv6 connection. The default value is 0."
msgstr ""
-#: src/usr/local/www/interfaces.php:2465
-#: src/usr/local/www/interfaces_ppps_edit.php:574
+#: src/usr/local/www/interfaces.php:2481
+#: src/usr/local/www/interfaces_ppps_edit.php:584
msgid "PPP Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2470 src/usr/local/www/interfaces.php:2904
-#: src/usr/local/www/interfaces_ppps_edit.php:602
+#: src/usr/local/www/interfaces.php:2486 src/usr/local/www/interfaces.php:2911
+#: src/usr/local/www/interfaces_ppps_edit.php:612
msgid "Country"
msgstr ""
-#: src/usr/local/www/interfaces.php:2477
-#: src/usr/local/www/interfaces_ppps_edit.php:609
+#: src/usr/local/www/interfaces.php:2493
+#: src/usr/local/www/interfaces_ppps_edit.php:619
msgid "Provider"
msgstr ""
-#: src/usr/local/www/interfaces.php:2484
-#: src/usr/local/www/interfaces_ppps_edit.php:616
+#: src/usr/local/www/interfaces.php:2500
+#: src/usr/local/www/interfaces_ppps_edit.php:626
msgid "Plan"
msgstr ""
-#: src/usr/local/www/interfaces.php:2487
-#: src/usr/local/www/interfaces_ppps_edit.php:619
-msgid "Select to fill in data for your service provider."
+#: src/usr/local/www/interfaces.php:2503
+#: src/usr/local/www/interfaces_ppps_edit.php:629
+msgid "Select to fill in service provider data."
msgstr ""
-#: src/usr/local/www/interfaces.php:2505
-#: src/usr/local/www/interfaces_ppps_edit.php:665
+#: src/usr/local/www/interfaces.php:2521
+#: src/usr/local/www/interfaces_ppps_edit.php:675
msgid "Phone number"
msgstr ""
-#: src/usr/local/www/interfaces.php:2508
-#: src/usr/local/www/interfaces_ppps_edit.php:668
-msgid "Typically *99# for GSM networks and #777 for CDMA networks"
+#: src/usr/local/www/interfaces.php:2524
+msgid "Typically *99# for GSM networks and #777 for CDMA networks."
msgstr ""
-#: src/usr/local/www/interfaces.php:2512
+#: src/usr/local/www/interfaces.php:2528
msgid "Access Point Name"
msgstr ""
-#: src/usr/local/www/interfaces.php:2538
+#: src/usr/local/www/interfaces.php:2554
msgid "Modem port"
msgstr ""
-#: src/usr/local/www/interfaces.php:2545
+#: src/usr/local/www/interfaces.php:2561
msgid "Advanced PPP"
msgstr ""
-#: src/usr/local/www/interfaces.php:2547
-msgid "Create a new PPP configuration"
+#: src/usr/local/www/interfaces.php:2564
+msgid "Create a new PPP configuration."
msgstr ""
-#: src/usr/local/www/interfaces.php:2552
+#: src/usr/local/www/interfaces.php:2569
msgid "PPPoE Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2571
-#: src/usr/local/www/interfaces_ppps_edit.php:721
+#: src/usr/local/www/interfaces.php:2588
+#: src/usr/local/www/interfaces_ppps_edit.php:731
msgid "Service name"
msgstr ""
-#: src/usr/local/www/interfaces.php:2574
-msgid "This field can usually be left empty"
+#: src/usr/local/www/interfaces.php:2591
+msgid "This field can usually be left empty."
msgstr ""
-#: src/usr/local/www/interfaces.php:2586
+#: src/usr/local/www/interfaces.php:2603
msgid "Idle timeout"
msgstr ""
-#: src/usr/local/www/interfaces.php:2590 src/usr/local/www/interfaces.php:2727
+#: src/usr/local/www/interfaces.php:2607 src/usr/local/www/interfaces.php:2739
msgid ""
"If no qualifying outgoing packets are transmitted for the specified number "
"of seconds, the connection is brought down. An idle timeout of zero disables "
"this feature."
msgstr ""
-#: src/usr/local/www/interfaces.php:2597
-#: src/usr/local/www/interfaces_ppps_edit.php:750
+#: src/usr/local/www/interfaces.php:2614
+#: src/usr/local/www/interfaces_ppps_edit.php:760
msgid "Pre-set"
msgstr ""
-#: src/usr/local/www/interfaces.php:2595
+#: src/usr/local/www/interfaces.php:2612
msgid "Periodic reset"
msgstr ""
-#: src/usr/local/www/interfaces.php:2598
-#: src/usr/local/www/interfaces_ppps_edit.php:752
-msgid "Select a reset timing type"
+#: src/usr/local/www/interfaces.php:2615
+msgid "Select a reset timing type."
msgstr ""
-#: src/usr/local/www/interfaces.php:2600
+#: src/usr/local/www/interfaces.php:2617
msgid "Custom reset"
msgstr ""
-#: src/usr/local/www/interfaces.php:2609
+#: src/usr/local/www/interfaces.php:2626
msgid "Hour (0-23)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2617
+#: src/usr/local/www/interfaces.php:2634
msgid "Minutes (0-59)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2625
+#: src/usr/local/www/interfaces.php:2642
msgid "Specific date (mm/dd/yyyy)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2627
+#: src/usr/local/www/interfaces.php:2644
msgid ""
-"If you leave the date field empty, the reset will be executed each day at "
-"the time you specified using the minutes and hour field"
+"Leave the date field empty, for the reset to be executed each day at the "
+"time specified by the minutes and hour fields"
msgstr ""
-#: src/usr/local/www/interfaces.php:2631
+#: src/usr/local/www/interfaces.php:2648
msgid "cron based reset"
msgstr ""
-#: src/usr/local/www/interfaces.php:2670 src/usr/local/www/interfaces.php:2675
-#: src/usr/local/www/interfaces.php:2738 src/usr/local/www/interfaces.php:2743
+#: src/usr/local/www/interfaces.php:2687 src/usr/local/www/interfaces.php:2750
msgid "Advanced and MLPPP"
msgstr ""
-#: src/usr/local/www/interfaces.php:2683
+#: src/usr/local/www/interfaces.php:2690
+msgid ""
+"Click for additional PPPoE configuration options. Save first if changes have "
+"been made."
+msgstr ""
+
+#: src/usr/local/www/interfaces.php:2695
msgid "PPTP/L2TP Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2702
-#: src/usr/local/www/interfaces_ppps_edit.php:238
-#: src/usr/local/www/interfaces_ppps_edit.php:241
+#: src/usr/local/www/interfaces.php:2714
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
msgid "Local IP address"
msgstr ""
-#: src/usr/local/www/interfaces.php:2708
-#: src/usr/local/www/interfaces_ppps_edit.php:238
-#: src/usr/local/www/interfaces_ppps_edit.php:241
+#: src/usr/local/www/interfaces.php:2720
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
msgid "Remote IP address"
msgstr ""
-#: src/usr/local/www/interfaces.php:2718
+#: src/usr/local/www/interfaces.php:2730
msgid ""
"This option causes the interface to operate in dial-on-demand mode, allowing "
-"you to have a virtual full time connection. The interface is configured, but "
+"it to be a virtual full time connection. The interface is configured, but "
"the actual connection of the link is delayed until qualifying outgoing "
"traffic is detected."
msgstr ""
-#: src/usr/local/www/interfaces.php:2723
+#: src/usr/local/www/interfaces.php:2735
msgid "Idle timeout (seconds)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2732
+#: src/usr/local/www/interfaces.php:2743
msgid "There are additional Local and Remote IP addresses defined for MLPPP."
msgstr ""
#: src/usr/local/www/interfaces.php:2753
msgid ""
+"Click for additional PPTP and L2TP configuration options. Save first if "
+"changes have been made."
+msgstr ""
+
+#: src/usr/local/www/interfaces.php:2760
+msgid ""
"Common Wireless Configuration - Settings apply to all wireless networks on "
msgstr ""
-#: src/usr/local/www/interfaces.php:2757
+#: src/usr/local/www/interfaces.php:2764
msgid "Persist common settings"
msgstr ""
-#: src/usr/local/www/interfaces.php:2777
+#: src/usr/local/www/interfaces.php:2784
msgid "Standard"
msgstr ""
-#: src/usr/local/www/interfaces.php:2787 src/usr/local/www/interfaces.php:2837
+#: src/usr/local/www/interfaces.php:2794 src/usr/local/www/interfaces.php:2844
msgid "Off"
msgstr ""
-#: src/usr/local/www/interfaces.php:2787
+#: src/usr/local/www/interfaces.php:2794
msgid "CTS to self"
msgstr ""
-#: src/usr/local/www/interfaces.php:2787
+#: src/usr/local/www/interfaces.php:2794
msgid "RTS and CTS"
msgstr ""
-#: src/usr/local/www/interfaces.php:2785
+#: src/usr/local/www/interfaces.php:2792
msgid "802.11g OFDM Protection Mode"
msgstr ""
-#: src/usr/local/www/interfaces.php:2788
+#: src/usr/local/www/interfaces.php:2795
msgid ""
"For IEEE 802.11g, use the specified technique for protecting OFDM frames in "
"a mixed 11b/11g network."
msgstr ""
-#: src/usr/local/www/interfaces.php:2798 src/usr/local/www/interfaces.php:2846
-#: src/usr/local/www/interfaces.php:2855
-#: src/usr/local/www/vpn_ipsec_phase1.php:701
-#: src/usr/local/www/vpn_ipsec_phase1.php:886
+#: src/usr/local/www/interfaces.php:2805 src/usr/local/www/interfaces.php:2853
+#: src/usr/local/www/interfaces.php:2862
+#: src/usr/local/www/vpn_ipsec_phase1.php:699
+#: src/usr/local/www/vpn_ipsec_phase1.php:884
#: src/usr/local/www/vpn_ipsec_phase2.php:664
msgid "Auto"
msgstr ""
-#: src/usr/local/www/interfaces.php:2822
-#: src/usr/local/www/status_interfaces.php:171
+#: src/usr/local/www/interfaces.php:2829
+#: src/usr/local/www/status_interfaces.php:174
msgid "Channel"
msgstr ""
-#: src/usr/local/www/interfaces.php:2825
+#: src/usr/local/www/interfaces.php:2832
msgid ""
"Legend: wireless standards - channel # (frequency @ max TX power / TX power "
-"allowed in reg. domain)<br />Not all channels may be supported by your "
-"card. Auto may override the wireless standard selected above."
+"allowed in reg. domain)<br />Not all channels may be supported by some "
+"cards. Auto may override the wireless standard selected above."
msgstr ""
-#: src/usr/local/www/interfaces.php:2830
+#: src/usr/local/www/interfaces.php:2837
msgid "Antenna Settings"
msgstr ""
-#: src/usr/local/www/interfaces.php:2837
+#: src/usr/local/www/interfaces.php:2844
msgid "On"
msgstr ""
-#: src/usr/local/www/interfaces.php:2838
+#: src/usr/local/www/interfaces.php:2845
msgid "Diversity"
msgstr ""
-#: src/usr/local/www/interfaces.php:2846 src/usr/local/www/interfaces.php:2855
+#: src/usr/local/www/interfaces.php:2853 src/usr/local/www/interfaces.php:2862
msgid "#1"
msgstr ""
-#: src/usr/local/www/interfaces.php:2846 src/usr/local/www/interfaces.php:2855
+#: src/usr/local/www/interfaces.php:2853 src/usr/local/www/interfaces.php:2862
msgid "#2"
msgstr ""
-#: src/usr/local/www/interfaces.php:2847
+#: src/usr/local/www/interfaces.php:2854
msgid "Transmit antenna"
msgstr ""
-#: src/usr/local/www/interfaces.php:2856
+#: src/usr/local/www/interfaces.php:2863
msgid "Receive antenna"
msgstr ""
-#: src/usr/local/www/interfaces.php:2859
+#: src/usr/local/www/interfaces.php:2866
msgid ""
"Note: The antenna numbers do not always match up with the labels on the card."
msgstr ""
-#: src/usr/local/www/interfaces.php:2868
+#: src/usr/local/www/interfaces.php:2875
msgid "Distance setting (meters)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2871
+#: src/usr/local/www/interfaces.php:2878
msgid ""
"This field can be used to tune ACK/CTS timers to fit the distance between AP "
"and Client"
msgstr ""
-#: src/usr/local/www/interfaces.php:2877
+#: src/usr/local/www/interfaces.php:2884
msgid "Regulatory Settings"
msgstr ""
-#: src/usr/local/www/interfaces.php:2889
+#: src/usr/local/www/interfaces.php:2896
msgid "Regulatory domain"
msgstr ""
-#: src/usr/local/www/interfaces.php:2892
+#: src/usr/local/www/interfaces.php:2899
msgid ""
"Some cards have a default that is not recognized and require changing the "
"regulatory domain to one in this list for the changes to other regulatory "
"settings to work"
msgstr ""
-#: src/usr/local/www/interfaces.php:2907
+#: src/usr/local/www/interfaces.php:2914
msgid ""
"Any country setting other than \"Default\" will override the regulatory "
"domain setting"
msgstr ""
-#: src/usr/local/www/interfaces.php:2913
+#: src/usr/local/www/interfaces.php:2920
msgid "Indoor"
msgstr ""
-#: src/usr/local/www/interfaces.php:2913
+#: src/usr/local/www/interfaces.php:2920
msgid "Outdoor"
msgstr ""
-#: src/usr/local/www/interfaces.php:2913
+#: src/usr/local/www/interfaces.php:2920
msgid "Anywhere"
msgstr ""
-#: src/usr/local/www/interfaces.php:2911
+#: src/usr/local/www/interfaces.php:2918
msgid "Location"
msgstr ""
-#: src/usr/local/www/interfaces.php:2914
+#: src/usr/local/www/interfaces.php:2921
msgid ""
"These settings may affect which channels are available and the maximum "
"transmit power allowed on those channels. Using the correct settings to "
@@ -14737,213 +14963,218 @@ msgid ""
"additional channels that are not already supported."
msgstr ""
-#: src/usr/local/www/interfaces.php:2922
+#: src/usr/local/www/interfaces.php:2929
msgid "Network-Specific Wireless Configuration"
msgstr ""
-#: src/usr/local/www/interfaces.php:2943
+#: src/usr/local/www/interfaces.php:2950
msgid "802.11g"
msgstr ""
-#: src/usr/local/www/interfaces.php:2943
+#: src/usr/local/www/interfaces.php:2950
msgid "802.11n"
msgstr ""
-#: src/usr/local/www/interfaces.php:2941
+#: src/usr/local/www/interfaces.php:2948
msgid "Minimum wireless standard"
msgstr ""
-#: src/usr/local/www/interfaces.php:2944
+#: src/usr/local/www/interfaces.php:2951
msgid ""
"When operating as an access point, allow only stations capable of the "
"selected wireless standard to associate (stations not capable are not "
"permitted to associate)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2948
+#: src/usr/local/www/interfaces.php:2955
msgid "802.11g only"
msgstr ""
-#: src/usr/local/www/interfaces.php:2952
+#: src/usr/local/www/interfaces.php:2959
msgid ""
"When operating as an access point in 802.11g mode, allow only 11g-capable "
"stations to associate (11b-only stations are not permitted to associate)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2957
+#: src/usr/local/www/interfaces.php:2964
msgid "Allow intra-BSS communication"
msgstr ""
-#: src/usr/local/www/interfaces.php:2961
+#: src/usr/local/www/interfaces.php:2968
msgid ""
"Provides extra security by isolating clients so they cannot directly "
"communicate with one another"
msgstr ""
-#: src/usr/local/www/interfaces.php:2965
+#: src/usr/local/www/interfaces.php:2972
msgid "Enable WME"
msgstr ""
-#: src/usr/local/www/interfaces.php:2973
+#: src/usr/local/www/interfaces.php:2980
msgid "Hide SSID"
msgstr ""
-#: src/usr/local/www/interfaces.php:2982 src/usr/local/www/interfaces.php:3003
+#: src/usr/local/www/interfaces.php:2989 src/usr/local/www/interfaces.php:3010
msgid "WPA"
msgstr ""
-#: src/usr/local/www/interfaces.php:2994
+#: src/usr/local/www/interfaces.php:3001
msgid "WPA Pre-Shared Key"
msgstr ""
-#: src/usr/local/www/interfaces.php:2997
+#: src/usr/local/www/interfaces.php:3004
msgid "WPA Passphrase must be between 8 and 63 characters long"
msgstr ""
-#: src/usr/local/www/interfaces.php:3003
+#: src/usr/local/www/interfaces.php:3010
msgid "WPA2"
msgstr ""
-#: src/usr/local/www/interfaces.php:3003 src/usr/local/www/interfaces.php:3010
-#: src/usr/local/www/interfaces.php:3017 src/usr/local/www/pkg_mgr.php:192
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:186
-#: src/usr/local/www/services_captiveportal_ip_edit.php:229
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:135
+#: src/usr/local/www/interfaces.php:3010 src/usr/local/www/interfaces.php:3017
+#: src/usr/local/www/interfaces.php:3024 src/usr/local/www/pkg_mgr.php:192
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:188
+#: src/usr/local/www/services_captiveportal_ip_edit.php:231
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:142
#: src/usr/local/www/services_rfc2136_edit.php:313
msgid "Both"
msgstr ""
-#: src/usr/local/www/interfaces.php:3001
+#: src/usr/local/www/interfaces.php:3008
msgid "WPA mode"
msgstr ""
-#: src/usr/local/www/interfaces.php:3010
+#: src/usr/local/www/interfaces.php:3017
#: src/usr/local/www/vpn_ipsec_keys.php:135
#: src/usr/local/www/vpn_ipsec_keys_edit.php:101
#: src/usr/local/www/vpn_ipsec_keys_edit.php:183
#: src/usr/local/www/vpn_ipsec_phase1.php:246
-#: src/usr/local/www/vpn_ipsec_phase1.php:795
+#: src/usr/local/www/vpn_ipsec_phase1.php:793
msgid "Pre-Shared Key"
msgstr ""
-#: src/usr/local/www/interfaces.php:3010
+#: src/usr/local/www/interfaces.php:3017
msgid "Extensible Authentication Protocol"
msgstr ""
-#: src/usr/local/www/interfaces.php:3008
+#: src/usr/local/www/interfaces.php:3015
msgid "WPA Key Management Mode"
msgstr ""
-#: src/usr/local/www/interfaces.php:3017
+#: src/usr/local/www/interfaces.php:3024
msgid "AES (recommended)"
msgstr ""
-#: src/usr/local/www/interfaces.php:3017
+#: src/usr/local/www/interfaces.php:3024
msgid "TKIP"
msgstr ""
-#: src/usr/local/www/interfaces.php:3015
+#: src/usr/local/www/interfaces.php:3022
msgid "WPA Pairwise"
msgstr ""
-#: src/usr/local/www/interfaces.php:3022
+#: src/usr/local/www/interfaces.php:3029
msgid "Group Key Rotation"
msgstr ""
-#: src/usr/local/www/interfaces.php:3026
+#: src/usr/local/www/interfaces.php:3033
msgid ""
"Time between group rekey events, specified in seconds. Allowed values are "
"1-9999. Must be shorter than Master Key Regeneration time"
msgstr ""
-#: src/usr/local/www/interfaces.php:3030
+#: src/usr/local/www/interfaces.php:3037
msgid "Group Master Key Regeneration"
msgstr ""
-#: src/usr/local/www/interfaces.php:3034
+#: src/usr/local/www/interfaces.php:3041
msgid ""
"Time between GMK rekey events, specified in seconds. Allowed values are "
"1-9999. Must be longer than Group Key Rotation time"
msgstr ""
-#: src/usr/local/www/interfaces.php:3038
+#: src/usr/local/www/interfaces.php:3045
msgid "Strict Key Regeneration"
msgstr ""
-#: src/usr/local/www/interfaces.php:3046
+#: src/usr/local/www/interfaces.php:3053
msgid "802.1x RADIUS Options"
msgstr ""
-#: src/usr/local/www/interfaces.php:3050
+#: src/usr/local/www/interfaces.php:3057
msgid "IEEE802.1X"
msgstr ""
-#: src/usr/local/www/interfaces.php:3054
+#: src/usr/local/www/interfaces.php:3061
msgid "This option requires that the \"Enable WPA box\" is checked"
msgstr ""
-#: src/usr/local/www/interfaces.php:3056
+#: src/usr/local/www/interfaces.php:3063
msgid "Primary 802.1X server"
msgstr ""
-#: src/usr/local/www/interfaces.php:3062 src/usr/local/www/interfaces.php:3086
+#: src/usr/local/www/interfaces.php:3069 src/usr/local/www/interfaces.php:3093
msgid "IP address of the RADIUS server"
msgstr ""
-#: src/usr/local/www/interfaces.php:3069 src/usr/local/www/interfaces.php:3093
+#: src/usr/local/www/interfaces.php:3076 src/usr/local/www/interfaces.php:3100
msgid "Server auth port. Default is 1812"
msgstr ""
-#: src/usr/local/www/interfaces.php:3073 src/usr/local/www/interfaces.php:3097
-#: src/usr/local/www/system_authservers.php:239
-#: src/usr/local/www/system_authservers.php:707
+#: src/usr/local/www/interfaces.php:3080 src/usr/local/www/interfaces.php:3104
+#: src/usr/local/www/system_authservers.php:305
+#: src/usr/local/www/system_authservers.php:775
msgid "Shared Secret"
msgstr ""
-#: src/usr/local/www/interfaces.php:3076 src/usr/local/www/interfaces.php:3100
+#: src/usr/local/www/interfaces.php:3083 src/usr/local/www/interfaces.php:3107
msgid "RADIUS Shared secret for this firewall"
msgstr ""
-#: src/usr/local/www/interfaces.php:3080
+#: src/usr/local/www/interfaces.php:3087
msgid "Secondary 802.1X server"
msgstr ""
-#: src/usr/local/www/interfaces.php:3106
+#: src/usr/local/www/interfaces.php:3113
msgid "Authentication Roaming Preauth"
msgstr ""
-#: src/usr/local/www/interfaces.php:3115
-msgid "Private Networks"
+#: src/usr/local/www/interfaces.php:3122
+msgid "Reserved Networks"
msgstr ""
-#: src/usr/local/www/interfaces.php:3123
+#: src/usr/local/www/interfaces.php:3126
+msgid "Block private networks and loopback addresses"
+msgstr ""
+
+#: src/usr/local/www/interfaces.php:3130
msgid ""
"Blocks traffic from IP addresses that are reserved for private networks per "
-"RFC 1918 (10/8, 172.16/12, 192.168/16) as well as loopback addresses "
-"(127/8). You should generally leave this option turned on, unless your WAN "
-"network lies in such a private address space, too."
+"RFC 1918 (10/8, 172.16/12, 192.168/16) and unique local addresses per RFC "
+"4193 (fc00::/7) as well as loopback addresses (127/8). This option should "
+"generally be turned on, unless this network interface resides in such a "
+"private address space, too."
msgstr ""
-#: src/usr/local/www/interfaces.php:3133
+#: src/usr/local/www/interfaces.php:3140
msgid ""
"Blocks traffic from reserved IP addresses (but not RFC 1918) or not yet "
"assigned by IANA. Bogons are prefixes that should never appear in the "
"Internet routing table, and so should not appear as the source address in "
-"any packets you receive.<br />Note: The update frequency can be changed "
-"under System->Advanced Firewall/NAT settings"
+"any packets received.<br />Note: The update frequency can be changed under "
+"System->Advanced Firewall/NAT settings."
msgstr ""
-#: src/usr/local/www/interfaces.php:3164
+#: src/usr/local/www/interfaces.php:3171
msgid "New Gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:3182
-#: src/usr/local/www/status_interfaces.php:151
+#: src/usr/local/www/interfaces.php:3189
+#: src/usr/local/www/status_interfaces.php:154
msgid "Gateway IPv4"
msgstr ""
#: src/usr/local/www/interfaces_assign.php:67
-#: src/usr/local/www/interfaces_assign.php:522
+#: src/usr/local/www/interfaces_assign.php:527
#: src/usr/local/www/interfaces_bridge.php:117
#: src/usr/local/www/interfaces_gif.php:112
#: src/usr/local/www/interfaces_gre.php:112
@@ -14982,8 +15213,8 @@ msgstr ""
#: src/usr/local/www/interfaces_assign.php:343
#, php-format
msgid ""
-"You cannot set port %1$s to interface %2$s because this interface is a "
-"member of %3$s."
+"Cannot set port %1$s to interface %2$s because this interface is a member of "
+"%3$s."
msgstr ""
#: src/usr/local/www/interfaces_assign.php:354
@@ -15014,29 +15245,29 @@ msgid ""
"The interface is part of a gif tunnel. Please delete the tunnel to continue"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:469
+#: src/usr/local/www/interfaces_assign.php:474
msgid "Interface has been deleted."
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:495
+#: src/usr/local/www/interfaces_assign.php:500
msgid "The system is now rebooting. Please wait."
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:498
+#: src/usr/local/www/interfaces_assign.php:503
msgid "Reboot is needed. Please apply the settings in order to reboot."
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:502
+#: src/usr/local/www/interfaces_assign.php:507
msgid ""
"Interface mismatch detected. Please resolve the mismatch and click 'Apply "
"Changes'. The firewall will reboot afterwards."
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:509
+#: src/usr/local/www/interfaces_assign.php:514
msgid "The interface configuration has been changed."
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:523
+#: src/usr/local/www/interfaces_assign.php:528
#: src/usr/local/www/interfaces_bridge.php:118
#: src/usr/local/www/interfaces_gif.php:113
#: src/usr/local/www/interfaces_gre.php:113
@@ -15053,7 +15284,7 @@ msgstr ""
msgid "Interface Groups"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:525
+#: src/usr/local/www/interfaces_assign.php:530
#: src/usr/local/www/interfaces_bridge.php:120
#: src/usr/local/www/interfaces_gif.php:115
#: src/usr/local/www/interfaces_gre.php:115
@@ -15069,7 +15300,7 @@ msgstr ""
msgid "VLANs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:526
+#: src/usr/local/www/interfaces_assign.php:531
#: src/usr/local/www/interfaces_bridge.php:121
#: src/usr/local/www/interfaces_gif.php:116
#: src/usr/local/www/interfaces_gre.php:116
@@ -15085,7 +15316,7 @@ msgstr ""
msgid "QinQs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:527
+#: src/usr/local/www/interfaces_assign.php:532
#: src/usr/local/www/interfaces_bridge.php:122
#: src/usr/local/www/interfaces_gif.php:117
#: src/usr/local/www/interfaces_gre.php:117
@@ -15094,19 +15325,19 @@ msgstr ""
#: src/usr/local/www/interfaces_lagg.php:124
#: src/usr/local/www/interfaces_ppps.php:106
#: src/usr/local/www/interfaces_ppps.php:116
-#: src/usr/local/www/interfaces_ppps_edit.php:462
+#: src/usr/local/www/interfaces_ppps_edit.php:472
#: src/usr/local/www/interfaces_qinq.php:128
#: src/usr/local/www/interfaces_vlan.php:121
#: src/usr/local/www/interfaces_wireless.php:119
msgid "PPPs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:528
+#: src/usr/local/www/interfaces_assign.php:533
#: src/usr/local/www/interfaces_bridge.php:123
#: src/usr/local/www/interfaces_gif.php:118
#: src/usr/local/www/interfaces_gre.php:104
#: src/usr/local/www/interfaces_gre.php:118
-#: src/usr/local/www/interfaces_gre_edit.php:189
+#: src/usr/local/www/interfaces_gre_edit.php:195
#: src/usr/local/www/interfaces_groups.php:100
#: src/usr/local/www/interfaces_lagg.php:125
#: src/usr/local/www/interfaces_ppps.php:117
@@ -15116,11 +15347,11 @@ msgstr ""
msgid "GREs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:529
+#: src/usr/local/www/interfaces_assign.php:534
#: src/usr/local/www/interfaces_bridge.php:124
#: src/usr/local/www/interfaces_gif.php:103
#: src/usr/local/www/interfaces_gif.php:119
-#: src/usr/local/www/interfaces_gif_edit.php:195
+#: src/usr/local/www/interfaces_gif_edit.php:199
#: src/usr/local/www/interfaces_gre.php:119
#: src/usr/local/www/interfaces_groups.php:101
#: src/usr/local/www/interfaces_lagg.php:126
@@ -15131,10 +15362,10 @@ msgstr ""
msgid "GIFs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:530
+#: src/usr/local/www/interfaces_assign.php:535
#: src/usr/local/www/interfaces_bridge.php:109
#: src/usr/local/www/interfaces_bridge.php:125
-#: src/usr/local/www/interfaces_bridge_edit.php:403
+#: src/usr/local/www/interfaces_bridge_edit.php:418
#: src/usr/local/www/interfaces_gif.php:120
#: src/usr/local/www/interfaces_gre.php:120
#: src/usr/local/www/interfaces_groups.php:102
@@ -15147,14 +15378,14 @@ msgstr ""
msgid "Bridges"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:531
+#: src/usr/local/www/interfaces_assign.php:536
#: src/usr/local/www/interfaces_bridge.php:126
#: src/usr/local/www/interfaces_gif.php:121
#: src/usr/local/www/interfaces_gre.php:121
#: src/usr/local/www/interfaces_groups.php:103
#: src/usr/local/www/interfaces_lagg.php:110
#: src/usr/local/www/interfaces_lagg.php:128
-#: src/usr/local/www/interfaces_lagg_edit.php:241
+#: src/usr/local/www/interfaces_lagg_edit.php:257
#: src/usr/local/www/interfaces_ppps.php:120
#: src/usr/local/www/interfaces_qinq.php:132
#: src/usr/local/www/interfaces_vlan.php:125
@@ -15162,23 +15393,23 @@ msgstr ""
msgid "LAGGs"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:540
+#: src/usr/local/www/interfaces_assign.php:545
msgid "Network port"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:566
+#: src/usr/local/www/interfaces_assign.php:571
msgid "Delete interface"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:578
+#: src/usr/local/www/interfaces_assign.php:583
msgid "Available network ports:"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:590
+#: src/usr/local/www/interfaces_assign.php:595
msgid "Add selected interface"
msgstr ""
-#: src/usr/local/www/interfaces_assign.php:606
+#: src/usr/local/www/interfaces_assign.php:611
msgid ""
"Interfaces that are configured as members of a lagg(4) interface will not be "
"shown."
@@ -15211,8 +15442,8 @@ msgstr ""
#: src/usr/local/www/interfaces_bridge.php:137
#: src/usr/local/www/interfaces_groups.php:114
#: src/usr/local/www/interfaces_lagg.php:139
-#: src/usr/local/www/load_balancer_pool_edit.php:427
-#: src/usr/local/www/system_groupmanager.php:441
+#: src/usr/local/www/load_balancer_pool_edit.php:421
+#: src/usr/local/www/system_groupmanager.php:465
msgid "Members"
msgstr ""
@@ -15224,148 +15455,148 @@ msgstr ""
msgid "Delete interface bridge"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:166
-#: src/usr/local/www/interfaces_bridge_edit.php:419
+#: src/usr/local/www/interfaces_bridge_edit.php:181
+#: src/usr/local/www/interfaces_bridge_edit.php:434
msgid "Member Interfaces"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:171
+#: src/usr/local/www/interfaces_bridge_edit.php:186
msgid "Maxage needs to be an integer between 6 and 40."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:174
+#: src/usr/local/www/interfaces_bridge_edit.php:189
msgid "Maxaddr needs to be an integer."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:177
+#: src/usr/local/www/interfaces_bridge_edit.php:192
msgid "Timeout needs to be an integer."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:180
+#: src/usr/local/www/interfaces_bridge_edit.php:195
msgid "Forward Delay needs to be an integer between 4 and 30."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:183
+#: src/usr/local/www/interfaces_bridge_edit.php:198
msgid "Hello time for STP needs to be an integer between 1 and 2."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:186
+#: src/usr/local/www/interfaces_bridge_edit.php:201
msgid "Priority for STP needs to be an integer between 0 and 61440."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:189
+#: src/usr/local/www/interfaces_bridge_edit.php:204
msgid "Transmit Hold Count for STP needs to be an integer between 1 and 10."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:193
+#: src/usr/local/www/interfaces_bridge_edit.php:208
#, php-format
msgid "%s interface priority for STP needs to be an integer between 0 and 240."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:201
+#: src/usr/local/www/interfaces_bridge_edit.php:216
#, php-format
msgid ""
"%s interface path cost for STP needs to be an integer between 1 and "
"200000000."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:207
-msgid "You must select at least one member interface for a bridge."
+#: src/usr/local/www/interfaces_bridge_edit.php:222
+msgid "At least one member interface must be selected for a bridge."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:272
+#: src/usr/local/www/interfaces_bridge_edit.php:287
msgid "A member interface passed does not exist in configuration"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:275
+#: src/usr/local/www/interfaces_bridge_edit.php:290
msgid "A bridge interface cannot be a member of a bridge."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:279
+#: src/usr/local/www/interfaces_bridge_edit.php:294
msgid "Bridging a wireless interface is only possible in hostap mode."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:291
+#: src/usr/local/www/interfaces_bridge_edit.php:306
#, php-format
msgid ""
"%s is part of another bridge. Remove the interface from bridge members to "
"continue."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:363
-#: src/usr/local/www/interfaces_gif_edit.php:163
-#: src/usr/local/www/interfaces_gre_edit.php:157
-#: src/usr/local/www/interfaces_lagg_edit.php:200
+#: src/usr/local/www/interfaces_bridge_edit.php:378
+#: src/usr/local/www/interfaces_gif_edit.php:167
+#: src/usr/local/www/interfaces_gre_edit.php:163
+#: src/usr/local/www/interfaces_lagg_edit.php:203
#: src/usr/local/www/interfaces_vlan_edit.php:169
msgid "Error occurred creating interface, please retry."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:413
+#: src/usr/local/www/interfaces_bridge_edit.php:428
msgid "Bridge Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:423
-msgid "Interfaces participating in the bridge"
+#: src/usr/local/www/interfaces_bridge_edit.php:438
+msgid "Interfaces participating in the bridge."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:443
-#: src/usr/local/www/interfaces_ppps_edit.php:834
+#: src/usr/local/www/interfaces_bridge_edit.php:464
+#: src/usr/local/www/interfaces_ppps_edit.php:846
#: src/usr/local/www/vpn_ipsec_phase2.php:710
#: src/usr/local/www/vpn_openvpn_client.php:772
-#: src/usr/local/www/vpn_openvpn_server.php:1154
-#: src/usr/local/www/interfaces.php:1911 src/usr/local/www/interfaces.php:2094
+#: src/usr/local/www/vpn_openvpn_server.php:1159
+#: src/usr/local/www/interfaces.php:1927 src/usr/local/www/interfaces.php:2110
msgid "Advanced Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:454
+#: src/usr/local/www/interfaces_bridge_edit.php:470
msgid "Cache Size"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:457
-msgid "Set the size of the bridge address cache. The default is 2000 entries"
+#: src/usr/local/www/interfaces_bridge_edit.php:473
+msgid "Set the size of the bridge address cache. The default is 2000 entries."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:461
+#: src/usr/local/www/interfaces_bridge_edit.php:477
msgid "Cache expire time"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:464
+#: src/usr/local/www/interfaces_bridge_edit.php:480
msgid ""
"Set the timeout of address cache entries to this number of seconds. If "
"seconds is zero, then address cache entries will not be expired. The default "
-"is 1200 seconds"
+"is 1200 seconds."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:470
+#: src/usr/local/www/interfaces_bridge_edit.php:486
msgid "Span Port"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:474
+#: src/usr/local/www/interfaces_bridge_edit.php:490
#, php-format
msgid ""
"Add the interface named by interface as a span port on the bridge. Span "
-"ports transmit a copy of every frame received by the bridge.This is most "
+"ports transmit a copy of every frame received by the bridge. This is most "
"useful for snooping a bridged network passively on another host connected to "
"one of the span ports of the bridge. <br />%sThe span interface cannot be "
"part of the bridge member interfaces.%s"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:482
+#: src/usr/local/www/interfaces_bridge_edit.php:498
msgid "Edge Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:486
+#: src/usr/local/www/interfaces_bridge_edit.php:502
msgid ""
"Set interface as an edge port. An edge port connects directly to end "
"stations and cannot create bridging loops in the network; this allows it to "
"transition straight to forwarding."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:492
+#: src/usr/local/www/interfaces_bridge_edit.php:508
msgid "Auto Edge Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:496
+#: src/usr/local/www/interfaces_bridge_edit.php:512
#, php-format
msgid ""
"Allow interface to automatically detect edge status. This is the default for "
@@ -15373,22 +15604,22 @@ msgid ""
"interfaces. %s"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:503
+#: src/usr/local/www/interfaces_bridge_edit.php:519
msgid "PTP Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:507
+#: src/usr/local/www/interfaces_bridge_edit.php:523
msgid ""
"Set the interface as a point-to-point link. This is required for straight "
"transitions to forwarding and should be enabled on a direct link to another "
"RSTP-capable switch."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:513
+#: src/usr/local/www/interfaces_bridge_edit.php:529
msgid "Auto PTP Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:517
+#: src/usr/local/www/interfaces_bridge_edit.php:533
#, php-format
msgid ""
"Automatically detect the point-to-point status on interface by checking the "
@@ -15397,11 +15628,11 @@ msgid ""
"status. %s"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:524
+#: src/usr/local/www/interfaces_bridge_edit.php:540
msgid "Sticky Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:528
+#: src/usr/local/www/interfaces_bridge_edit.php:544
msgid ""
"Mark an interface as a \"sticky\" interface. Dynamically learned address "
"entries are treated as static once entered into the cache. Sticky entries "
@@ -15409,105 +15640,105 @@ msgid ""
"a different interface."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:535
+#: src/usr/local/www/interfaces_bridge_edit.php:551
msgid "Private Ports"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:539
+#: src/usr/local/www/interfaces_bridge_edit.php:555
msgid ""
"Mark an interface as a \"private\" interface. A private interface does not "
"forward any traffic to any other port that is also a private interface. "
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:545
+#: src/usr/local/www/interfaces_bridge_edit.php:561
msgid "Enable RSTP/STP"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:552
+#: src/usr/local/www/interfaces_bridge_edit.php:568
msgid "RSTP/STP"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:565
+#: src/usr/local/www/interfaces_bridge_edit.php:577
msgid "Protocol used for spanning tree."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:571
+#: src/usr/local/www/interfaces_bridge_edit.php:583
msgid "STP Interfaces"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:575
+#: src/usr/local/www/interfaces_bridge_edit.php:587
msgid ""
"Enable Spanning Tree Protocol on interface. The if_bridge(4) driver has "
-"support for the IEEE 802.1D Spanning Tree Protocol (STP).STP is used to "
+"support for the IEEE 802.1D Spanning Tree Protocol (STP). STP is used to "
"detect and remove loops in a network topology."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:580
+#: src/usr/local/www/interfaces_bridge_edit.php:592
msgid "Valid time"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:584
+#: src/usr/local/www/interfaces_bridge_edit.php:596
msgid ""
"Set the time that a Spanning Tree Protocol configuration is valid. The "
"default is 20 seconds. The minimum is 6 seconds and the maximum is 40 "
"seconds."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:588
+#: src/usr/local/www/interfaces_bridge_edit.php:600
msgid "Forward time"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:592
+#: src/usr/local/www/interfaces_bridge_edit.php:604
msgid ""
"Set the time that must pass before an interface begins forwarding packets "
"when Spanning Tree is enabled. The default is 15 seconds. The minimum is 4 "
"seconds and the maximum is 30 seconds. "
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:596
+#: src/usr/local/www/interfaces_bridge_edit.php:608
msgid "Hello time"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:600
+#: src/usr/local/www/interfaces_bridge_edit.php:612
msgid ""
"Set the time in seconds between broadcasting of Spanning Tree Protocol "
"configuration messages. The hello time may only be changed when operating in "
-"legacy STP mode.The default is 2 seconds. The minimum is 1 second and the "
+"legacy STP mode. The default is 2 seconds. The minimum is 1 second and the "
"maximum is 2 seconds."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:609
+#: src/usr/local/www/interfaces_bridge_edit.php:621
msgid ""
"Set the bridge priority for Spanning Tree. The default is 32768. The minimum "
"is 0 and the maximum is 61440. "
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:613
+#: src/usr/local/www/interfaces_bridge_edit.php:625
msgid "Hold Count"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:617
+#: src/usr/local/www/interfaces_bridge_edit.php:629
msgid ""
"Set the transmit hold count for Spanning Tree. This is the number of packets "
"transmitted before being rate limited. The default is 6. The minimum is 1 "
"and the maximum is 10."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:622
+#: src/usr/local/www/interfaces_bridge_edit.php:634
msgid " Priority"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:626
+#: src/usr/local/www/interfaces_bridge_edit.php:638
msgid ""
"Set the Spanning Tree priority of interface to value. The default is 128. "
"The minimum is 0 and the maximum is 240. Increments of 16."
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:633
+#: src/usr/local/www/interfaces_bridge_edit.php:645
msgid " Path cost"
msgstr ""
-#: src/usr/local/www/interfaces_bridge_edit.php:637
+#: src/usr/local/www/interfaces_bridge_edit.php:649
msgid ""
"Set the Spanning Tree path cost of interface to value. The default is "
"calculated from the link speed. To change a previously selected path cost "
@@ -15540,7 +15771,7 @@ msgstr ""
#: src/usr/local/www/interfaces_gif_edit.php:99
#: src/usr/local/www/interfaces_gre_edit.php:99
-#: src/usr/local/www/interfaces_qinq_edit.php:268
+#: src/usr/local/www/interfaces_qinq_edit.php:265
#: src/usr/local/www/interfaces_vlan_edit.php:105
#: src/usr/local/www/interfaces_wireless_edit.php:115
msgid "Parent interface"
@@ -15602,62 +15833,62 @@ msgstr ""
msgid "A gif with the network %s is already defined."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:205
+#: src/usr/local/www/interfaces_gif_edit.php:209
msgid "GIF Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:209
-#: src/usr/local/www/interfaces_gre_edit.php:203
+#: src/usr/local/www/interfaces_gif_edit.php:213
+#: src/usr/local/www/interfaces_gre_edit.php:209
#: src/usr/local/www/interfaces_vlan_edit.php:218
#: src/usr/local/www/interfaces_wireless_edit.php:214
msgid "Parent Interface"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:212
+#: src/usr/local/www/interfaces_gif_edit.php:216
msgid ""
"This interface serves as the local address to be used for the GIF tunnel."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:216
+#: src/usr/local/www/interfaces_gif_edit.php:220
msgid "GIF Remote Address"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:218
+#: src/usr/local/www/interfaces_gif_edit.php:222
msgid "Peer address where encapsulated gif packets will be sent."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:222
+#: src/usr/local/www/interfaces_gif_edit.php:226
msgid "GIF tunnel local address"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:224
+#: src/usr/local/www/interfaces_gif_edit.php:228
msgid "Local gif tunnel endpoint."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:228
+#: src/usr/local/www/interfaces_gif_edit.php:232
msgid "GIF tunnel remote address"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:230
+#: src/usr/local/www/interfaces_gif_edit.php:234
msgid "Remote GIF address endpoint."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:234
+#: src/usr/local/www/interfaces_gif_edit.php:238
msgid "GIF tunnel subnet"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:237
-#: src/usr/local/www/interfaces_gre_edit.php:231
-msgid "The subnet is used for determining the network that is tunnelled"
+#: src/usr/local/www/interfaces_gif_edit.php:241
+#: src/usr/local/www/interfaces_gre_edit.php:237
+msgid "The subnet is used for determining the network that is tunnelled."
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:241
-#: src/usr/local/www/interfaces_gre_edit.php:235
+#: src/usr/local/www/interfaces_gif_edit.php:245
+#: src/usr/local/www/interfaces_gre_edit.php:241
msgid "Route Caching"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:248
-#: src/usr/local/www/interfaces_gre_edit.php:242
+#: src/usr/local/www/interfaces_gif_edit.php:252
+#: src/usr/local/www/interfaces_gre_edit.php:248
msgid "ECN friendly behavior"
msgstr ""
@@ -15724,61 +15955,61 @@ msgstr ""
msgid "A GRE tunnel with the network %s is already defined."
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:199
+#: src/usr/local/www/interfaces_gre_edit.php:205
msgid "GRE Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:206
+#: src/usr/local/www/interfaces_gre_edit.php:212
msgid ""
"This interface serves as the local address to be used for the GRE tunnel."
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:210
+#: src/usr/local/www/interfaces_gre_edit.php:216
msgid "GRE Remote Address"
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:212
+#: src/usr/local/www/interfaces_gre_edit.php:218
msgid "Peer address where encapsulated GRE packets will be sent."
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:216
+#: src/usr/local/www/interfaces_gre_edit.php:222
msgid "GRE tunnel local address"
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:218
+#: src/usr/local/www/interfaces_gre_edit.php:224
msgid "Local GRE tunnel endpoint."
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:222
+#: src/usr/local/www/interfaces_gre_edit.php:228
msgid "GRE tunnel remote address"
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:224
+#: src/usr/local/www/interfaces_gre_edit.php:230
msgid "Remote GRE address endpoint."
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:228
+#: src/usr/local/www/interfaces_gre_edit.php:234
msgid "GRE tunnel subnet"
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:249
+#: src/usr/local/www/interfaces_gre_edit.php:255
msgid "WCCP Version"
msgstr ""
#: src/usr/local/www/interfaces_groups.php:146
-#: src/usr/local/www/system_groupmanager.php:330
+#: src/usr/local/www/system_groupmanager.php:346
msgid "Edit group"
msgstr ""
#: src/usr/local/www/interfaces_groups.php:147
-#: src/usr/local/www/system_groupmanager.php:332
+#: src/usr/local/www/system_groupmanager.php:348
msgid "Delete group"
msgstr ""
#: src/usr/local/www/interfaces_groups.php:165
msgid ""
-"Interface Groups allow you to setup rules for multiple interfaces without "
-"duplicating the rules.<br />If you remove members from an interface group, "
+"Interface Groups allow setting up rules for multiple interfaces without "
+"duplicating the rules.<br />If members are removed from an interface group, "
"the group rules are no longer applicable to that interface."
msgstr ""
@@ -15808,16 +16039,16 @@ msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:227
#: src/usr/local/www/status_gateway_groups.php:96
-#: src/usr/local/www/system_gateway_groups.php:150
-#: src/usr/local/www/system_gateway_groups_edit.php:227
-#: src/usr/local/www/system_gateway_groups_edit.php:270
+#: src/usr/local/www/system_gateway_groups.php:164
+#: src/usr/local/www/system_gateway_groups_edit.php:242
#: src/usr/local/www/system_gateway_groups_edit.php:299
-#: src/usr/local/www/system_groupmanager.php:176
+#: src/usr/local/www/system_gateway_groups_edit.php:328
+#: src/usr/local/www/system_groupmanager.php:177
msgid "Group Name"
msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:231
-msgid "No numbers or spaces are allowed. Only characters in a-zA-Z"
+msgid "No numbers or spaces are allowed. Only characters: a-zA-Z"
msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:236
@@ -15825,7 +16056,10 @@ msgid "Group Description"
msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:240
-msgid "You may enter a group decsription here for your reference (not parsed)"
+#: src/usr/local/www/interfaces_vlan_edit.php:245
+msgid ""
+"A group description may be entered here for administrative reference (not "
+"parsed)."
msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:245
@@ -15840,7 +16074,7 @@ msgid ""
msgstr ""
#: src/usr/local/www/interfaces_groups_edit.php:257
-#: src/usr/local/www/interfaces_vlan_edit.php:258
+#: src/usr/local/www/interfaces_vlan_edit.php:257
#: src/usr/local/www/system_advanced_sysctl.php:271
msgid "id"
msgstr ""
@@ -15888,7 +16122,7 @@ msgstr ""
#: src/usr/local/www/interfaces_lagg_edit.php:79
msgid ""
"This protocol is intended to do nothing: it disables any traffic without "
-"disabling the lagg interface itself"
+"disabling the lagg interface itself."
msgstr ""
#: src/usr/local/www/interfaces_lagg_edit.php:84
@@ -15924,53 +16158,57 @@ msgid ""
"is a static setup and does not negotiate aggregation with the peer or "
"exchange frames to monitor the link. The hash includes the Ethernet source "
"and destination address, and, if available, the VLAN tag, and the IP source "
-"and destination address"
+"and destination address."
msgstr ""
#: src/usr/local/www/interfaces_lagg_edit.php:120
msgid ""
"Distributes outgoing traffic using a round-robin scheduler through all "
-"active ports and accepts incoming traffic from any active port"
+"active ports and accepts incoming traffic from any active port."
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:170
+#: src/usr/local/www/interfaces_lagg_edit.php:173
msgid "Member interfaces"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:170
+#: src/usr/local/www/interfaces_lagg_edit.php:173
msgid "Lagg protocol"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:177
+#: src/usr/local/www/interfaces_lagg_edit.php:180
#, php-format
msgid "Interface supplied as member (%s) is invalid"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:181
+#: src/usr/local/www/interfaces_lagg_edit.php:184
msgid "Interface supplied as member is invalid"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:185
+#: src/usr/local/www/interfaces_lagg_edit.php:188
msgid "Protocol supplied is invalid"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:251
+#: src/usr/local/www/interfaces_lagg_edit.php:267
msgid "LAGG Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:257
+#: src/usr/local/www/interfaces_lagg_edit.php:273
msgid "Parent Interfaces"
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:261
+#: src/usr/local/www/interfaces_lagg_edit.php:277
msgid "Choose the members that will be used for the link aggregation."
msgstr ""
-#: src/usr/local/www/interfaces_lagg_edit.php:265
-#: src/usr/local/www/status_interfaces.php:169
+#: src/usr/local/www/interfaces_lagg_edit.php:281
+#: src/usr/local/www/status_interfaces.php:172
msgid "LAGG Protocol"
msgstr ""
+#: src/usr/local/www/interfaces_lagg_edit.php:291
+msgid "Enter a description here for reference only (Not parsed)."
+msgstr ""
+
#: src/usr/local/www/interfaces_ppps.php:89
msgid ""
"This point-to-point link cannot be deleted because it is still being used as "
@@ -15993,99 +16231,99 @@ msgstr ""
msgid "Delete PPP interface"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:221
-#: src/usr/local/www/interfaces_ppps_edit.php:227
-#: src/usr/local/www/interfaces_ppps_edit.php:230
+#: src/usr/local/www/interfaces_ppps_edit.php:232
#: src/usr/local/www/interfaces_ppps_edit.php:238
#: src/usr/local/www/interfaces_ppps_edit.php:241
-#: src/usr/local/www/interfaces_ppps_edit.php:587
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
+#: src/usr/local/www/interfaces_ppps_edit.php:597
msgid "Link Interface(s)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:238
-#: src/usr/local/www/interfaces_ppps_edit.php:241
-#: src/usr/local/www/services_dhcp.php:827
+#: src/usr/local/www/interfaces_ppps_edit.php:249
+#: src/usr/local/www/interfaces_ppps_edit.php:252
+#: src/usr/local/www/services_dhcp.php:823
#: src/usr/local/www/services_dhcpv6.php:615
msgid "Subnet"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:246
+#: src/usr/local/www/interfaces_ppps_edit.php:257
msgid "Please choose a Link Type."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:256
-#: src/usr/local/www/services_captiveportal_vouchers.php:282
+#: src/usr/local/www/interfaces_ppps_edit.php:267
+#: src/usr/local/www/services_captiveportal_vouchers.php:283
#: src/usr/local/www/services_dyndns_edit.php:145
msgid "Password and confirmed password must match."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:259
+#: src/usr/local/www/interfaces_ppps_edit.php:270
msgid ""
"Multilink connections (MLPPP) using the PPP link type is not currently "
"supported. Please select only one Link Interface."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:262
+#: src/usr/local/www/interfaces_ppps_edit.php:273
msgid "The Service name contains invalid characters."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:265
+#: src/usr/local/www/interfaces_ppps_edit.php:276
msgid "Do not specify both a Service name and a NULL Service name."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:284
+#: src/usr/local/www/interfaces_ppps_edit.php:295
msgid ""
"A valid PPPoE reset month must be specified (1-12) in the Custom PPPoE "
"Periodic reset fields."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:287
+#: src/usr/local/www/interfaces_ppps_edit.php:298
msgid ""
"A valid PPPoE reset day of month must be specified (1-31) in the Custom "
"PPPoE Periodic reset fields. No checks are done on valid # of days per month"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:290
+#: src/usr/local/www/interfaces_ppps_edit.php:301
msgid ""
"A valid PPPoE reset year must be specified. Don't select a year in the past!"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:298
+#: src/usr/local/www/interfaces_ppps_edit.php:309
#, php-format
msgid "A valid local IP address must be specified for %s."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:301
+#: src/usr/local/www/interfaces_ppps_edit.php:312
#, php-format
msgid "A valid gateway IP address OR hostname must be specified for %s."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:304
+#: src/usr/local/www/interfaces_ppps_edit.php:315
#, php-format
msgid "The bandwidth value for %s must be an integer."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:307
+#: src/usr/local/www/interfaces_ppps_edit.php:318
#, php-format
msgid "The MTU for %s must be greater than 576 bytes."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:310
+#: src/usr/local/www/interfaces_ppps_edit.php:321
#, php-format
msgid "The MRU for %s must be greater than 576 bytes."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:327
+#: src/usr/local/www/interfaces_ppps_edit.php:338
#, php-format
msgid ""
"The MTU (%d) is too big for %s (maximum allowed with current settings: %d)."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:466
+#: src/usr/local/www/interfaces_ppps_edit.php:476
msgid "Select"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:567
+#: src/usr/local/www/interfaces_ppps_edit.php:577
msgid ""
"Bandwidth is set only for MLPPP connections and when links have different "
"bandwidths<br />MTU defaults to 1492<br />MRU will be auto-negotiated by "
@@ -16093,163 +16331,171 @@ msgid ""
"default."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:578
+#: src/usr/local/www/interfaces_ppps_edit.php:588
msgid "Link Type"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:591
+#: src/usr/local/www/interfaces_ppps_edit.php:601
msgid "Select at least two interfaces for Multilink (MLPPP) connections."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:598
+#: src/usr/local/www/interfaces_ppps_edit.php:608
msgid ""
-"You may enter a description here for your reference. Description will appear "
-"in the \"Interfaces Assign\" select lists."
+"A description may be entered here for administrative reference. Description "
+"will appear in the \"Interfaces Assign\" select lists."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:640
+#: src/usr/local/www/interfaces_ppps_edit.php:650
msgid "IP/Gateway ("
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:653
+#: src/usr/local/www/interfaces_ppps_edit.php:663
msgid "IP or Hostname"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:673
+#: src/usr/local/www/interfaces_ppps_edit.php:678
+msgid "Typically *99# for GSM networks and #777 for CDMA networks"
+msgstr ""
+
+#: src/usr/local/www/interfaces_ppps_edit.php:683
msgid "Access Point Name (APN)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:680
+#: src/usr/local/www/interfaces_ppps_edit.php:690
msgid "APN number (optional)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:683
+#: src/usr/local/www/interfaces_ppps_edit.php:693
msgid "Defaults to 1 if APN is set. Ignored if no APN is set."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:687
+#: src/usr/local/www/interfaces_ppps_edit.php:697
msgid "SIM PIN"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:694
+#: src/usr/local/www/interfaces_ppps_edit.php:704
msgid "SIM PIN wait"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:697
+#: src/usr/local/www/interfaces_ppps_edit.php:707
msgid ""
"Time to wait for SIM to discover network after PIN is sent to SIM (seconds)."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:701
+#: src/usr/local/www/interfaces_ppps_edit.php:711
msgid "Init string"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:704
+#: src/usr/local/www/interfaces_ppps_edit.php:714
msgid ""
"Enter the modem initialization string here. Do NOT include the \"AT\" string "
"at the beginning of the command. Many modern USB 3G modems don't need an "
"initialization string."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:709
+#: src/usr/local/www/interfaces_ppps_edit.php:719
msgid "Connection Timeout"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:712
+#: src/usr/local/www/interfaces_ppps_edit.php:722
msgid ""
"Enter timeout in seconds for connection to be established (sec.) Default is "
"45 sec."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:716
+#: src/usr/local/www/interfaces_ppps_edit.php:726
msgid "Uptime logging"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:738
+#: src/usr/local/www/interfaces_ppps_edit.php:748
msgid ""
"This field can usually be left empty. Service name will not be configured if "
"this field is empty. Check the \"Configure NULL\" box to configure a blank "
"Service name."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:745
+#: src/usr/local/www/interfaces_ppps_edit.php:755
msgid "Periodic Reset"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:754
+#: src/usr/local/www/interfaces_ppps_edit.php:762
+msgid "Select a reset timing type"
+msgstr ""
+
+#: src/usr/local/www/interfaces_ppps_edit.php:764
msgid "Reset Date/Time"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:762
+#: src/usr/local/www/interfaces_ppps_edit.php:772
msgid "Hour"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:769
+#: src/usr/local/www/interfaces_ppps_edit.php:779
msgid "Minute"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:777
+#: src/usr/local/www/interfaces_ppps_edit.php:787
msgid "Specific date"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:779
+#: src/usr/local/www/interfaces_ppps_edit.php:789
msgid ""
"Leaving the date field empty will cause the reset to be executed each day at "
-"the time you specified in the minutes and hour fields. "
+"the time specified in the minutes and hour fields. "
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:783
+#: src/usr/local/www/interfaces_ppps_edit.php:793
msgid "Reset frequency"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:822
-msgid "Show"
+#: src/usr/local/www/interfaces_ppps_edit.php:840
+msgid "Advanced options"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:839
+#: src/usr/local/www/interfaces_ppps_edit.php:851
msgid "Dial On Demand"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:842
+#: src/usr/local/www/interfaces_ppps_edit.php:854
msgid ""
-"Causes the interface to operate in dial-on-demand mode. Do NOT enable if you "
-"want your link to be always up. The interface is configured, but the actual "
-"connection of the link is delayed until qualifying outgoing traffic is "
-"detected."
+"Causes the interface to operate in dial-on-demand mode. Do NOT enable if the "
+"link is to remain continuously connected. The interface is configured, but "
+"the actual connection of the link is delayed until qualifying outgoing "
+"traffic is detected."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:847
+#: src/usr/local/www/interfaces_ppps_edit.php:859
msgid "Idle Timeout"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:850
+#: src/usr/local/www/interfaces_ppps_edit.php:862
msgid ""
"If no incoming or outgoing packets are transmitted for the entered number of "
-"seconds the connection is brought down.When the idle timeout occurs, if the "
+"seconds the connection is brought down. When the idle timeout occurs, if the "
"dial-on-demand option is enabled, mpd goes back into dial-on-demand mode. "
"Otherwise, the interface is brought down and all associated routes removed."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:856
+#: src/usr/local/www/interfaces_ppps_edit.php:868
#: src/usr/local/www/vpn_openvpn_client.php:730
#: src/usr/local/www/vpn_openvpn_server.php:952
msgid "Compression"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:859
+#: src/usr/local/www/interfaces_ppps_edit.php:871
msgid ""
"Disable vjcomp(compression) (auto-negotiated by default).<br />This option "
"enables Van Jacobson TCP header compression, which saves several bytes per "
-"TCP data packet.This option is almost always required. Compression is not "
+"TCP data packet. This option is almost always required. Compression is not "
"effective for TCP connections with enabled modern extensions like time "
"stamping or SACK, which modify TCP options between sequential packets."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:866
+#: src/usr/local/www/interfaces_ppps_edit.php:878
msgid "TCPmssFix"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:869
+#: src/usr/local/www/interfaces_ppps_edit.php:881
msgid ""
"Causes mpd to adjust incoming and outgoing TCP SYN segments so that the "
"requested maximum segment size is not greater than the amount allowed by the "
@@ -16264,11 +16510,11 @@ msgid ""
"outgoing data."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:877
+#: src/usr/local/www/interfaces_ppps_edit.php:889
msgid "ShortSeq"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:880
+#: src/usr/local/www/interfaces_ppps_edit.php:892
msgid ""
"This option is only meaningful if multi-link PPP is negotiated. It "
"proscribes shorter multi-link fragment headers, saving two bytes on every "
@@ -16276,35 +16522,35 @@ msgid ""
"multi-link."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:885
+#: src/usr/local/www/interfaces_ppps_edit.php:897
msgid "ACFComp"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:888
+#: src/usr/local/www/interfaces_ppps_edit.php:900
msgid ""
"Address and control field compression. This option only applies to "
"asynchronous link types. It saves two bytes per frame."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:892
+#: src/usr/local/www/interfaces_ppps_edit.php:904
msgid "ProtoComp"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:895
+#: src/usr/local/www/interfaces_ppps_edit.php:907
msgid ""
"Protocol field compression. This option saves one byte per frame for most "
"frames."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:901
+#: src/usr/local/www/interfaces_ppps_edit.php:913
msgid "Link Parameters ("
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:922
+#: src/usr/local/www/interfaces_ppps_edit.php:934
msgid "MRU"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:929
+#: src/usr/local/www/interfaces_ppps_edit.php:941
msgid "MRRU"
msgstr ""
@@ -16347,14 +16593,11 @@ msgid "First level tag cannot be empty."
msgstr ""
#: src/usr/local/www/interfaces_qinq_edit.php:112
-msgid ""
-"You are editing an existing entry and modifying the first level tag is not "
-"allowed."
+msgid "Modifying the first level tag of an existing entry is not allowed."
msgstr ""
#: src/usr/local/www/interfaces_qinq_edit.php:115
-msgid ""
-"You are editing an existing entry and modifying the interface is not allowed."
+msgid "Modifying the interface of an existing entry is not allowed."
msgstr ""
#: src/usr/local/www/interfaces_qinq_edit.php:120
@@ -16376,40 +16619,44 @@ msgstr ""
msgid "QinQ VLANs group"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:264
+#: src/usr/local/www/interfaces_qinq_edit.php:261
msgid "QinQ Configuration"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:271
+#: src/usr/local/www/interfaces_qinq_edit.php:268
msgid "Only QinQ capable interfaces will be shown."
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:275
+#: src/usr/local/www/interfaces_qinq_edit.php:272
msgid "First level tag"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:279
+#: src/usr/local/www/interfaces_qinq_edit.php:276
msgid ""
"This is the first level VLAN tag. On top of this are stacked the member "
"VLANs defined below."
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:283
+#: src/usr/local/www/interfaces_qinq_edit.php:280
msgid "Option(s)"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:286
-msgid "Allows rules to be written more easily"
+#: src/usr/local/www/interfaces_qinq_edit.php:283
+msgid "Allows rules to be written more easily."
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:296
+#: src/usr/local/www/interfaces_qinq_edit.php:293
msgid "Member(s)"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:323
+#: src/usr/local/www/interfaces_qinq_edit.php:320
msgid "Tag(s)"
msgstr ""
+#: src/usr/local/www/interfaces_qinq_edit.php:344
+msgid "Add Tag"
+msgstr ""
+
#: src/usr/local/www/interfaces_vlan.php:94
msgid ""
"This VLAN cannot be deleted because it is still being used as an interface."
@@ -16454,8 +16701,7 @@ msgid "Interface supplied as parent is invalid"
msgstr ""
#: src/usr/local/www/interfaces_vlan_edit.php:123
-msgid ""
-"Interface is assigned and you cannot change the VLAN tag while assigned."
+msgid "The VLAN tag cannot be changed while the interface is assigned."
msgstr ""
#: src/usr/local/www/interfaces_vlan_edit.php:133
@@ -16494,11 +16740,7 @@ msgstr ""
msgid "802.1Q VLAN Priority (between 0 and 7)."
msgstr ""
-#: src/usr/local/www/interfaces_vlan_edit.php:245
-msgid "You may enter a group description here for your reference (not parsed)."
-msgstr ""
-
-#: src/usr/local/www/interfaces_vlan_edit.php:250
+#: src/usr/local/www/interfaces_vlan_edit.php:249
msgid "vlanif"
msgstr ""
@@ -16672,6 +16914,7 @@ msgstr ""
#: src/usr/local/www/license.php:214 src/usr/local/www/license.php:218
#: src/usr/local/www/license.php:222 src/usr/local/www/license.php:226
#: src/usr/local/www/license.php:230 src/usr/local/www/license.php:238
+#: src/usr/local/www/license.php:242
msgid "Copyright"
msgstr ""
@@ -16735,10 +16978,10 @@ msgstr ""
#: src/usr/local/www/load_balancer_monitor.php:107
#: src/usr/local/www/load_balancer_monitor.php:128
-#: src/usr/local/www/load_balancer_monitor_edit.php:234
+#: src/usr/local/www/load_balancer_monitor_edit.php:236
#: src/usr/local/www/load_balancer_pool.php:142
#: src/usr/local/www/load_balancer_setting.php:141
-#: src/usr/local/www/load_balancer_virtual_server.php:142
+#: src/usr/local/www/load_balancer_virtual_server.php:162
msgid "Monitors"
msgstr ""
@@ -16754,7 +16997,7 @@ msgstr ""
#: src/usr/local/www/load_balancer_pool.php:140
#: src/usr/local/www/load_balancer_pool_edit.php:219
#: src/usr/local/www/load_balancer_setting.php:139
-#: src/usr/local/www/load_balancer_virtual_server.php:140
+#: src/usr/local/www/load_balancer_virtual_server.php:160
#: src/usr/local/www/status_lb_pool.php:92
#: src/usr/local/www/status_lb_pool.php:148
#: src/usr/local/www/status_lb_vs.php:84
@@ -16764,9 +17007,9 @@ msgstr ""
#: src/usr/local/www/load_balancer_monitor.php:127
#: src/usr/local/www/load_balancer_pool.php:141
#: src/usr/local/www/load_balancer_setting.php:140
-#: src/usr/local/www/load_balancer_virtual_server.php:121
#: src/usr/local/www/load_balancer_virtual_server.php:141
-#: src/usr/local/www/load_balancer_virtual_server.php:149
+#: src/usr/local/www/load_balancer_virtual_server.php:161
+#: src/usr/local/www/load_balancer_virtual_server.php:169
#: src/usr/local/www/load_balancer_virtual_server_edit.php:193
#: src/usr/local/www/status_lb_pool.php:149
#: src/usr/local/www/status_lb_vs.php:79 src/usr/local/www/status_lb_vs.php:85
@@ -16776,8 +17019,8 @@ msgstr ""
#: src/usr/local/www/load_balancer_monitor.php:135
#: src/usr/local/www/load_balancer_pool.php:158
#: src/usr/local/www/load_balancer_pool_edit.php:107
-#: src/usr/local/www/load_balancer_pool_edit.php:397
-#: src/usr/local/www/load_balancer_pool_edit.php:403
+#: src/usr/local/www/load_balancer_pool_edit.php:389
+#: src/usr/local/www/load_balancer_pool_edit.php:395
#: src/usr/local/www/status_gateways.php:95
#: src/usr/local/www/status_lb_pool.php:165
msgid "Monitor"
@@ -16795,106 +17038,107 @@ msgstr ""
msgid "Delete monitor"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:96
+#: src/usr/local/www/load_balancer_monitor_edit.php:98
msgid "Load Balancer: Monitor:"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:125
+#: src/usr/local/www/load_balancer_monitor_edit.php:127
msgid "This monitor name has already been used. Monitor names must be unique."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:130
+#: src/usr/local/www/load_balancer_monitor_edit.php:132
#: src/usr/local/www/load_balancer_pool_edit.php:119
#: src/usr/local/www/load_balancer_virtual_server_edit.php:123
-msgid "You cannot use spaces or slashes in the 'name' field."
+msgid "Spaces or slashes cannot be used in the 'name' field."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:134
+#: src/usr/local/www/load_balancer_monitor_edit.php:136
#: src/usr/local/www/load_balancer_pool_edit.php:123
msgid "The 'name' field must be 16 characters or less."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:149
+#: src/usr/local/www/load_balancer_monitor_edit.php:151
#: src/usr/local/www/services_dhcp_edit.php:201
#: src/usr/local/www/services_dhcpv6_edit.php:151
msgid "The hostname can only contain the characters A-Z, 0-9 and '-'."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:155
+#: src/usr/local/www/load_balancer_monitor_edit.php:157
msgid "HTTP(s) codes must be from RFC2616."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:159
+#: src/usr/local/www/load_balancer_monitor_edit.php:161
msgid "The path to monitor must be set."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:183
+#: src/usr/local/www/load_balancer_monitor_edit.php:185
#, php-format
msgid "modified '%s' monitor:"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:238
+#: src/usr/local/www/load_balancer_monitor_edit.php:240
msgid "ICMP"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:238
+#: src/usr/local/www/load_balancer_monitor_edit.php:240
msgid "TCP"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:238
-#: src/usr/local/www/system_advanced_admin.php:345
+#: src/usr/local/www/load_balancer_monitor_edit.php:240
+#: src/usr/local/www/system_advanced_admin.php:347
msgid "HTTP"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:238
-#: src/usr/local/www/system_advanced_admin.php:353
+#: src/usr/local/www/load_balancer_monitor_edit.php:240
+#: src/usr/local/www/system_advanced_admin.php:355
msgid "HTTPS"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:238
+#: src/usr/local/www/load_balancer_monitor_edit.php:240
msgid "Send/Expect"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:302
+#: src/usr/local/www/load_balancer_monitor_edit.php:300
msgid "Edit Load Balancer - Monitor Entry"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:327
+#: src/usr/local/www/load_balancer_monitor_edit.php:325
msgid "HTTP Options"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:332
-#: src/usr/local/www/load_balancer_monitor_edit.php:358
+#: src/usr/local/www/load_balancer_monitor_edit.php:330
+#: src/usr/local/www/load_balancer_monitor_edit.php:356
msgid "Path"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:342
-#: src/usr/local/www/load_balancer_monitor_edit.php:368
+#: src/usr/local/www/load_balancer_monitor_edit.php:340
+#: src/usr/local/www/load_balancer_monitor_edit.php:366
msgid "Hostname for Host: header if needed."
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:346
+#: src/usr/local/www/load_balancer_monitor_edit.php:344
msgid "HTTP Code"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:353
-#: src/usr/local/www/services_captiveportal.php:1035
+#: src/usr/local/www/load_balancer_monitor_edit.php:351
+#: src/usr/local/www/services_captiveportal.php:1044
msgid "HTTPS Options"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:372
+#: src/usr/local/www/load_balancer_monitor_edit.php:370
msgid "HTTPS Code"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:379
+#: src/usr/local/www/load_balancer_monitor_edit.php:377
msgid "Send/Expect Options"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:384
+#: src/usr/local/www/load_balancer_monitor_edit.php:382
+#: src/usr/local/www/services_wol.php:189
msgid "Send"
msgstr ""
-#: src/usr/local/www/load_balancer_monitor_edit.php:391
+#: src/usr/local/www/load_balancer_monitor_edit.php:389
msgid "Expect"
msgstr ""
@@ -16905,18 +17149,18 @@ msgid ""
msgstr ""
#: src/usr/local/www/load_balancer_pool.php:149
-#: src/usr/local/www/load_balancer_virtual_server.php:158
+#: src/usr/local/www/load_balancer_virtual_server.php:178
#: src/usr/local/www/status_ipsec_leases.php:85
#: src/usr/local/www/widgets/widgets/load_balancer_status.widget.php:94
msgid "Pool"
msgstr ""
#: src/usr/local/www/load_balancer_pool.php:156
-#: src/usr/local/www/services_dhcp.php:908
+#: src/usr/local/www/services_dhcp.php:906
#: src/usr/local/www/status_lb_pool.php:164
#: src/usr/local/www/status_lb_vs.php:98
#: src/usr/local/www/vpn_openvpn_client.php:448
-#: src/usr/local/www/vpn_openvpn_csc.php:326
+#: src/usr/local/www/vpn_openvpn_csc.php:330
#: src/usr/local/www/vpn_openvpn_server.php:592
#: src/usr/local/www/vpn_openvpn_server.php:614
msgid "Servers"
@@ -16941,7 +17185,7 @@ msgid "Load Balancer: Pool:"
msgstr ""
#: src/usr/local/www/load_balancer_pool_edit.php:107
-#: src/usr/local/www/vpn_openvpn_csc.php:349
+#: src/usr/local/www/vpn_openvpn_csc.php:353
msgid "Server List"
msgstr ""
@@ -17002,56 +17246,56 @@ msgstr ""
msgid " modified '%s' pool:"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:343
+#: src/usr/local/www/load_balancer_pool_edit.php:335
msgid "Add/Edit Load Balancer - Pool Entry"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:357
+#: src/usr/local/www/load_balancer_pool_edit.php:349
msgid "Load Balance"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:358
+#: src/usr/local/www/load_balancer_pool_edit.php:350
msgid "Manual Failover"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:374
+#: src/usr/local/www/load_balancer_pool_edit.php:366
msgid ""
-"This is the port your servers are listening on. You may also specify a port "
-"alias listed in Firewall -> Aliases here."
+"This is the port the servers are listening on. A port alias listed in "
+"Firewall -> Aliases may also be specified here."
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:382
+#: src/usr/local/www/load_balancer_pool_edit.php:374
msgid ""
"Optionally specify how many times to retry checking a server before "
"declaring it down."
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:386
+#: src/usr/local/www/load_balancer_pool_edit.php:378
msgid "Add Item to the Pool"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:408
+#: src/usr/local/www/load_balancer_pool_edit.php:400
msgid "Server IP Address"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:418
+#: src/usr/local/www/load_balancer_pool_edit.php:410
msgid "Add to pool"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:425
+#: src/usr/local/www/load_balancer_pool_edit.php:419
msgid "Current Pool Members"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:453
+#: src/usr/local/www/load_balancer_pool_edit.php:447
msgid "Enabled (Default)"
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:475
-msgid "Move to enabled list >"
+#: src/usr/local/www/load_balancer_pool_edit.php:473
+msgid "Move to enabled list"
msgstr ""
#: src/usr/local/www/load_balancer_pool_edit.php:480
-msgid "< Move to disabled list"
+msgid "Move to disabled list"
msgstr ""
#: src/usr/local/www/load_balancer_setting.php:91
@@ -17077,7 +17321,7 @@ msgstr ""
#: src/usr/local/www/load_balancer_setting.php:154
msgid ""
"Set the global timeout in milliseconds for checks. Leave blank to use the "
-"default value of 1000 ms"
+"default value of 1000 ms."
msgstr ""
#: src/usr/local/www/load_balancer_setting.php:158
@@ -17087,7 +17331,7 @@ msgstr ""
#: src/usr/local/www/load_balancer_setting.php:161
msgid ""
"Set the interval in seconds at which the member of a pool will be checked. "
-"Leave blank to use the default interval of 10 seconds"
+"Leave blank to use the default interval of 10 seconds."
msgstr ""
#: src/usr/local/www/load_balancer_setting.php:165
@@ -17097,30 +17341,30 @@ msgstr ""
#: src/usr/local/www/load_balancer_setting.php:168
msgid ""
"Number of processes forked in advance by relayd. Leave blank to use the "
-"default value of 5 processes"
+"default value of 5 processes."
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:135
+#: src/usr/local/www/load_balancer_virtual_server.php:155
msgid "The virtual server configuration has been changed."
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:159
+#: src/usr/local/www/load_balancer_virtual_server.php:179
msgid "Fallback pool"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:179
+#: src/usr/local/www/load_balancer_virtual_server.php:212
msgid "Edit virtual server"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:180
+#: src/usr/local/www/load_balancer_virtual_server.php:213
msgid "Copy virtual server"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:181
+#: src/usr/local/www/load_balancer_virtual_server.php:214
msgid "Delete virtual server"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server.php:190
+#: src/usr/local/www/load_balancer_virtual_server.php:223
msgid "No virtual servers have been configured."
msgstr ""
@@ -17129,7 +17373,7 @@ msgid "Load Balancer: Virtual Server:"
msgstr ""
#: src/usr/local/www/load_balancer_virtual_server_edit.php:109
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:287
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:288
msgid "Relay Protocol"
msgstr ""
@@ -17163,7 +17407,7 @@ msgid "The submitted relay protocol is not valid."
msgstr ""
#: src/usr/local/www/load_balancer_virtual_server_edit.php:145
-msgid "You cannot select a Fall Back Pool when using the DNS relay protocol."
+msgid "A Fall Back Pool cannot be selected when using the DNS relay protocol."
msgstr ""
#: src/usr/local/www/load_balancer_virtual_server_edit.php:154
@@ -17176,40 +17420,39 @@ msgstr ""
msgid "created '%s' vs:"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:204
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:206
msgid "Edit Load Balancer - Virtual Server Entry"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:225
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:227
msgid ""
-"This is normally the WAN IP address that you would like the server to listen "
-"on. All connections to this IP and port will be forwarded to the pool "
-"cluster. You may also specify a host alias listed in Firewall -&gt; Aliases "
-"here."
+"This is normally the WAN IP address for the server to listen on. All "
+"connections to this IP and port will be forwarded to the pool cluster. A "
+"host alias listed in Firewall -&gt; Aliases may also be specified here."
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:234
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:236
msgid ""
"Port that the clients will connect to. All connections to this port will be "
"forwarded to the pool cluster. If left blank listening ports from the pool "
-"will be used.You may also specify a port alias listed in Firewall -&gt; "
-"Aliases here."
+"will be used. A port alias listed in Firewall -&gt; Aliases may also be "
+"specified here."
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:240
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:252
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:242
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:254
msgid "Virtual Server Pool"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:260
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:272
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:262
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:273
msgid "Fall-back Pool"
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:304
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:305
msgid ""
-"Don't forget to add a firewall rule for the virtual server/pool after you "
-"have finished setting it up."
+"Don't forget to add a firewall rule for the virtual server/pool after "
+"finished setting it up."
msgstr ""
#: src/usr/local/www/pkg.php:73 src/usr/local/www/pkg.php:202
@@ -17251,7 +17494,7 @@ msgid "Saving changes..."
msgstr ""
#: src/usr/local/www/pkg.php:295
-msgid "Do you really want to save changes?"
+msgid "Confirmation Required to save changes."
msgstr ""
#: src/usr/local/www/pkg.php:354
@@ -17266,54 +17509,53 @@ msgstr ""
msgid "Filter text: "
msgstr ""
-#: src/usr/local/www/pkg.php:409
+#: src/usr/local/www/pkg.php:413
#, php-format
msgid "Displaying page %1$s of %2$s"
msgstr ""
-#: src/usr/local/www/pkg.php:410
+#: src/usr/local/www/pkg.php:414
msgid "Rows per page: "
msgstr ""
-#: src/usr/local/www/pkg.php:538
+#: src/usr/local/www/pkg.php:547
msgid "Edit this item"
msgstr ""
-#: src/usr/local/www/pkg.php:543
+#: src/usr/local/www/pkg.php:552
msgid "Delete this item"
msgstr ""
-#: src/usr/local/www/pkg.php:567
+#: src/usr/local/www/pkg.php:576
msgid "Previous page"
msgstr ""
-#: src/usr/local/www/pkg.php:580
+#: src/usr/local/www/pkg.php:589
msgid "Next page"
msgstr ""
-#: src/usr/local/www/pkg.php:598
+#: src/usr/local/www/pkg.php:607
msgid "Add a new item"
msgstr ""
-#: src/usr/local/www/pkg_edit.php:661
+#: src/usr/local/www/pkg_edit.php:674
msgid "Advanced Features"
msgstr ""
-#: src/usr/local/www/pkg_edit.php:739 src/usr/local/www/services_dhcp.php:789
+#: src/usr/local/www/pkg_edit.php:755 src/usr/local/www/services_dhcp.php:785
msgid "General Options"
msgstr ""
-#: src/usr/local/www/pkg_edit.php:1198
+#: src/usr/local/www/pkg_edit.php:1214
msgid "Listen on All interfaces/ip addresses "
msgstr ""
-#: src/usr/local/www/pkg_edit.php:1202
+#: src/usr/local/www/pkg_edit.php:1218
msgid "loopback"
msgstr ""
-#: src/usr/local/www/pkg_edit.php:1486
-#: src/usr/local/www/interfaces_bridge_edit.php:437
-msgid "Show advanced options"
+#: src/usr/local/www/pkg_edit.php:1518
+msgid "Show Advanced Options"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:116
@@ -17321,13 +17563,13 @@ msgid "Visit official website"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:125
-#: src/usr/local/www/pkg_mgr_installed.php:169
+#: src/usr/local/www/pkg_mgr_installed.php:180
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:140
msgid "View changelog"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:136
-#: src/usr/local/www/pkg_mgr_installed.php:178
+#: src/usr/local/www/pkg_mgr_installed.php:191
msgid "Package Dependencies"
msgstr ""
@@ -17336,21 +17578,21 @@ msgid "Click to install"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:150
-#: src/usr/local/www/pkg_mgr_installed.php:194
+#: src/usr/local/www/pkg_mgr_installed.php:212
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:160
msgid "View more information"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:163 src/usr/local/www/pkg_mgr.php:168
-#: src/usr/local/www/pkg_mgr_install.php:246
-#: src/usr/local/www/pkg_mgr_installed.php:80
+#: src/usr/local/www/pkg_mgr_install.php:253
+#: src/usr/local/www/pkg_mgr_installed.php:247
msgid "Available Packages"
msgstr ""
-#: src/usr/local/www/pkg_mgr.php:167 src/usr/local/www/pkg_mgr_install.php:245
-#: src/usr/local/www/pkg_mgr_installed.php:75
-#: src/usr/local/www/pkg_mgr_installed.php:79
-#: src/usr/local/www/pkg_mgr_installed.php:96
+#: src/usr/local/www/pkg_mgr.php:167 src/usr/local/www/pkg_mgr_install.php:252
+#: src/usr/local/www/pkg_mgr_installed.php:105
+#: src/usr/local/www/pkg_mgr_installed.php:242
+#: src/usr/local/www/pkg_mgr_installed.php:246
#: src/usr/local/www/widgets/include/installed_packages.inc:4
msgid "Installed Packages"
msgstr ""
@@ -17370,236 +17612,243 @@ msgid ""
msgstr ""
#: src/usr/local/www/pkg_mgr.php:207
+#: src/usr/local/www/pkg_mgr_installed.php:253
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:180
msgid "Packages"
msgstr ""
#: src/usr/local/www/pkg_mgr.php:210
+#: src/usr/local/www/pkg_mgr_installed.php:256
msgid "Please wait while the list of packages is retrieved and formatted."
msgstr ""
#: src/usr/local/www/pkg_mgr.php:214
+#: src/usr/local/www/pkg_mgr_installed.php:260
msgid "Unable to retrieve package information."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:146
+#: src/usr/local/www/pkg_mgr_install.php:154
msgid "Failed"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:240
-#: src/usr/local/www/pkg_mgr_install.php:241
-#: src/usr/local/www/system_update_settings.php:117
+#: src/usr/local/www/pkg_mgr_install.php:247
+#: src/usr/local/www/pkg_mgr_install.php:248
+#: src/usr/local/www/system_update_settings.php:155
msgid "System Update"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:242
-#: src/usr/local/www/system_update_settings.php:99
-#: src/usr/local/www/system_update_settings.php:118
+#: src/usr/local/www/pkg_mgr_install.php:249
+#: src/usr/local/www/system_update_settings.php:111
+#: src/usr/local/www/system_update_settings.php:156
msgid "Update Settings"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:244
-#: src/usr/local/www/pkg_mgr_install.php:247
+#: src/usr/local/www/pkg_mgr_install.php:251
+#: src/usr/local/www/pkg_mgr_install.php:254
msgid "Package Installer"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:278
+#: src/usr/local/www/pkg_mgr_install.php:285
#, php-format
-msgid "Are you sure you want to reinstall package %s?"
+msgid "Confirmation Required to reinstall package %s."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:281
+#: src/usr/local/www/pkg_mgr_install.php:288
#, php-format
-msgid "Are you sure you want to remove package %s?"
+msgid "Confirmation Required to remove package %s."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:285
+#: src/usr/local/www/pkg_mgr_install.php:292
#, php-format
-msgid "Are you sure you want to install package %s?"
+msgid "Confirmation Required to install package %s."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:295
-msgid "Are you sure you want to reinstall all packages?"
+#: src/usr/local/www/pkg_mgr_install.php:302
+msgid "Confirmation Required to reinstall all packages."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:299
+#: src/usr/local/www/pkg_mgr_install.php:306
#, php-format
-msgid "Are you sure you want to upgrade package %1$s from %2$s to %3$s?"
+msgid "Confirmation Required to upgrade package %1$s from %2$s to %3$s."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:303
+#: src/usr/local/www/pkg_mgr_install.php:310
#, php-format
-msgid "Are you sure you want to update %s system?"
+msgid "Confirmation Required to update %s system."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:321
+#: src/usr/local/www/pkg_mgr_install.php:328
msgid "Current Base System"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:330
+#: src/usr/local/www/pkg_mgr_install.php:336
msgid "Latest Base System"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:341
-msgid "Confirm Update"
-msgstr ""
-
-#: src/usr/local/www/pkg_mgr_install.php:355
-msgid "System is up to date"
+#: src/usr/local/www/pkg_mgr_install.php:344
+msgid "Retrieving"
msgstr ""
#: src/usr/local/www/pkg_mgr_install.php:373
msgid "Unable to retrieve system versions."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:386
+#: src/usr/local/www/pkg_mgr_install.php:387
msgid "Package Removal"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:387
+#: src/usr/local/www/pkg_mgr_install.php:388
#, php-format
msgid "<b>%1$s</b> removal successfully completed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:388
+#: src/usr/local/www/pkg_mgr_install.php:389
#, php-format
msgid "<b>%1$s</b> removal failed!"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:389
+#: src/usr/local/www/pkg_mgr_install.php:390
#, php-format
msgid "Please wait while the removal of <b>%1$s</b> completes."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:391
+#: src/usr/local/www/pkg_mgr_install.php:392
msgid "Package Reinstallation"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:392
+#: src/usr/local/www/pkg_mgr_install.php:393
#, php-format
msgid "<b>%1$s</b> reinstallation successfully completed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:393
+#: src/usr/local/www/pkg_mgr_install.php:394
#, php-format
msgid "<b>%1$s</b> reinstallation failed!"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:394
+#: src/usr/local/www/pkg_mgr_install.php:395
#, php-format
msgid "Please wait while the reinstallation of <b>%1$s</b> completes."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:396
+#: src/usr/local/www/pkg_mgr_install.php:397
msgid "Package Installation"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:397
+#: src/usr/local/www/pkg_mgr_install.php:398
#, php-format
msgid "<b>%1$s</b> installation successfully completed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:398
+#: src/usr/local/www/pkg_mgr_install.php:399
#, php-format
msgid "<b>%1$s</b> installation failed!"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:399
+#: src/usr/local/www/pkg_mgr_install.php:400
#, php-format
msgid "Please wait while the installation of <b>%1$s</b> completes."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:425
+#: src/usr/local/www/pkg_mgr_install.php:426
msgid "Updating System"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:445
+#: src/usr/local/www/pkg_mgr_install.php:446
msgid "Creating restore point before package installation."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:519
+#: src/usr/local/www/pkg_mgr_install.php:482
+msgid "Up to date."
+msgstr ""
+
+#: src/usr/local/www/pkg_mgr_install.php:483
+msgid "Confirm Update"
+msgstr ""
+
+#: src/usr/local/www/pkg_mgr_install.php:525
msgid "System update successfully completed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:524
+#: src/usr/local/www/pkg_mgr_install.php:530
msgid "Reinstallation of all packages successfully completed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:537
+#: src/usr/local/www/pkg_mgr_install.php:543
msgid "Reinstallation of all packages failed."
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:547
-#: src/usr/local/www/pkg_mgr_install.php:550
+#: src/usr/local/www/pkg_mgr_install.php:553
+#: src/usr/local/www/pkg_mgr_install.php:556
msgid "This may take several minutes!"
msgstr ""
-#: src/usr/local/www/pkg_mgr_install.php:549
+#: src/usr/local/www/pkg_mgr_install.php:555
msgid "Please wait while the reinstallation of all packages completes."
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:93
-msgid "There are no packages currently installed."
-msgstr ""
-
-#: src/usr/local/www/pkg_mgr_installed.php:103
+#: src/usr/local/www/pkg_mgr_installed.php:112
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:83
msgid "Category"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:126
+#: src/usr/local/www/pkg_mgr_installed.php:135
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:103
msgid "Package is configured, but not installed!"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:132
+#: src/usr/local/www/pkg_mgr_installed.php:141
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:109
#, php-format
msgid "Newer than available (%s)"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:135
+#: src/usr/local/www/pkg_mgr_installed.php:144
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:113
#, php-format
msgid "Upgrade available to %s"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:141
+#: src/usr/local/www/pkg_mgr_installed.php:150
msgid "Up-to-date"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:143
+#: src/usr/local/www/pkg_mgr_installed.php:152
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:124
msgid "Error comparing version"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:186
+#: src/usr/local/www/pkg_mgr_installed.php:200
#, php-format
msgid "Remove package %s"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:188
+#: src/usr/local/www/pkg_mgr_installed.php:204
#, php-format
msgid "Update package %s"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:190
+#: src/usr/local/www/pkg_mgr_installed.php:207
#, php-format
msgid "Reinstall package %s"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:208
+#: src/usr/local/www/pkg_mgr_installed.php:228
msgid "Current"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:215
+#: src/usr/local/www/pkg_mgr_installed.php:235
msgid "Newer version available"
msgstr ""
-#: src/usr/local/www/pkg_mgr_installed.php:216
+#: src/usr/local/www/pkg_mgr_installed.php:236
msgid "Package is configured but not (fully) installed"
msgstr ""
+#: src/usr/local/www/pkg_mgr_installed.php:264
+msgid "There are no packages currently installed."
+msgstr ""
+
#: src/usr/local/www/restart_httpd.php:66
msgid "Restarting httpd"
msgstr ""
@@ -17620,179 +17869,179 @@ msgstr ""
msgid "Restarting mini_httpd"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:116
+#: src/usr/local/www/services_captiveportal.php:117
#, php-format
msgid "Captive Portal: zone %s: Restore default portal page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:136
+#: src/usr/local/www/services_captiveportal.php:137
#, php-format
msgid "Captive Portal: zone %s: Restore default error page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:156
+#: src/usr/local/www/services_captiveportal.php:157
#, php-format
msgid "Captive Portal: zone %s: Restore default logout page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:246
+#: src/usr/local/www/services_captiveportal.php:247
#: src/usr/local/www/services_captiveportal_zones_edit.php:83
-#: src/usr/local/www/services_captiveportal_zones_edit.php:126
+#: src/usr/local/www/services_captiveportal_zones_edit.php:123
msgid "Zone name"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:250
+#: src/usr/local/www/services_captiveportal.php:251
msgid "RADIUS Protocol"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:252
+#: src/usr/local/www/services_captiveportal.php:253
msgid "Primary RADIUS server IP address"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:261
+#: src/usr/local/www/services_captiveportal.php:262
#, php-format
msgid ""
"The captive portal cannot be used on interface %s since it is part of a "
"bridge."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:266
+#: src/usr/local/www/services_captiveportal.php:267
#, php-format
msgid ""
"The captive portal cannot be used on interface %s since it is used already "
"on %s instance."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:275
+#: src/usr/local/www/services_captiveportal.php:276
msgid "Certificate must be specified for HTTPS login."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:278
+#: src/usr/local/www/services_captiveportal.php:279
msgid "The HTTPS server name must be specified for HTTPS login."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:285
+#: src/usr/local/www/services_captiveportal.php:286
msgid "The timeout must be at least 1 minute."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:301
+#: src/usr/local/www/services_captiveportal.php:302
msgid ""
"Hard timeout must be less than or equal to the Default lease time set on "
"DHCP Server"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:308
+#: src/usr/local/www/services_captiveportal.php:309
msgid "The idle timeout must be at least 1 minute."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:312
+#: src/usr/local/www/services_captiveportal.php:313
msgid "The pass-through credit count must be a number or left blank."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:315
+#: src/usr/local/www/services_captiveportal.php:316
msgid ""
"The waiting period to restore pass-through credits must be above 0 hours."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:320
-#: src/usr/local/www/services_captiveportal.php:324
-#: src/usr/local/www/services_captiveportal.php:328
-#: src/usr/local/www/services_captiveportal.php:332
-#: src/usr/local/www/services_captiveportal_ip_edit.php:132
+#: src/usr/local/www/services_captiveportal.php:321
+#: src/usr/local/www/services_captiveportal.php:325
+#: src/usr/local/www/services_captiveportal.php:329
+#: src/usr/local/www/services_captiveportal.php:333
+#: src/usr/local/www/services_captiveportal_ip_edit.php:134
#, php-format
msgid "A valid IP address must be specified. [%s]"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:336
-#: src/usr/local/www/services_captiveportal.php:340
-#: src/usr/local/www/services_captiveportal.php:344
-#: src/usr/local/www/services_captiveportal.php:348
-#: src/usr/local/www/services_captiveportal.php:352
+#: src/usr/local/www/services_captiveportal.php:337
+#: src/usr/local/www/services_captiveportal.php:341
+#: src/usr/local/www/services_captiveportal.php:345
+#: src/usr/local/www/services_captiveportal.php:349
+#: src/usr/local/www/services_captiveportal.php:353
#, php-format
msgid "A valid port number must be specified. [%s]"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:356
+#: src/usr/local/www/services_captiveportal.php:357
msgid ""
"The maximum number of concurrent connections per client IP address may not "
"be larger than the global maximum."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:360
+#: src/usr/local/www/services_captiveportal.php:361
msgid ""
"The NAS-Identifier must be 3-253 characters long and should only contain "
"ASCII characters."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:563
-#: src/usr/local/www/services_captiveportal_filemanager.php:173
-#: src/usr/local/www/services_captiveportal_hostname.php:139
-#: src/usr/local/www/services_captiveportal_ip.php:132
-#: src/usr/local/www/services_captiveportal_mac.php:91
-#: src/usr/local/www/services_captiveportal_mac.php:197
-#: src/usr/local/www/services_captiveportal_mac_edit.php:101
-#: src/usr/local/www/services_captiveportal_vouchers.php:439
-msgid "MACs"
-msgstr ""
-
#: src/usr/local/www/services_captiveportal.php:564
#: src/usr/local/www/services_captiveportal_filemanager.php:174
#: src/usr/local/www/services_captiveportal_hostname.php:140
-#: src/usr/local/www/services_captiveportal_ip.php:94
#: src/usr/local/www/services_captiveportal_ip.php:133
-#: src/usr/local/www/services_captiveportal_ip_edit.php:98
+#: src/usr/local/www/services_captiveportal_mac.php:92
#: src/usr/local/www/services_captiveportal_mac.php:198
+#: src/usr/local/www/services_captiveportal_mac_edit.php:102
#: src/usr/local/www/services_captiveportal_vouchers.php:440
-msgid "Allowed IP Addresses"
+msgid "MACs"
msgstr ""
#: src/usr/local/www/services_captiveportal.php:565
#: src/usr/local/www/services_captiveportal_filemanager.php:175
-#: src/usr/local/www/services_captiveportal_hostname.php:95
#: src/usr/local/www/services_captiveportal_hostname.php:141
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:96
+#: src/usr/local/www/services_captiveportal_ip.php:95
#: src/usr/local/www/services_captiveportal_ip.php:134
+#: src/usr/local/www/services_captiveportal_ip_edit.php:99
#: src/usr/local/www/services_captiveportal_mac.php:199
#: src/usr/local/www/services_captiveportal_vouchers.php:441
-msgid "Allowed Hostnames"
+msgid "Allowed IP Addresses"
msgstr ""
#: src/usr/local/www/services_captiveportal.php:566
#: src/usr/local/www/services_captiveportal_filemanager.php:176
+#: src/usr/local/www/services_captiveportal_hostname.php:96
#: src/usr/local/www/services_captiveportal_hostname.php:142
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:98
#: src/usr/local/www/services_captiveportal_ip.php:135
#: src/usr/local/www/services_captiveportal_mac.php:200
-#: src/usr/local/www/services_captiveportal_vouchers.php:111
#: src/usr/local/www/services_captiveportal_vouchers.php:442
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:86
-#: src/usr/local/www/status_captiveportal_expire.php:114
-#: src/usr/local/www/status_captiveportal_test.php:122
-msgid "Vouchers"
+msgid "Allowed Hostnames"
msgstr ""
#: src/usr/local/www/services_captiveportal.php:567
-#: src/usr/local/www/services_captiveportal_filemanager.php:99
#: src/usr/local/www/services_captiveportal_filemanager.php:177
#: src/usr/local/www/services_captiveportal_hostname.php:143
#: src/usr/local/www/services_captiveportal_ip.php:136
#: src/usr/local/www/services_captiveportal_mac.php:201
+#: src/usr/local/www/services_captiveportal_vouchers.php:112
#: src/usr/local/www/services_captiveportal_vouchers.php:443
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:87
+#: src/usr/local/www/status_captiveportal_expire.php:115
+#: src/usr/local/www/status_captiveportal_test.php:123
+msgid "Vouchers"
+msgstr ""
+
+#: src/usr/local/www/services_captiveportal.php:568
+#: src/usr/local/www/services_captiveportal_filemanager.php:100
+#: src/usr/local/www/services_captiveportal_filemanager.php:178
+#: src/usr/local/www/services_captiveportal_hostname.php:144
+#: src/usr/local/www/services_captiveportal_ip.php:137
+#: src/usr/local/www/services_captiveportal_mac.php:202
+#: src/usr/local/www/services_captiveportal_vouchers.php:444
msgid "File Manager"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:573
+#: src/usr/local/www/services_captiveportal.php:574
msgid "Captive Portal Configuration"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:588
+#: src/usr/local/www/services_captiveportal.php:589
msgid "Select the interface(s) to enable for captive portal."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:592
+#: src/usr/local/www/services_captiveportal.php:593
msgid "Maximum concurrent connections"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:596
+#: src/usr/local/www/services_captiveportal.php:597
msgid ""
"Limits the number of concurrent connections to the captive portal HTTP(S) "
"server. This does not set how many users can be logged in to the captive "
@@ -17800,32 +18049,32 @@ msgid ""
"portal web server."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:601
+#: src/usr/local/www/services_captiveportal.php:602
msgid "Idle timeout (Minutes)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:604
+#: src/usr/local/www/services_captiveportal.php:605
msgid ""
"Clients will be disconnected after this amount of inactivity. They may log "
"in again immediately, though. Leave this field blank for no idle timeout."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:608
+#: src/usr/local/www/services_captiveportal.php:609
msgid "Hard timeout (Minutes)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:611
+#: src/usr/local/www/services_captiveportal.php:612
msgid ""
"Clients will be disconnected after this amount of time, regardless of "
"activity. They may log in again immediately, though. Leave this field blank "
"for no hard timeout (not recommended unless an idle timeout is set)."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:616
+#: src/usr/local/www/services_captiveportal.php:617
msgid "Pass-through credits per MAC address."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:619
+#: src/usr/local/www/services_captiveportal.php:620
msgid ""
"Allows passing through the captive portal without authentication a limited "
"number of times per MAC address. Once used up, the client can only log in "
@@ -17834,72 +18083,83 @@ msgid ""
"to be effective."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:625
+#: src/usr/local/www/services_captiveportal.php:626
+msgid "Waiting period to restore pass-through credits. (Hours)"
+msgstr ""
+
+#: src/usr/local/www/services_captiveportal.php:629
+msgid ""
+"Clients will have their available pass-through credits restored to the "
+"original count after this amount of time since using the first one. This "
+"must be above 0 hours if pass-through credits are enabled."
+msgstr ""
+
+#: src/usr/local/www/services_captiveportal.php:634
msgid "Reset waiting period"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:628
+#: src/usr/local/www/services_captiveportal.php:637
msgid ""
"If enabled, the waiting period is reset to the original duration if access "
"is attempted when all pass-through credits have already been exhausted."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:632
+#: src/usr/local/www/services_captiveportal.php:641
msgid "Logout popup window"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:635
+#: src/usr/local/www/services_captiveportal.php:644
msgid ""
"If enabled, a popup window will appear when clients are allowed through the "
"captive portal. This allows clients to explicitly disconnect themselves "
"before the idle or hard timeout occurs."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:640
+#: src/usr/local/www/services_captiveportal.php:649
msgid "Pre-authentication redirect URL"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:643
+#: src/usr/local/www/services_captiveportal.php:652
msgid ""
"Use this field to set $PORTAL_REDIRURL$ variable which can be accessed using "
-"your custom captive portal index.php page or error pages."
+"the custom captive portal index.php page or error pages."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:647
+#: src/usr/local/www/services_captiveportal.php:656
msgid "After authentication Redirection URL"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:650
+#: src/usr/local/www/services_captiveportal.php:659
msgid ""
"Clients will be redirected to this URL instead of the one they initially "
-"tried to access after they've authenticated"
+"tried to access after they've authenticated."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:654
+#: src/usr/local/www/services_captiveportal.php:663
msgid "Blocked MAC address redirect URL"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:657
+#: src/usr/local/www/services_captiveportal.php:666
msgid ""
"Blocked MAC addresses will be redirected to this URL when attempting access."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:661
+#: src/usr/local/www/services_captiveportal.php:670
msgid "Concurrent user logins"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:664
+#: src/usr/local/www/services_captiveportal.php:673
msgid ""
"If enabled only the most recent login per username will be active. "
"Subsequent logins will cause machines previously logged in with the same "
"username to be disconnected."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:669
+#: src/usr/local/www/services_captiveportal.php:678
msgid "MAC filtering"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:672
+#: src/usr/local/www/services_captiveportal.php:681
msgid ""
"If enabled no attempts will be made to ensure that the MAC address of "
"clients stays the same while they are logged in. This is required when the "
@@ -17908,99 +18168,99 @@ msgid ""
"authentication cannot be used."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:678
+#: src/usr/local/www/services_captiveportal.php:687
msgid "Pass-through MAC Auto Entry"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:697
+#: src/usr/local/www/services_captiveportal.php:706
msgid "Per-user bandwidth restriction"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:704
+#: src/usr/local/www/services_captiveportal.php:713
msgid "Default download (Kbit/s)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:711
+#: src/usr/local/www/services_captiveportal.php:720
msgid "Default upload (Kbit/s)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:714
+#: src/usr/local/www/services_captiveportal.php:723
msgid ""
"If this option is set, the captive portal will restrict each user who logs "
"in to the specified default bandwidth. RADIUS can override the default "
"settings. Leave empty or set to 0 for no limit."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:722
+#: src/usr/local/www/services_captiveportal.php:731
msgid "Authentication method"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:757
+#: src/usr/local/www/services_captiveportal.php:766
msgid "RADIUS protocol"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:796
+#: src/usr/local/www/services_captiveportal.php:805
msgid "Primary Authentication Source"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:799
-#: src/usr/local/www/services_captiveportal.php:852
+#: src/usr/local/www/services_captiveportal.php:808
+#: src/usr/local/www/services_captiveportal.php:861
msgid "Primary RADIUS server"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:823
-#: src/usr/local/www/services_captiveportal.php:876
+#: src/usr/local/www/services_captiveportal.php:832
+#: src/usr/local/www/services_captiveportal.php:885
msgid "Secondary RADIUS server"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:829
-#: src/usr/local/www/services_captiveportal.php:882
+#: src/usr/local/www/services_captiveportal.php:838
+#: src/usr/local/www/services_captiveportal.php:891
msgid "IP address of the RADIUS server to authenticate against."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:836
-#: src/usr/local/www/services_captiveportal.php:889
+#: src/usr/local/www/services_captiveportal.php:845
+#: src/usr/local/www/services_captiveportal.php:898
msgid "RADIUS port. Leave blank for default (1812)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:843
-#: src/usr/local/www/services_captiveportal.php:896
+#: src/usr/local/www/services_captiveportal.php:852
+#: src/usr/local/www/services_captiveportal.php:905
msgid ""
"RADIUS shared secret. Leave blank to not use a shared secret (not "
"recommended)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:849
+#: src/usr/local/www/services_captiveportal.php:858
msgid "Secondary Authentication Source"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:906
+#: src/usr/local/www/services_captiveportal.php:915
#: src/usr/local/www/services_pppoe_edit.php:403
-#: src/usr/local/www/vpn_l2tp.php:326
+#: src/usr/local/www/vpn_l2tp.php:323
msgid "RADIUS"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:913
+#: src/usr/local/www/services_captiveportal.php:922
msgid "Accounting Port"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:916
+#: src/usr/local/www/services_captiveportal.php:925
msgid "Leave blank to use the default port (1813)."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:918
+#: src/usr/local/www/services_captiveportal.php:927
msgid "Accounting updates"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:956
+#: src/usr/local/www/services_captiveportal.php:965
msgid "RADIUS Options"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:961
+#: src/usr/local/www/services_captiveportal.php:970
msgid "Reathentication"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:964
+#: src/usr/local/www/services_captiveportal.php:973
msgid ""
"If reauthentication is enabled, Access-Requests will be sent to the RADIUS "
"server for each user that is logged in every minute. If an Access-Reject is "
@@ -18008,41 +18268,41 @@ msgid ""
"immediately."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:969
+#: src/usr/local/www/services_captiveportal.php:978
msgid "RADIUS MAC Authentication"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:972
+#: src/usr/local/www/services_captiveportal.php:981
msgid ""
"If this option is enabled, the captive portal will try to authenticate users "
"by sending their MAC address as the username and the password entered below "
"to the RADIUS server."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:977
+#: src/usr/local/www/services_captiveportal.php:986
msgid "MAC authentication secret"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:984
+#: src/usr/local/www/services_captiveportal.php:993
msgid "RADIUS NAS IP Attribute"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:987
+#: src/usr/local/www/services_captiveportal.php:996
msgid "Choose the IP to use for calling station attribute."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:991
-#: src/usr/local/www/system_usermanager_settings.php:160
+#: src/usr/local/www/services_captiveportal.php:1000
+#: src/usr/local/www/system_usermanager_settings.php:216
msgid "Session timeout"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:994
+#: src/usr/local/www/services_captiveportal.php:1003
msgid ""
"When enabled, clients will be disconnected after the amount of time "
"retrieved from the RADIUS Session-Timeout attribute."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1001
+#: src/usr/local/www/services_captiveportal.php:1010
msgid ""
"If RADIUS type is set to Cisco, in Access-Requests the value of Calling-"
"Station-ID will be set to the client's IP address and the Called-Station-Id "
@@ -18050,83 +18310,83 @@ msgid ""
"client's MAC address and Called-Station-ID = pfSense's WAN IP address."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1007
+#: src/usr/local/www/services_captiveportal.php:1016
msgid "Accounting style"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1010
+#: src/usr/local/www/services_captiveportal.php:1019
msgid ""
"When enabled, data counts for RADIUS accounting packets will be taken from "
"the client perspective, not the NAS. Acct-Input-Octets will represent "
"download, and Acct-Output-Octets will represent upload."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1015
+#: src/usr/local/www/services_captiveportal.php:1024
msgid "NAS Identifier"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1018
+#: src/usr/local/www/services_captiveportal.php:1027
msgid ""
"Specify a NAS identifier to override the default value (pfSense.localdomain)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1024
+#: src/usr/local/www/services_captiveportal.php:1033
msgid "Single dash"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1024
+#: src/usr/local/www/services_captiveportal.php:1033
msgid "Unformatted"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1022
+#: src/usr/local/www/services_captiveportal.php:1031
msgid "MAC address format"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1025
+#: src/usr/local/www/services_captiveportal.php:1034
msgid ""
"This option changes the MAC address format used in the whole RADIUS system. "
-"Change this if you also need to change the username format for RADIUS MAC "
+"Change this if the username format also needs to be changed for RADIUS MAC "
"authentication.<br />Default: 00:11:22:33:44:55<br />Single dash: "
"001122-334455<br />IETF: 00-11-22-33-44-55<br />Cisco: 0011.2233.4455<br /"
">Unformatted: 001122334455"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1043
+#: src/usr/local/www/services_captiveportal.php:1052
msgid ""
"When enabled, the username and password will be transmitted over an HTTPS "
"connection to protect against eavesdroppers. A server name and certificate "
"must also be specified below."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1048
+#: src/usr/local/www/services_captiveportal.php:1057
msgid "HTTPS server name"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1051
+#: src/usr/local/www/services_captiveportal.php:1060
msgid ""
"This name will be used in the form action for the HTTPS POST and should "
-"match the Common Name (CN) in your certificate (otherwise, the client "
-"browser will most likely display a security warning). Make sure captive "
-"portal clients can resolve this name in DNS and verify on the client that "
-"the IP resolves to the correct interface IP on pfSense."
+"match the Common Name (CN) in the certificate (otherwise, the client browser "
+"will most likely display a security warning). Make sure captive portal "
+"clients can resolve this name in DNS and verify on the client that the IP "
+"resolves to the correct interface IP on pfSense."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1057
-#: src/usr/local/www/system_advanced_admin.php:371
+#: src/usr/local/www/services_captiveportal.php:1066
+#: src/usr/local/www/system_advanced_admin.php:372
msgid "SSL Certificate"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1060
+#: src/usr/local/www/services_captiveportal.php:1069
msgid ""
-"If no certificates are defined, you may define one here: <a href="
+"If no certificates are defined, one may be defined here: <a href="
"\"system_certmanager.php\">System &gt; Cert. Manager</a>"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1064
+#: src/usr/local/www/services_captiveportal.php:1073
msgid "HTTPS Forwards"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1067
+#: src/usr/local/www/services_captiveportal.php:1076
msgid ""
"If this option is set, attempts to connect to SSL/HTTPS (Port 443) sites "
"will not be forwarded to the captive portalThis prevents certificate errors "
@@ -18136,15 +18396,15 @@ msgid ""
"the HTTPS login page."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1074
+#: src/usr/local/www/services_captiveportal.php:1083
msgid "HTML Page Contents"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1079
+#: src/usr/local/www/services_captiveportal.php:1088
msgid "Portal page contents"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1082
+#: src/usr/local/www/services_captiveportal.php:1091
msgid ""
"Upload an HTML/PHP file for the portal page here (leave blank to keep the "
"current one). Make sure to include a form (POST to \"$PORTAL_ACTION$\") with "
@@ -18161,122 +18421,120 @@ msgid ""
"text&quot;&gt;<br />\n"
"\t\t\t &nbsp;&nbsp;&nbsp;&lt;input name=&quot;redirurl&quot; type=&quot;"
"hidden&quot; value=&quot;$PORTAL_REDIRURL$&quot;&gt;<br />\n"
+"\t\t\t &nbsp;&nbsp;&nbsp;&lt;input name=&quot;zone&quot; type=&quot;"
+"hidden&quot; value=&quot;$PORTAL_ZONE$&quot;&gt;<br />\n"
"\t\t\t &nbsp;&nbsp;&nbsp;&lt;input name=&quot;accept&quot; type=&quot;"
"submit&quot; value=&quot;Continue&quot;&gt;<br />\n"
"\t\t\t &lt;/form&gt;"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1107
-#: src/usr/local/www/services_captiveportal.php:1136
-#: src/usr/local/www/services_captiveportal.php:1163
-msgid "View current page"
+#: src/usr/local/www/services_captiveportal.php:1115
+msgid "Current Portal Page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1113
-#: src/usr/local/www/services_captiveportal.php:1142
-#: src/usr/local/www/services_captiveportal.php:1169
-msgid "Download current page"
+#: src/usr/local/www/services_captiveportal.php:1132
+#: src/usr/local/www/services_captiveportal.php:1166
+#: src/usr/local/www/services_captiveportal.php:1198
+msgid "Restore Default Page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1119
-msgid "Restore default portal page"
-msgstr ""
-
-#: src/usr/local/www/services_captiveportal.php:1126
+#: src/usr/local/www/services_captiveportal.php:1141
msgid "Auth error page contents"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1129
+#: src/usr/local/www/services_captiveportal.php:1144
msgid ""
-"The contents of the HTML/PHP file that you upload here are displayed when an "
-"authentication error occurs. You may include \"$PORTAL_MESSAGE$\", which "
+"The contents of the HTML/PHP file that is uploaded here are displayed when "
+"an authentication error occurs. It may include \"$PORTAL_MESSAGE$\", which "
"will be replaced by the error or reply messages from the RADIUS server, if "
"any."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1148
-msgid "Restore default error page"
+#: src/usr/local/www/services_captiveportal.php:1149
+msgid "Current Auth Error Page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1155
+#: src/usr/local/www/services_captiveportal.php:1175
msgid "Logout page contents"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1158
+#: src/usr/local/www/services_captiveportal.php:1178
msgid ""
-"The contents of the HTML/PHP file that you upload here are displayed on "
+"The contents of the HTML/PHP file that is uploaded here are displayed on "
"authentication success when the logout popup is enabled."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1175
-msgid "Restore default logout page"
+#: src/usr/local/www/services_captiveportal.php:1181
+msgid "Current Logout Page"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1189
+#: src/usr/local/www/services_captiveportal.php:1214
msgid ""
-"Don't forget to enable the DHCP server on your captive portal interface! "
-"Make sure that the default/maximum DHCP lease time is higher than the hard "
+"Don't forget to enable the DHCP server on the captive portal interface! Make "
+"sure that the default/maximum DHCP lease time is higher than the hard "
"timeout entered on this page. Also, the DNS Forwarder or Resolver must be "
"enabled for DNS lookups by unauthenticated clients to work."
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:128
+#: src/usr/local/www/services_captiveportal_filemanager.php:129
#, php-format
msgid "A file with the name '%s' already exists."
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:135
+#: src/usr/local/www/services_captiveportal_filemanager.php:136
#, php-format
msgid "The total size of all files uploaded may not exceed %s."
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:189
+#: src/usr/local/www/services_captiveportal_filemanager.php:187
msgid "Upload a New File"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:200
+#: src/usr/local/www/services_captiveportal_filemanager.php:198
msgid "File"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:212
+#: src/usr/local/www/services_captiveportal_filemanager.php:217
msgid "Installed Files"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:234
+#: src/usr/local/www/services_captiveportal_filemanager.php:237
msgid "Delete file"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:245
+#: src/usr/local/www/services_captiveportal_filemanager.php:248
msgid "Total"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:275
+#: src/usr/local/www/services_captiveportal_filemanager.php:278
#: src/usr/local/www/services_ntpd_gps.php:241
#: src/usr/local/www/services_ntpd_pps.php:160
msgid "Notes"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:277
+#: src/usr/local/www/services_captiveportal_filemanager.php:280
msgid ""
-"Any files that you upload here with the filename prefix of captiveportal- "
+"Any files that are uploaded here with the filename prefix of captiveportal- "
"will be made available in the root directory of the captive portal HTTP(S) "
-"server. You may reference them directly from your portal page HTML code "
-"using relative paths. Example: you've uploaded an image with the name "
-"'captiveportal-test.jpg' using the file manager. Then you can include it in "
-"your portal page like this:"
+"server. An icon file named favicon.ico may also be uploaded and will remain "
+"without prefix. They may be referenced directly from the portal page HTML "
+"code using relative paths. Example: An image uploaded with the name "
+"'captiveportal-test.jpg' using the file manager can then be included in the "
+"portal page like this:"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:283
+#: src/usr/local/www/services_captiveportal_filemanager.php:287
msgid ""
-"In addition, you can also upload .php files for execution.\tYou can pass the "
-"filename to your custom page from the initial page by using text similar to:"
+"In addition, .php files can also be uploaded for execution.\tThe filename "
+"can be passed to the custom page from the initial page by using text similar "
+"to:"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:285
+#: src/usr/local/www/services_captiveportal_filemanager.php:289
msgid "Acceptable usage policy"
msgstr ""
-#: src/usr/local/www/services_captiveportal_filemanager.php:286
+#: src/usr/local/www/services_captiveportal_filemanager.php:290
#, php-format
msgid "The total size limit for all files is %s."
msgstr ""
@@ -18284,116 +18542,116 @@ msgstr ""
#: src/usr/local/www/services_captiveportal_hostname.php:66
msgid ""
"Adding new hostnames will allow a DNS hostname access to/from the captive "
-"portal without being taken to the portal page.This can be used for a web "
+"portal without being taken to the portal page. This can be used for a web "
"server serving images for the portal page, or a DNS server on another "
"network, for example. By specifying <em>from</em> addresses, it may be used "
"to always allow pass-through access from a client behind the captive portal."
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname.php:170
+#: src/usr/local/www/services_captiveportal_hostname.php:171
msgid "Edit hostname"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname.php:171
+#: src/usr/local/www/services_captiveportal_hostname.php:172
msgid "Delete hostname"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname.php:179
+#: src/usr/local/www/services_captiveportal_hostname.php:180
#, php-format
msgid "All connections %sto%s the hostname are allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname.php:180
+#: src/usr/local/www/services_captiveportal_hostname.php:181
#, php-format
msgid "All connections %sfrom%s the hostname are allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname.php:181
-#: src/usr/local/www/services_captiveportal_ip.php:177
+#: src/usr/local/www/services_captiveportal_hostname.php:182
+#: src/usr/local/www/services_captiveportal_ip.php:178
#, php-format
msgid "All connections %sto or from%s are allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:127
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:129
msgid "Allowed Hostname"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:132
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:134
#, php-format
msgid "A valid Hostname must be specified. [%s]"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:136
-#: src/usr/local/www/services_captiveportal_ip_edit.php:140
-#: src/usr/local/www/services_captiveportal_mac_edit.php:151
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:138
+#: src/usr/local/www/services_captiveportal_ip_edit.php:142
+#: src/usr/local/www/services_captiveportal_mac_edit.php:152
msgid "Upload speed needs to be an integer"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:139
-#: src/usr/local/www/services_captiveportal_ip_edit.php:144
-#: src/usr/local/www/services_captiveportal_mac_edit.php:154
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:141
+#: src/usr/local/www/services_captiveportal_ip_edit.php:146
+#: src/usr/local/www/services_captiveportal_mac_edit.php:155
msgid "Download speed needs to be an integer"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:148
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:150
#, php-format
msgid "Hostname [%s] already allowed."
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:207
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:206
msgid "Captive Portal Hostname Settings"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:214
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:213
msgid ""
"Use \"From\" to always allow a Hostname through the captive portal (without "
"authentication). Use \"To\" to allow access from all clients (even non-"
"authenticated ones) behind the portal to this Hostname."
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:233
-#: src/usr/local/www/services_captiveportal_ip_edit.php:266
-#: src/usr/local/www/services_captiveportal_mac_edit.php:269
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:232
+#: src/usr/local/www/services_captiveportal_ip_edit.php:274
+#: src/usr/local/www/services_captiveportal_mac_edit.php:272
msgid "Bandwidth up"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:236
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:235
msgid "Enter a upload limit to be enforced on this Hostname in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:240
-#: src/usr/local/www/services_captiveportal_ip_edit.php:273
-#: src/usr/local/www/services_captiveportal_mac_edit.php:276
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:239
+#: src/usr/local/www/services_captiveportal_ip_edit.php:281
+#: src/usr/local/www/services_captiveportal_mac_edit.php:279
msgid "Bandwidth down"
msgstr ""
-#: src/usr/local/www/services_captiveportal_hostname_edit.php:243
+#: src/usr/local/www/services_captiveportal_hostname_edit.php:242
msgid "Enter a download limit to be enforced on this Hostname in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:144
+#: src/usr/local/www/services_captiveportal_ip.php:145
msgid "IP Addresses"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:165
+#: src/usr/local/www/services_captiveportal_ip.php:166
msgid "Edit IP"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:166
+#: src/usr/local/www/services_captiveportal_ip.php:167
msgid "Delete IP"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:175
+#: src/usr/local/www/services_captiveportal_ip.php:176
#, php-format
msgid "All connections %sto%s the address are allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:176
+#: src/usr/local/www/services_captiveportal_ip.php:177
#, php-format
msgid "All connections %sfrom%s the address are allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip.php:196
+#: src/usr/local/www/services_captiveportal_ip.php:197
msgid ""
"Adding allowed IP addresses will allow IP access to/from these addresses "
"through the captive portal without being taken to the portal page. This can "
@@ -18401,368 +18659,373 @@ msgid ""
"on another network, for example."
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:127
+#: src/usr/local/www/services_captiveportal_ip_edit.php:129
msgid "Allowed IP address"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:127
-#: src/usr/local/www/services_dhcp.php:832
-#: src/usr/local/www/services_dhcp.php:860
+#: src/usr/local/www/services_captiveportal_ip_edit.php:129
+#: src/usr/local/www/services_dhcp.php:828
+#: src/usr/local/www/services_dhcp.php:856
#: src/usr/local/www/services_pppoe_edit.php:376
msgid "Subnet mask"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:136
+#: src/usr/local/www/services_captiveportal_ip_edit.php:138
msgid "A valid subnet mask must be specified"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:148
-#: src/usr/local/www/services_captiveportal_mac_edit.php:157
+#: src/usr/local/www/services_captiveportal_ip_edit.php:150
+#: src/usr/local/www/services_captiveportal_mac_edit.php:158
msgid "Upload speed must be between 1 and 999999"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:152
-#: src/usr/local/www/services_captiveportal_mac_edit.php:160
+#: src/usr/local/www/services_captiveportal_ip_edit.php:154
+#: src/usr/local/www/services_captiveportal_mac_edit.php:161
msgid "Download speed must be between 1 and 999999"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:161
+#: src/usr/local/www/services_captiveportal_ip_edit.php:163
msgid "already allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:247
+#: src/usr/local/www/services_captiveportal_ip_edit.php:249
msgid "Edit Captive Portal IP Rule"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:261
+#: src/usr/local/www/services_captiveportal_ip_edit.php:262
+msgid "Enter a description here for reference only. (Not parsed)"
+msgstr ""
+
+#: src/usr/local/www/services_captiveportal_ip_edit.php:269
msgid ""
"Use \"From\" to always allow access to an address through the captive portal "
"(without authentication). Use \"To\" to allow access from all clients (even "
"non-authenticated ones) behind the portal to this IP."
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:269
+#: src/usr/local/www/services_captiveportal_ip_edit.php:277
msgid "Enter an upload limit to be enforced on this address in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_ip_edit.php:276
+#: src/usr/local/www/services_captiveportal_ip_edit.php:284
msgid "Enter a download limit to be enforced on this address in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:120
+#: src/usr/local/www/services_captiveportal_mac.php:121
msgid "No entry exists yet!"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:125
+#: src/usr/local/www/services_captiveportal_mac.php:126
msgid "Please set the zone on which the operation should be allowed"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:138
+#: src/usr/local/www/services_captiveportal_mac.php:139
msgid "No entry exists for this username:"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:159
+#: src/usr/local/www/services_captiveportal_mac.php:160
msgid "The entry was successfully deleted"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:161
+#: src/usr/local/www/services_captiveportal_mac.php:162
msgid "No entry exists for this mac address:"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:192
+#: src/usr/local/www/services_captiveportal_mac.php:193
msgid "The Captive Portal MAC address configuration has been changed."
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:232
+#: src/usr/local/www/services_captiveportal_mac.php:233
msgid "Edit MAC address"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:233
+#: src/usr/local/www/services_captiveportal_mac.php:234
msgid "Delete MAC address"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac.php:259
+#: src/usr/local/www/services_captiveportal_mac.php:260
msgid ""
"Adding MAC addresses as \"pass\" MACs allows them access through the captive "
"portal automatically without being taken to the portal page."
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:142
+#: src/usr/local/www/services_captiveportal_mac_edit.php:143
#, php-format
msgid ""
-"The MAC address %s belongs to a local interface, you cannot use it here."
+"The MAC address %s belongs to a local interface. It cannot be used here."
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:147
+#: src/usr/local/www/services_captiveportal_mac_edit.php:148
msgid "A valid MAC address must be specified"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:169
+#: src/usr/local/www/services_captiveportal_mac_edit.php:170
msgid "already exists"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:230
+#: src/usr/local/www/services_captiveportal_mac_edit.php:231
msgid "Edit MAC Address Rules"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:237
+#: src/usr/local/www/services_captiveportal_mac_edit.php:238
msgid "Choose what to do with packets coming from this MAC address."
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:257
+#: src/usr/local/www/services_captiveportal_mac_edit.php:260
msgid "6 hex octets separated by colons"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:265
-msgid "You may enter a description here for your reference (not parsed)"
+#: src/usr/local/www/services_captiveportal_mac_edit.php:268
+msgid ""
+"A description may be entered here for administrative reference (not parsed)"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:272
+#: src/usr/local/www/services_captiveportal_mac_edit.php:275
msgid "Enter an upload limit to be enforced on this MAC in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_mac_edit.php:279
+#: src/usr/local/www/services_captiveportal_mac_edit.php:282
msgid "Enter a download limit to be enforced on this MAC in Kbit/s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:106
+#: src/usr/local/www/services_captiveportal_vouchers.php:107
#, php-format
msgid "Submission on captiveportal page with unknown zone parameter: %s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:161
+#: src/usr/local/www/services_captiveportal_vouchers.php:162
msgid "Voucher invalid"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:164
+#: src/usr/local/www/services_captiveportal_vouchers.php:165
msgid "Voucher expired"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:187
+#: src/usr/local/www/services_captiveportal_vouchers.php:188
msgid "Cannot write private key file"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:209
+#: src/usr/local/www/services_captiveportal_vouchers.php:210
msgid "Need private RSA key to print vouchers"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "charset"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "rollbits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "ticketbits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "checksumbits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "publickey"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:243
+#: src/usr/local/www/services_captiveportal_vouchers.php:244
msgid "magic"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:246
-#: src/usr/local/www/services_captiveportal_vouchers.php:596
+#: src/usr/local/www/services_captiveportal_vouchers.php:247
+#: src/usr/local/www/services_captiveportal_vouchers.php:597
msgid "Synchronize Voucher Database IP"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:246
+#: src/usr/local/www/services_captiveportal_vouchers.php:247
msgid "Sync port"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:246
+#: src/usr/local/www/services_captiveportal_vouchers.php:247
msgid "Sync password"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:246
+#: src/usr/local/www/services_captiveportal_vouchers.php:247
msgid "Sync username"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:255
+#: src/usr/local/www/services_captiveportal_vouchers.php:256
msgid "Need at least 2 characters to create vouchers."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:258
+#: src/usr/local/www/services_captiveportal_vouchers.php:259
msgid "Double quotes aren't allowed."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:261
+#: src/usr/local/www/services_captiveportal_vouchers.php:262
msgid "',' aren't allowed."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:264
+#: src/usr/local/www/services_captiveportal_vouchers.php:265
msgid "# of Bits to store Roll Id needs to be between 1..31."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:267
+#: src/usr/local/www/services_captiveportal_vouchers.php:268
msgid "# of Bits to store Ticket Id needs to be between 1..16."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:270
+#: src/usr/local/www/services_captiveportal_vouchers.php:271
msgid "# of Bits to store checksum needs to be between 1..31."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:273
+#: src/usr/local/www/services_captiveportal_vouchers.php:274
msgid "This doesn't look like an RSA Public key."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:276
+#: src/usr/local/www/services_captiveportal_vouchers.php:277
msgid "This doesn't look like an RSA Private key."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:279
-msgid "You cannot sync the voucher database to this host (itself)."
+#: src/usr/local/www/services_captiveportal_vouchers.php:280
+msgid "The voucher database cannot be sync'd to this host (itself)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:353
+#: src/usr/local/www/services_captiveportal_vouchers.php:354
#, php-format
msgid "voucher XMLRPC sync data %s:%d"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:359
+#: src/usr/local/www/services_captiveportal_vouchers.php:360
#, php-format
msgid ""
"A communications error occurred while attempting CaptivePortalVoucherSync "
"XMLRPC sync with %s:%d (pfsense.exec_php)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:361
+#: src/usr/local/www/services_captiveportal_vouchers.php:362
msgid "Communications error occurred"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:366
+#: src/usr/local/www/services_captiveportal_vouchers.php:367
#, php-format
msgid ""
"An error code was received while attempting CaptivePortalVoucherSync XMLRPC "
"sync with %s:%d - Code %d: %s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:368
+#: src/usr/local/www/services_captiveportal_vouchers.php:369
msgid "Error code received"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:371
+#: src/usr/local/www/services_captiveportal_vouchers.php:372
#, php-format
msgid ""
"The Captive Portal voucher database has been synchronized with %s:%d "
"(pfsense.exec_php)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:377
+#: src/usr/local/www/services_captiveportal_vouchers.php:378
msgid "Could not synchronize the voucher database: Authentication Failed."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:411
+#: src/usr/local/www/services_captiveportal_vouchers.php:412
#, php-format
msgid "Voucher database has been synchronized from %1$s:%2$s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:449
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:217
+#: src/usr/local/www/services_captiveportal_vouchers.php:450
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:218
#: src/usr/local/www/status_captiveportal.php:142
-#: src/usr/local/www/status_captiveportal_expire.php:103
-#: src/usr/local/www/status_captiveportal_test.php:111
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:85
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:99
-#: src/usr/local/www/status_captiveportal_vouchers.php:135
+#: src/usr/local/www/status_captiveportal_expire.php:104
+#: src/usr/local/www/status_captiveportal_test.php:112
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:86
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:100
+#: src/usr/local/www/status_captiveportal_vouchers.php:136
msgid "Voucher Rolls"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:455
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:221
-msgid "Roll #"
-msgstr ""
-
#: src/usr/local/www/services_captiveportal_vouchers.php:456
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:110
-msgid "Minutes/Ticket"
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:222
+msgid "Roll #"
msgstr ""
#: src/usr/local/www/services_captiveportal_vouchers.php:457
#: src/usr/local/www/status_captiveportal_voucher_rolls.php:111
-msgid "# of Tickets"
+msgid "Minutes/Ticket"
msgstr ""
#: src/usr/local/www/services_captiveportal_vouchers.php:458
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:242
#: src/usr/local/www/status_captiveportal_voucher_rolls.php:112
+msgid "# of Tickets"
+msgstr ""
+
+#: src/usr/local/www/services_captiveportal_vouchers.php:459
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:243
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:113
msgid "Comment"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:482
+#: src/usr/local/www/services_captiveportal_vouchers.php:483
msgid "Edit voucher roll"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:483
+#: src/usr/local/www/services_captiveportal_vouchers.php:484
msgid "Delete voucher roll"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:484
+#: src/usr/local/www/services_captiveportal_vouchers.php:485
msgid "Export vouchers for this roll to a .csv file"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:510
-#: src/usr/local/www/services_captiveportal_vouchers.php:521
+#: src/usr/local/www/services_captiveportal_vouchers.php:511
+#: src/usr/local/www/services_captiveportal_vouchers.php:522
msgid "Create, Generate and Activate Rolls with Vouchers"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:526
+#: src/usr/local/www/services_captiveportal_vouchers.php:527
msgid "Voucher Public Key"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:528
+#: src/usr/local/www/services_captiveportal_vouchers.php:529
msgid ""
"Paste an RSA public key (64 Bit or smaller) in PEM format here. This key is "
"used to decrypt vouchers."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:532
+#: src/usr/local/www/services_captiveportal_vouchers.php:533
msgid "Voucher Private Key"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:534
+#: src/usr/local/www/services_captiveportal_vouchers.php:535
msgid ""
"Paste an RSA private key (64 Bit or smaller) in PEM format here. This key is "
"only used to generate encrypted vouchers and doesn't need to be available if "
"the vouchers have been generated offline."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:538
+#: src/usr/local/www/services_captiveportal_vouchers.php:539
msgid "Character set"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:541
+#: src/usr/local/www/services_captiveportal_vouchers.php:542
msgid ""
"Tickets are generated with the specified character set. It should contain "
"printable characters (numbers, lower case and upper case letters) that are "
"hard to confuse with others. Avoid e.g. 0/O and l/1."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:545
+#: src/usr/local/www/services_captiveportal_vouchers.php:546
msgid "# of Roll bits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:548
+#: src/usr/local/www/services_captiveportal_vouchers.php:549
msgid ""
"Reserves a range in each voucher to store the Roll # it belongs to. Allowed "
"range: 1..31. Sum of Roll+Ticket+Checksum bits must be one Bit less than the "
"RSA key size."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:552
+#: src/usr/local/www/services_captiveportal_vouchers.php:553
msgid "# of Ticket bits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:555
+#: src/usr/local/www/services_captiveportal_vouchers.php:556
msgid ""
"Reserves a range in each voucher to store the Ticket# it belongs to. Allowed "
"range: 1..16. Using 16 bits allows a roll to have up to 65535 vouchers. A "
@@ -18770,83 +19033,83 @@ msgid ""
"been used. A bit array for 65535 vouchers requires 8 KB of storage. "
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:561
+#: src/usr/local/www/services_captiveportal_vouchers.php:562
msgid "# of Checksum bits"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:564
+#: src/usr/local/www/services_captiveportal_vouchers.php:565
msgid ""
"Reserves a range in each voucher to store a simple checksum over Roll # and "
"Ticket#. Allowed range is 0..31."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:568
+#: src/usr/local/www/services_captiveportal_vouchers.php:569
msgid "Magic number"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:571
+#: src/usr/local/www/services_captiveportal_vouchers.php:572
msgid ""
"Magic number stored in every voucher. Verified during voucher check. Size "
"depends on how many bits are left by Roll+Ticket+Checksum bits. If all bits "
"are used, no magic number will be used and checked."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:576
+#: src/usr/local/www/services_captiveportal_vouchers.php:577
msgid "Invalid voucher message"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:579
+#: src/usr/local/www/services_captiveportal_vouchers.php:580
msgid ""
"Error message displayed for invalid vouchers on captive portal error page "
"($PORTAL_MESSAGE$)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:584
+#: src/usr/local/www/services_captiveportal_vouchers.php:585
msgid "Expired voucher message"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:587
+#: src/usr/local/www/services_captiveportal_vouchers.php:588
msgid ""
"Error message displayed for expired vouchers on captive portal error page "
"($PORTAL_MESSAGE$)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:591
+#: src/usr/local/www/services_captiveportal_vouchers.php:592
msgid "Voucher Database Synchronization"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:598
+#: src/usr/local/www/services_captiveportal_vouchers.php:599
msgid ""
"IP address of master nodes webConfigurator to synchronize voucher database "
"and used vouchers from.<br />NOTE: this should be setup on the slave nodes "
"and not the primary node!"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:603
+#: src/usr/local/www/services_captiveportal_vouchers.php:604
msgid "Voucher sync port"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:606
+#: src/usr/local/www/services_captiveportal_vouchers.php:607
msgid "The port of the master voucher node's webConfigurator. Example: 443 "
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:610
+#: src/usr/local/www/services_captiveportal_vouchers.php:611
msgid "Voucher sync username"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:613
+#: src/usr/local/www/services_captiveportal_vouchers.php:614
msgid "This is the username of the master voucher nodes webConfigurator."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:617
+#: src/usr/local/www/services_captiveportal_vouchers.php:618
msgid "Voucher sync password"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:620
+#: src/usr/local/www/services_captiveportal_vouchers.php:621
msgid "This is the password of the master voucher nodes webConfigurator."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:641
+#: src/usr/local/www/services_captiveportal_vouchers.php:642
msgid ""
"Changing any Voucher parameter (apart from managing the list of Rolls) on "
"this page will render existing vouchers useless if they were generated with "
@@ -18855,61 +19118,61 @@ msgid ""
"retrieved/synced from the master."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:677
+#: src/usr/local/www/services_captiveportal_vouchers.php:678
msgid "Generate new keys"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:124
-#: src/usr/local/www/services_dhcp.php:1192
-#: src/usr/local/www/services_dhcpv6.php:939
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:125
+#: src/usr/local/www/services_dhcp.php:1202
+#: src/usr/local/www/services_dhcpv6.php:949
msgid "Number"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:124
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:125
#: src/usr/local/www/services_unbound_advanced.php:343
msgid "minutes"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:134
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:135
#, php-format
msgid "Roll number %s already exists."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:140
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:141
#, php-format
msgid "Roll number must be numeric and less than %s"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:144
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:145
#, php-format
msgid "A roll has at least one voucher and less than %s."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:148
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:149
msgid "Each voucher must be good for at least 1 minute."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:172
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:173
#, php-format
msgid "All %1$s vouchers from Roll %2$s marked unused"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:224
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:225
#, php-format
msgid "Enter the Roll# (0..%d) found on top of the generated/printed vouchers"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:228
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:229
msgid "Minutes per ticket"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:231
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:232
msgid ""
"Defines the time in minutes that a user is allowed access. The clock starts "
"ticking the first time a voucher is used for authentication."
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:238
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:239
#, php-format
msgid ""
"Enter the number of vouchers (1..%d) found on top of the generated/printed "
@@ -18917,7 +19180,7 @@ msgid ""
"vouchers as unused again"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers_edit.php:245
+#: src/usr/local/www/services_captiveportal_vouchers_edit.php:246
msgid "Can be used to further identify this roll. Ignored by the system."
msgstr ""
@@ -18960,18 +19223,22 @@ msgstr ""
msgid "Zone [%s] already exists."
msgstr ""
-#: src/usr/local/www/services_captiveportal_zones_edit.php:122
+#: src/usr/local/www/services_captiveportal_zones_edit.php:119
msgid "Add Captive Portal Zone"
msgstr ""
-#: src/usr/local/www/services_captiveportal_zones_edit.php:127
+#: src/usr/local/www/services_captiveportal_zones_edit.php:124
msgid "Zone name. Can only contain letters, digits, and underscores (_)."
msgstr ""
-#: src/usr/local/www/services_captiveportal_zones_edit.php:131
+#: src/usr/local/www/services_captiveportal_zones_edit.php:128
msgid "Zone description"
msgstr ""
+#: src/usr/local/www/services_captiveportal_zones_edit.php:135
+msgid "Save & Continue"
+msgstr ""
+
#: src/usr/local/www/services_dhcp.php:268
#: src/usr/local/www/services_dhcpv6.php:249
msgid "Range begin"
@@ -19054,32 +19321,32 @@ msgstr ""
#: src/usr/local/www/services_dhcp.php:339
#: src/usr/local/www/services_dhcp_edit.php:302
#: src/usr/local/www/services_dhcpv6.php:329
-msgid "You must specify both a valid domain key and key name."
+msgid "Both a valid domain key and key name must be specified."
msgstr ""
#: src/usr/local/www/services_dhcp.php:345
#: src/usr/local/www/services_dhcp_edit.php:308
#: src/usr/local/www/services_dhcpv6.php:335
-#: src/usr/local/www/services_router_advertisements.php:195
+#: src/usr/local/www/services_router_advertisements.php:196
msgid "A valid domain search list must be specified."
msgstr ""
#: src/usr/local/www/services_dhcp.php:353
msgid ""
-"If you specify a mac allow list, it must contain only valid partial MAC "
+"If a mac allow list is specified, it must contain only valid partial MAC "
"addresses."
msgstr ""
#: src/usr/local/www/services_dhcp.php:356
msgid ""
-"If you specify a mac deny list, it must contain only valid partial MAC "
+"If a mac deny list is specified, it must contain only valid partial MAC "
"addresses."
msgstr ""
#: src/usr/local/www/services_dhcp.php:360
-#: src/usr/local/www/services_dhcp_edit.php:315
msgid ""
-"A valid IP address must be specified for the primary/secondary NTP servers."
+"A valid IP address or hostname must be specified for the primary/secondary "
+"NTP servers."
msgstr ""
#: src/usr/local/www/services_dhcp.php:363
@@ -19098,11 +19365,11 @@ msgid "A valid IP address must be specified for the network boot server."
msgstr ""
#: src/usr/local/www/services_dhcp.php:373
-msgid "You cannot use the network address in the starting subnet range."
+msgid "The network address cannot be used in the starting subnet range."
msgstr ""
#: src/usr/local/www/services_dhcp.php:376
-msgid "You cannot use the broadcast address in the ending subnet range."
+msgid "The broadcast address cannot be used in the ending subnet range."
msgstr ""
#: src/usr/local/www/services_dhcp.php:384
@@ -19112,7 +19379,7 @@ msgstr ""
#: src/usr/local/www/services_dhcp.php:400
msgid ""
-"Cannot enable static ARP when you have static map entries without IP "
+"Cannot enable static ARP when there are static map entries without IP "
"addresses. Ensure all static maps have IP addresses and try again."
msgstr ""
@@ -19188,7 +19455,7 @@ msgstr ""
#: src/usr/local/www/services_dhcpv6.php:391
#, php-format
msgid ""
-"You must disable the DHCP relay on the %s interface before enabling the DHCP "
+"The DHCP relay on the %s interface must be disabled before enabling the DHCP "
"server."
msgstr ""
@@ -19199,12 +19466,12 @@ msgid "The DHCP range cannot overlap any static DHCP mappings."
msgstr ""
#: src/usr/local/www/services_dhcp.php:688
-#: src/usr/local/www/status_dhcp_leases.php:495
+#: src/usr/local/www/status_dhcp_leases.php:498
msgid "Pool Start"
msgstr ""
#: src/usr/local/www/services_dhcp.php:689
-#: src/usr/local/www/status_dhcp_leases.php:496
+#: src/usr/local/www/status_dhcp_leases.php:499
msgid "Pool End"
msgstr ""
@@ -19215,7 +19482,7 @@ msgid ""
msgstr ""
#: src/usr/local/www/services_dhcp.php:750
-#: src/usr/local/www/services_dhcpv6.php:530
+#: src/usr/local/www/services_dhcpv6.php:528
msgid "The static mapping configuration has been changed."
msgstr ""
@@ -19225,141 +19492,145 @@ msgid ""
"IPv4 address. This system has none."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:795
+#: src/usr/local/www/services_dhcp.php:791
#, php-format
msgid "Enable DHCP server on %s interface"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:799
+#: src/usr/local/www/services_dhcp.php:795
msgid ""
"Editing pool-specific options. To return to the Interface, click its tab "
"above."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:804
+#: src/usr/local/www/services_dhcp.php:800
msgid "Deny unknown clients"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:811
+#: src/usr/local/www/services_dhcp.php:807
msgid "Ignore denied clients"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:814
+#: src/usr/local/www/services_dhcp.php:810
msgid ""
"This option is not compatible with failover and cannot be enabled when a "
"Failover Peer IP address is configured."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:820
+#: src/usr/local/www/services_dhcp.php:816
msgid "Pool Description"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:840
+#: src/usr/local/www/services_dhcp.php:836
msgid "In-use DHCP Pool Ranges:"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:853
+#: src/usr/local/www/services_dhcp.php:849
msgid "Available range"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:866
+#: src/usr/local/www/services_dhcp.php:862
#: src/usr/local/www/services_dhcpv6.php:657
msgid "Range"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:885
+#: src/usr/local/www/services_dhcp.php:881
msgid "Additional Pools"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:889
+#: src/usr/local/www/services_dhcp.php:885
msgid "Add pool"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:896
+#: src/usr/local/www/services_dhcp.php:894
msgid ""
-"If you need additional pools of addresses inside of this subnet outside the "
-"above Range, they may be specified here"
+"If additional pools of addresses are needed inside of this subnet outside "
+"the above Range, they may be specified here."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:912
-#: src/usr/local/www/vpn_openvpn_csc.php:563
+#: src/usr/local/www/services_dhcp.php:910
+#: src/usr/local/www/vpn_openvpn_csc.php:567
msgid "WINS servers"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:925
+#: src/usr/local/www/services_dhcp.php:923
msgid "DNS servers"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:927
+#: src/usr/local/www/services_dhcp.php:925
msgid ""
-"Leave blank to use the system default DNS servers, use this interface's IP "
-"if DNS Forwarder or Resolver is enabled, otherwise use the servers "
-"configured on the General page"
+"Leave blank to use the system default DNS servers: this interface's IP if "
+"DNS Forwarder or Resolver is enabled, otherwise the servers configured on "
+"the System / General Setup page."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:932
+#: src/usr/local/www/services_dhcp.php:930
msgid "Other Options"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:939
+#: src/usr/local/www/services_dhcp.php:937
msgid ""
"The default is to use the IP on this interface of the firewall as the "
"gateway. Specify an alternate gateway here if this is not the correct "
-"gateway for your network. Type \"none\" for no gateway assignment"
+"gateway for the network. Type \"none\" for no gateway assignment."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:943
-#: src/usr/local/www/services_dhcp_edit.php:565
+#: src/usr/local/www/services_dhcp.php:941
+#: src/usr/local/www/services_dhcp_edit.php:567
+#: src/usr/local/www/services_dhcpv6.php:721
+#: src/usr/local/www/services_dyndns_edit.php:135
+#: src/usr/local/www/services_dyndns_edit.php:330
msgid "Domain name"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:946
+#: src/usr/local/www/services_dhcp.php:944
msgid ""
"The default is to use the domain name of this system as the default domain "
-"name provided by DHCP. You may specify an alternate domain name here"
+"name provided by DHCP. An alternate domain name may be specified here."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:950
-#: src/usr/local/www/services_dhcp_edit.php:572
+#: src/usr/local/www/services_dhcp.php:948
+#: src/usr/local/www/services_dhcp_edit.php:574
#: src/usr/local/www/services_dhcpv6.php:728
-#: src/usr/local/www/services_router_advertisements.php:390
+#: src/usr/local/www/services_router_advertisements.php:421
msgid "Domain search list"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:953
-#: src/usr/local/www/services_dhcp_edit.php:575
+#: src/usr/local/www/services_dhcp.php:951
+#: src/usr/local/www/services_dhcp_edit.php:577
#: src/usr/local/www/services_dhcpv6.php:731
msgid ""
"The DHCP server can optionally provide a domain search list. Use the "
-"semicolon character as separator"
+"semicolon character as separator."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:957
+#: src/usr/local/www/services_dhcp.php:955
#: src/usr/local/www/services_dhcpv6.php:735
msgid "Default lease time"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:960
+#: src/usr/local/www/services_dhcp.php:958
msgid ""
"This is used for clients that do not ask for a specific expiration time. The "
-"default is 7200 seconds"
+"default is 7200 seconds."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:964
+#: src/usr/local/www/services_dhcp.php:962
msgid "Maximum lease time"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:967
+#: src/usr/local/www/services_dhcp.php:965
+#: src/usr/local/www/services_dhcp_edit.php:591
msgid ""
"This is the maximum lease time for clients that ask for a specific "
-"expiration time. The default is 86400 seconds"
+"expiration time. The default is 86400 seconds."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:972
+#: src/usr/local/www/services_dhcp.php:970
msgid "Failover peer IP"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:974
+#: src/usr/local/www/services_dhcp.php:972
msgid ""
"Leave blank to disable. Enter the interface IP address of the other machine. "
"Machines must be using CARP. Interface's advskew determines whether the "
@@ -19367,42 +19638,42 @@ msgid ""
"(and the other is &gt; 20)."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:981
-#: src/usr/local/www/services_dhcp.php:1315
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:93
+#: src/usr/local/www/services_dhcp.php:979
+#: src/usr/local/www/services_dhcp.php:1329
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:98
msgid "Static ARP"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:984
+#: src/usr/local/www/services_dhcp.php:982
msgid ""
"This option persists even if DHCP server is disabled. Only the machines "
"listed below will be able to communicate with the firewall on this interface."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:988
+#: src/usr/local/www/services_dhcp.php:986
msgid "Time format change"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:991
+#: src/usr/local/www/services_dhcp.php:989
msgid ""
"By default DHCP leases are displayed in UTC time.\tBy checking this box DHCP "
"lease time will be displayed in local time and set to the time zone "
-"selected. This will be used for all DHCP interfaces lease time"
+"selected. This will be used for all DHCP interfaces lease time."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:995
+#: src/usr/local/www/services_dhcp.php:993
msgid "Statistics graphs"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:998
+#: src/usr/local/www/services_dhcp.php:996
msgid ""
"Enable this to add DHCP leases statistics to the RRD graphs. Disabled by "
"default."
msgstr ""
#: src/usr/local/www/services_dhcp.php:1023
-#: src/usr/local/www/services_dhcp_edit.php:612
-#: src/usr/local/www/services_dhcpv6.php:779
+#: src/usr/local/www/services_dhcp_edit.php:616
+#: src/usr/local/www/services_dhcpv6.php:781
msgid "DDNS Domain"
msgstr ""
@@ -19417,7 +19688,7 @@ msgid "Primary DDNS address"
msgstr ""
#: src/usr/local/www/services_dhcp.php:1033
-msgid "Primary domain name server IP address for the dynamic domain name"
+msgid "Primary domain name server IP address for the dynamic domain name."
msgstr ""
#: src/usr/local/www/services_dhcp.php:1037
@@ -19427,7 +19698,7 @@ msgstr ""
#: src/usr/local/www/services_dhcp.php:1040
msgid ""
"Dynamic DNS domain key name which will be used to register client names in "
-"the DNS server"
+"the DNS server."
msgstr ""
#: src/usr/local/www/services_dhcp.php:1044
@@ -19437,188 +19708,188 @@ msgstr ""
#: src/usr/local/www/services_dhcp.php:1047
msgid ""
"Dynamic DNS domain key secret which will be used to register client names in "
-"the DNS server"
+"the DNS server."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1058
+#: src/usr/local/www/services_dhcp.php:1060
msgid "MAC address control"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1064
+#: src/usr/local/www/services_dhcp.php:1066
msgid "MAC Allow"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1067
+#: src/usr/local/www/services_dhcp.php:1069
msgid ""
"List of partial MAC addresses to allow, comma separated, no spaces, e.g.: "
"00:00:00,01:E5:FF"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1071
+#: src/usr/local/www/services_dhcp.php:1073
msgid "MAC Deny"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1074
+#: src/usr/local/www/services_dhcp.php:1076
msgid ""
"List of partial MAC addresses to deny access, comma separated, no spaces, e."
"g.: 00:00:00,01:E5:FF"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1091
-#: src/usr/local/www/services_dhcp_edit.php:653
-#: src/usr/local/www/services_dhcpv6.php:840
-#: src/usr/local/www/vpn_openvpn_server.php:1080
+#: src/usr/local/www/services_dhcp.php:1095
+#: src/usr/local/www/services_dhcp_edit.php:659
+#: src/usr/local/www/services_dhcpv6.php:844
+#: src/usr/local/www/vpn_openvpn_server.php:1085
msgid "NTP Server 1"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1097
-#: src/usr/local/www/services_dhcp_edit.php:661
-#: src/usr/local/www/services_dhcpv6.php:848
-#: src/usr/local/www/vpn_openvpn_server.php:1087
+#: src/usr/local/www/services_dhcp.php:1101
+#: src/usr/local/www/services_dhcp_edit.php:667
+#: src/usr/local/www/services_dhcpv6.php:852
+#: src/usr/local/www/vpn_openvpn_server.php:1092
msgid "NTP Server 2"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1110
+#: src/usr/local/www/services_dhcp.php:1116
msgid "TFTP"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1116
-#: src/usr/local/www/services_dhcp_edit.php:685
+#: src/usr/local/www/services_dhcp.php:1122
+#: src/usr/local/www/services_dhcp_edit.php:693
msgid "TFTP Server"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1118
+#: src/usr/local/www/services_dhcp.php:1124
msgid ""
-"Leave blank to disable. Enter a full hostname or IP for the TFTP server"
+"Leave blank to disable. Enter a full hostname or IP for the TFTP server."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1129
-#: src/usr/local/www/services_dhcpv6.php:866
+#: src/usr/local/www/services_dhcp.php:1137
+#: src/usr/local/www/services_dhcpv6.php:872
msgid "LDAP"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1135
+#: src/usr/local/www/services_dhcp.php:1143
msgid "LDAP Server URI"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1138
+#: src/usr/local/www/services_dhcp.php:1146
msgid ""
"Leave blank to disable. Enter a full URI for the LDAP server in the form "
"ldap://ldap.example.com/dc=example,dc=com "
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1151
-#: src/usr/local/www/services_dhcp.php:1155
-#: src/usr/local/www/services_dhcpv6.php:911
+#: src/usr/local/www/services_dhcp.php:1159
+#: src/usr/local/www/services_dhcp.php:1165
+#: src/usr/local/www/services_dhcpv6.php:921
msgid "Additional BOOTP/DHCP Options"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1160
+#: src/usr/local/www/services_dhcp.php:1170
msgid ""
-"Enter the DHCP option number and the value for each item you would like to "
-"include in the DHCP lease information."
+"Enter the DHCP option number and the value for each item to include in the "
+"DHCP lease information."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1161
+#: src/usr/local/www/services_dhcp.php:1171
#, php-format
msgid "For a list of available options please visit this %1$s URL%2$s"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1169
+#: src/usr/local/www/services_dhcp.php:1179
msgid "Text"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1169
+#: src/usr/local/www/services_dhcp.php:1179
msgid "String"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1169
+#: src/usr/local/www/services_dhcp.php:1179
msgid "Boolean"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1170
+#: src/usr/local/www/services_dhcp.php:1180
msgid "Unsigned 8-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1170
+#: src/usr/local/www/services_dhcp.php:1180
msgid "Unsigned 16-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1170
+#: src/usr/local/www/services_dhcp.php:1180
msgid "Unsigned 32-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1171
+#: src/usr/local/www/services_dhcp.php:1181
msgid "Signed 8-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1171
+#: src/usr/local/www/services_dhcp.php:1181
msgid "Signed 16-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1171
+#: src/usr/local/www/services_dhcp.php:1181
msgid "Signed 32-bit integer"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1171
+#: src/usr/local/www/services_dhcp.php:1181
msgid "IP address or host"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1184
+#: src/usr/local/www/services_dhcp.php:1194
msgid "Option"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1231
+#: src/usr/local/www/services_dhcp.php:1245
msgid "Network Booting"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1242
+#: src/usr/local/www/services_dhcp.php:1256
msgid "Next Server"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1244
+#: src/usr/local/www/services_dhcp.php:1258
msgid "Enter the IP address of the next server"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1248
+#: src/usr/local/www/services_dhcp.php:1262
msgid "Default BIOS file name"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1255
+#: src/usr/local/www/services_dhcp.php:1269
msgid "UEFI 32 bit file name"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1262
+#: src/usr/local/www/services_dhcp.php:1276
msgid "UEFI 64 bit file name"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1265
+#: src/usr/local/www/services_dhcp.php:1279
msgid ""
-"You need both a filename and a boot server configured for this to work! You "
-"will need all three filenames and a boot server configured for UEFI to work! "
+"Both a filename and a boot server must be configured for this to work! All "
+"three filenames and a configured boot server are necessary for UEFI to work! "
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1270
+#: src/usr/local/www/services_dhcp.php:1284
#: src/usr/local/www/services_dhcpv6_edit.php:289
msgid "Root path"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1273
+#: src/usr/local/www/services_dhcp.php:1287
msgid "string-format: iscsi:(servername):(protocol):(port):(LUN):targetname "
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1310
+#: src/usr/local/www/services_dhcp.php:1324
msgid "DHCP Static Mappings for this Interface"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1350
-#: src/usr/local/www/services_dhcpv6.php:1030
-#: src/usr/local/www/status_dhcp_leases.php:470
+#: src/usr/local/www/services_dhcp.php:1364
+#: src/usr/local/www/services_dhcpv6.php:1044
+#: src/usr/local/www/status_dhcp_leases.php:473
msgid "Edit static mapping"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1351
-#: src/usr/local/www/services_dhcpv6.php:1031
+#: src/usr/local/www/services_dhcp.php:1365
+#: src/usr/local/www/services_dhcpv6.php:1045
msgid "Delete static mapping"
msgstr ""
@@ -19635,13 +19906,13 @@ msgstr ""
#: src/usr/local/www/services_dhcpv6_edit.php:154
#: src/usr/local/www/services_dnsmasq_edit.php:119
#: src/usr/local/www/services_unbound_host_edit.php:120
-#: src/usr/local/www/system.php:170
+#: src/usr/local/www/system.php:171
msgid ""
"A valid hostname is specified, but the domain name part should be omitted"
msgstr ""
#: src/usr/local/www/services_dhcp_edit.php:217
-msgid "Static ARP is enabled. You must specify an IP address."
+msgid "Static ARP is enabled. An IP address must be specified."
msgstr ""
#: src/usr/local/www/services_dhcp_edit.php:234
@@ -19676,174 +19947,173 @@ msgstr ""
msgid "The IP address cannot be the %s broadcast address."
msgstr ""
+#: src/usr/local/www/services_dhcp_edit.php:315
+msgid ""
+"A valid IP address must be specified for the primary/secondary NTP servers."
+msgstr ""
+
#: src/usr/local/www/services_dhcp_edit.php:414
#: src/usr/local/www/services_dhcpv6_edit.php:234
msgid "Edit Static Mapping"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:445
+#: src/usr/local/www/services_dhcp_edit.php:447
msgid "MAC address (6 hex octets separated by colons)"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:450
+#: src/usr/local/www/services_dhcp_edit.php:452
msgid "Client Identifier"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:459
+#: src/usr/local/www/services_dhcp_edit.php:461
msgid ""
"If an IPv4 address is entered, the address must be outside of the pool.<br /"
">If no IPv4 address is given, one will be dynamically allocated from the "
"pool."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:467
+#: src/usr/local/www/services_dhcp_edit.php:469
#: src/usr/local/www/services_dhcpv6_edit.php:270
msgid "Name of the host, without domain part."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:472
+#: src/usr/local/www/services_dhcp_edit.php:474
#: src/usr/local/www/services_dhcpv6_edit.php:282
msgid "Netboot filename"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:475
+#: src/usr/local/www/services_dhcp_edit.php:477
#: src/usr/local/www/services_dhcpv6_edit.php:285
msgid ""
"Name of the file that should be loaded when this host boots off of the "
"network, overrides setting on main page."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:479
+#: src/usr/local/www/services_dhcp_edit.php:481
msgid "Root Path"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:482
+#: src/usr/local/www/services_dhcp_edit.php:484
msgid "Enter the root-path-string, overrides setting on main page."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:494
+#: src/usr/local/www/services_dhcp_edit.php:496
msgid "ARP Table Static Entry"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:499
+#: src/usr/local/www/services_dhcp_edit.php:501
#: src/usr/local/www/vpn_ipsec_mobile.php:665
msgid "WINS Servers"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:518
+#: src/usr/local/www/services_dhcp_edit.php:520
#: src/usr/local/www/services_dhcpv6.php:704
#: src/usr/local/www/services_pppoe_edit.php:390
#: src/usr/local/www/vpn_ipsec_mobile.php:640
-#: src/usr/local/www/vpn_openvpn_csc.php:471
+#: src/usr/local/www/vpn_openvpn_csc.php:475
msgid "DNS Servers"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:552
+#: src/usr/local/www/services_dhcp_edit.php:554
msgid ""
"Note: leave blank to use the system default DNS servers - this interface's "
"IP if DNS Forwarder or Resolver is enabled, otherwise the servers configured "
"on the General page."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:561
+#: src/usr/local/www/services_dhcp_edit.php:563
msgid ""
"The default is to use the IP on this interface of the firewall as the "
"gateway. Specify an alternate gateway here if this is not the correct "
-"gateway for your network."
+"gateway for the network."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:568
+#: src/usr/local/www/services_dhcp_edit.php:570
#: src/usr/local/www/services_dhcpv6.php:724
msgid ""
"The default is to use the domain name of this system as the default domain "
-"name provided by DHCP. You may specify an alternate domain name here. "
+"name provided by DHCP. An alternate domain name may be specified here. "
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:579
+#: src/usr/local/www/services_dhcp_edit.php:581
msgid "Default lease time (Seconds)"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:582
+#: src/usr/local/www/services_dhcp_edit.php:584
msgid ""
"Used for clients that do not ask for a specific expiration time. The default "
"is 7200 seconds."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:586
+#: src/usr/local/www/services_dhcp_edit.php:588
msgid "Maximum lease time (Seconds)"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:589
-msgid ""
-"This is the maximum lease time for clients that ask for a specific "
-"expiration time. The default is 86400 seconds."
-msgstr ""
-
-#: src/usr/local/www/services_dhcp_edit.php:605
-#: src/usr/local/www/services_dhcpv6.php:772
+#: src/usr/local/www/services_dhcp_edit.php:609
+#: src/usr/local/www/services_dhcpv6.php:774
#: src/usr/local/www/services_dnsmasq.php:244
-#: src/usr/local/www/services_unbound.php:352
+#: src/usr/local/www/services_unbound.php:358
msgid "DHCP Registration"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:615
-#: src/usr/local/www/services_dhcpv6.php:782
+#: src/usr/local/www/services_dhcp_edit.php:619
+#: src/usr/local/www/services_dhcpv6.php:784
msgid ""
"Leave blank to disable dynamic DNS registration. Enter the dynamic DNS "
"domain which will be used to register client names in the DNS server."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:619
-#: src/usr/local/www/services_dhcpv6.php:786
+#: src/usr/local/www/services_dhcp_edit.php:623
+#: src/usr/local/www/services_dhcpv6.php:788
msgid "DDNS Server IP"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:621
-#: src/usr/local/www/services_dhcpv6.php:788
+#: src/usr/local/www/services_dhcp_edit.php:625
+#: src/usr/local/www/services_dhcpv6.php:790
msgid ""
"Enter the primary domain name server IP address for the dynamic domain name."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:625
-#: src/usr/local/www/services_dhcpv6.php:792
+#: src/usr/local/www/services_dhcp_edit.php:629
+#: src/usr/local/www/services_dhcpv6.php:794
msgid "DDNS Domain Key name"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:628
-#: src/usr/local/www/services_dhcpv6.php:795
+#: src/usr/local/www/services_dhcp_edit.php:632
+#: src/usr/local/www/services_dhcpv6.php:797
msgid ""
"Enter the dynamic DNS domain key name which will be used to register client "
"names in the DNS server."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:632
-#: src/usr/local/www/services_dhcpv6.php:799
+#: src/usr/local/www/services_dhcp_edit.php:636
+#: src/usr/local/www/services_dhcpv6.php:801
msgid "DDNS Domain Key secret"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:635
-#: src/usr/local/www/services_dhcpv6.php:802
+#: src/usr/local/www/services_dhcp_edit.php:639
+#: src/usr/local/www/services_dhcpv6.php:804
msgid ""
"Enter the dynamic DNS domain key secret which will be used to register "
"client names in the DNS server."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:645
-#: src/usr/local/www/services_dhcpv6.php:832
+#: src/usr/local/www/services_dhcp_edit.php:651
+#: src/usr/local/www/services_dhcpv6.php:836
msgid "NTP servers"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:649
-#: src/usr/local/www/services_dhcpv6.php:836
-#: src/usr/local/www/vpn_openvpn_csc.php:512
+#: src/usr/local/www/services_dhcp_edit.php:655
+#: src/usr/local/www/services_dhcpv6.php:840
+#: src/usr/local/www/vpn_openvpn_csc.php:516
msgid "NTP Servers"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:679
+#: src/usr/local/www/services_dhcp_edit.php:687
msgid "TFTP servers"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:688
+#: src/usr/local/www/services_dhcp_edit.php:696
msgid ""
"Leave blank to disable. Enter a full hostname or IP for the TFTP server."
msgstr ""
@@ -19922,7 +20192,7 @@ msgid "A valid IPv6 address must be specified for the gateway."
msgstr ""
#: src/usr/local/www/services_dhcpv6.php:312
-#: src/usr/local/www/services_router_advertisements.php:189
+#: src/usr/local/www/services_router_advertisements.php:190
msgid "A valid IPv6 address must be specified for each of the DNS servers."
msgstr ""
@@ -19956,15 +20226,15 @@ msgid ""
"while the DHCPv6 Relay is enabled on any interface."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:581
+#: src/usr/local/www/services_dhcpv6.php:579
msgid ""
"The DHCPv6 Server can only be enabled on interfaces configured with a static "
"IPv6 address. This system has none."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:590
-#: src/usr/local/www/services_router_advertisements.php:247
-#: src/usr/local/www/services_router_advertisements.php:289
+#: src/usr/local/www/services_dhcpv6.php:588
+#: src/usr/local/www/services_router_advertisements.php:249
+#: src/usr/local/www/services_router_advertisements.php:291
msgid "Router Advertisements"
msgstr ""
@@ -19997,7 +20267,7 @@ msgstr ""
#: src/usr/local/www/services_dhcpv6.php:702
msgid ""
-"You can define a Prefix range here for DHCP Prefix Delegation. This allows "
+"A Prefix range can be defined here for DHCP Prefix Delegation. This allows "
"for assigning networks to subrouters. The start and end of the range must "
"end on boundaries of the prefix delegation size."
msgstr ""
@@ -20008,12 +20278,6 @@ msgid ""
"DNS forwarder is enabled, or the servers configured on the \"General\" page."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:721
-#: src/usr/local/www/services_dyndns_edit.php:135
-#: src/usr/local/www/services_dyndns_edit.php:330
-msgid "Domain Name"
-msgstr ""
-
#: src/usr/local/www/services_dhcpv6.php:738
msgid ""
"Lease time in seconds. Used for clients that do not ask for a specific "
@@ -20041,20 +20305,20 @@ msgid ""
"selected. This will be used for all DHCPv6 interfaces lease time."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:809
+#: src/usr/local/www/services_dhcpv6.php:811
#: src/usr/local/www/services_unbound_acls.php:265
msgid "Allow"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:811
+#: src/usr/local/www/services_dhcpv6.php:813
msgid "Ignore"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:806
+#: src/usr/local/www/services_dhcpv6.php:808
msgid "DDNS Client Updates"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:812
+#: src/usr/local/www/services_dhcpv6.php:814
msgid ""
"How Forward entries are handled when client indicates they wish to update "
"DNS. Allow prevents DHCP from updating Forward entries, Deny indicates that "
@@ -20063,49 +20327,49 @@ msgid ""
"using a different domain name."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:819
+#: src/usr/local/www/services_dhcpv6.php:821
msgid "DDNS Reverse"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:872
+#: src/usr/local/www/services_dhcpv6.php:878
msgid "LDAP URI"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:885
-#: src/usr/local/www/services_dhcpv6.php:891
+#: src/usr/local/www/services_dhcpv6.php:893
+#: src/usr/local/www/services_dhcpv6.php:899
msgid "Network booting"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:898
+#: src/usr/local/www/services_dhcpv6.php:906
msgid "Bootfile URL"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:962
+#: src/usr/local/www/services_dhcpv6.php:974
msgid "Add Option"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:983
+#: src/usr/local/www/services_dhcpv6.php:997
#, php-format
msgid ""
-"The DNS servers entered in %1$sSystem: General setup%3$s (or the %2$sDNS "
+"The DNS servers entered in %1$sSystem: General Setup%3$s (or the %2$sDNS "
"forwarder%3$s if enabled) will be assigned to clients by the DHCP server."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:989
+#: src/usr/local/www/services_dhcpv6.php:1003
#, php-format
msgid ""
"The DHCP lease table can be viewed on the %1$sStatus: DHCPv6 leases%2$s page."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:997
+#: src/usr/local/www/services_dhcpv6.php:1011
msgid "DHCPv6 Static Mappings for this Interface"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:1002
+#: src/usr/local/www/services_dhcpv6.php:1016
#: src/usr/local/www/services_dhcpv6_edit.php:141
#: src/usr/local/www/services_dhcpv6_edit.php:249
#: src/usr/local/www/status_dhcpv6_leases.php:459
-#: src/usr/local/www/status_dhcpv6_leases.php:553
+#: src/usr/local/www/status_dhcpv6_leases.php:556
msgid "DUID"
msgstr ""
@@ -20126,8 +20390,8 @@ msgid "Enter a DUID in the following format: "
msgstr ""
#: src/usr/local/www/services_dhcpv6_edit.php:253
-#: src/usr/local/www/pkg_edit.php:1305 src/usr/local/www/pkg_edit.php:1311
-#: src/usr/local/www/pkg_edit.php:1316
+#: src/usr/local/www/pkg_edit.php:1333 src/usr/local/www/pkg_edit.php:1339
+#: src/usr/local/www/pkg_edit.php:1344
msgid "<br />"
msgstr ""
@@ -20179,8 +20443,8 @@ msgid ""
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:141
-#: src/usr/local/www/system_advanced_admin.php:132
-msgid "You must specify a valid port number"
+#: src/usr/local/www/services_unbound.php:180
+msgid "A valid port number must be specified."
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:160
@@ -20196,7 +20460,7 @@ msgid "General DNS Forwarder Options"
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:256
-#: src/usr/local/www/services_unbound.php:361
+#: src/usr/local/www/services_unbound.php:367
msgid "Static DHCP"
msgstr ""
@@ -20206,17 +20470,17 @@ msgstr ""
#: src/usr/local/www/services_dnsmasq.php:275
#: src/usr/local/www/services_dnsmasq.php:279
-#: src/usr/local/www/services_unbound.php:345
+#: src/usr/local/www/services_unbound.php:351
msgid "DNS Query Forwarding"
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:309
-#: src/usr/local/www/services_unbound.php:302
+#: src/usr/local/www/services_unbound.php:308
msgid "Listen Port"
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:313
-#: src/usr/local/www/services_unbound.php:306
+#: src/usr/local/www/services_unbound.php:312
msgid ""
"The port used for responding to DNS queries. It should normally be left "
"blank unless another service needs to bind to TCP/UDP port 53."
@@ -20243,107 +20507,91 @@ msgid ""
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:337
-#: src/usr/local/www/services_unbound.php:370
-#: src/usr/local/www/services_unbound.php:376
-#: src/usr/local/www/services_unbound.php:382
+#: src/usr/local/www/services_unbound.php:375
+#: src/usr/local/www/services_unbound.php:389
#: src/usr/local/www/vpn_openvpn_client.php:777
-#: src/usr/local/www/vpn_openvpn_server.php:1158
+#: src/usr/local/www/vpn_openvpn_server.php:1163
msgid "Custom options"
msgstr ""
#: src/usr/local/www/services_dnsmasq.php:339
msgid ""
-"Enter any additional options you would like to add to the dnsmasq "
-"configuration here, separated by a space or newline"
+"Enter any additional options to add to the dnsmasq configuration here, "
+"separated by a space or newline."
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:349
-msgid ""
-"If the DNS forwarder is enabled, the DHCP service (if enabled) will "
-"automatically serve the LAN IP address as a DNS server to DHCP clients so "
-"they will use the forwarder."
-msgstr ""
-
-#: src/usr/local/www/services_dnsmasq.php:351
-#, php-format
-msgid ""
-"The DNS forwarder will use the DNS servers entered in %1$sSystem > General "
-"Setup%2$s or those obtained via DHCP or PPP on WAN if &quot;Allow DNS server "
-"list to be overridden by DHCP/PPP on WAN&quot; is checked. If you don't use "
-"that option (or if you use a static IP address on WAN), you must manually "
-"specify at least one DNS server on the %1$sSystem > General Setup%2$s page."
-msgstr ""
-
-#: src/usr/local/www/services_dnsmasq.php:363
-msgid ""
-"Entries in this section override individual results from the forwarders."
-msgstr ""
-
-#: src/usr/local/www/services_dnsmasq.php:364
-msgid "Use these for changing DNS results or for adding custom DNS records."
-msgstr ""
-
-#: src/usr/local/www/services_dnsmasq.php:369
-#: src/usr/local/www/services_unbound.php:433
+#: src/usr/local/www/services_dnsmasq.php:347
+#: src/usr/local/www/services_unbound.php:462
msgid "Host Overrides"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:375
-#: src/usr/local/www/services_dnsmasq.php:455
+#: src/usr/local/www/services_dnsmasq.php:353
+#: src/usr/local/www/services_dnsmasq.php:427
#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:100
#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:167
#: src/usr/local/www/services_dnsmasq_edit.php:110
#: src/usr/local/www/services_dnsmasq_edit.php:254
#: src/usr/local/www/services_dnsmasq_edit.php:311
-#: src/usr/local/www/services_unbound.php:439
-#: src/usr/local/www/services_unbound.php:515
+#: src/usr/local/www/services_unbound.php:468
+#: src/usr/local/www/services_unbound.php:544
#: src/usr/local/www/services_unbound_domainoverride_edit.php:96
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:155
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:159
#: src/usr/local/www/services_unbound_host_edit.php:111
#: src/usr/local/www/services_unbound_host_edit.php:255
#: src/usr/local/www/services_unbound_host_edit.php:312
-#: src/usr/local/www/system.php:143 src/usr/local/www/system.php:383
+#: src/usr/local/www/system.php:144 src/usr/local/www/system.php:387
msgid "Domain"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:399
-#: src/usr/local/www/services_dnsmasq.php:423
-#: src/usr/local/www/services_unbound.php:464
-#: src/usr/local/www/services_unbound.php:488
+#: src/usr/local/www/services_dnsmasq.php:377
+#: src/usr/local/www/services_dnsmasq.php:401
+#: src/usr/local/www/services_unbound.php:493
+#: src/usr/local/www/services_unbound.php:517
msgid "Edit host override"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:400
-#: src/usr/local/www/services_unbound.php:465
+#: src/usr/local/www/services_dnsmasq.php:378
+#: src/usr/local/www/services_unbound.php:494
msgid "Delete host override"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:416
-#: src/usr/local/www/services_unbound.php:481
+#: src/usr/local/www/services_dnsmasq.php:394
+#: src/usr/local/www/services_unbound.php:510
msgid "Alias for "
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:444
-msgid ""
-"Entries in this area override an entire domain, and subdomains, by "
-"specifying an authoritative DNS server to be queried for that domain."
-msgstr ""
-
-#: src/usr/local/www/services_dnsmasq.php:450
-#: src/usr/local/www/services_unbound.php:510
+#: src/usr/local/www/services_dnsmasq.php:422
+#: src/usr/local/www/services_unbound.php:539
msgid "Domain Overrides"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:477
-#: src/usr/local/www/services_unbound.php:538
+#: src/usr/local/www/services_dnsmasq.php:449
+#: src/usr/local/www/services_unbound.php:567
msgid "Edit domain override"
msgstr ""
-#: src/usr/local/www/services_dnsmasq.php:478
-#: src/usr/local/www/services_unbound.php:539
+#: src/usr/local/www/services_dnsmasq.php:450
+#: src/usr/local/www/services_unbound.php:568
msgid "Delete domain override"
msgstr ""
+#: src/usr/local/www/services_dnsmasq.php:471
+msgid ""
+"If the DNS forwarder is enabled, the DHCP service (if enabled) will "
+"automatically serve the LAN IP address as a DNS server to DHCP clients so "
+"they will use the forwarder."
+msgstr ""
+
+#: src/usr/local/www/services_dnsmasq.php:473
+#, php-format
+msgid ""
+"The DNS forwarder will use the DNS servers entered in %1$sSystem > General "
+"Setup%2$s or those obtained via DHCP or PPP on WAN if &quot;Allow DNS server "
+"list to be overridden by DHCP/PPP on WAN&quot; is checked. If that option is "
+"not used (or if a static IP address is used on WAN), at least one DNS server "
+"must be manually specified on the %1$sSystem > General Setup%2$s page."
+msgstr ""
+
#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:112
#: src/usr/local/www/services_unbound_domainoverride_edit.php:107
msgid "A valid domain must be specified after _msdcs."
@@ -20381,7 +20629,7 @@ msgid ""
"test or mycompany.localdomain or 1.168.192.in-addr.arpa"
msgstr ""
-#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:177
+#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:178
msgid ""
"IP address of the authoritative DNS server for this domain<br />e.g.: "
"192.168.100.100<br />Or enter # for an exclusion to pass through this host/"
@@ -20389,18 +20637,18 @@ msgid ""
"enter ! for lookups for this host/subdomain to NOT be forwarded anywhere."
msgstr ""
-#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:184
+#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:185
msgid "Source IP"
msgstr ""
-#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:186
+#: src/usr/local/www/services_dnsmasq_domainoverride_edit.php:187
msgid ""
"Source IP address for queries to the DNS server for the override domain. "
-"Leave blank unless your DNS server is accessed through a VPN tunnel."
+"Leave blank unless the DNS server is accessed through a VPN tunnel."
msgstr ""
#: src/usr/local/www/services_dnsmasq_edit.php:116
-#: src/usr/local/www/system.php:167
+#: src/usr/local/www/system.php:168
msgid ""
"The hostname can only contain the characters A-Z, 0-9 and '-'. It may not "
"start or end with '-'."
@@ -20470,9 +20718,9 @@ msgstr ""
msgid "Host name"
msgstr ""
-#: src/usr/local/www/services_dnsmasq_edit.php:332
-#: src/usr/local/www/services_unbound_host_edit.php:333
-msgid "Add host name"
+#: src/usr/local/www/services_dnsmasq_edit.php:334
+#: src/usr/local/www/services_unbound_host_edit.php:335
+msgid "Add Host Name"
msgstr ""
#: src/usr/local/www/services_dyndns.php:100
@@ -20492,9 +20740,9 @@ msgstr ""
#: src/usr/local/www/services_dyndns.php:121
#: src/usr/local/www/services_ntpd_acls.php:240
-#: src/usr/local/www/status_openvpn.php:259
-#: src/usr/local/www/status_openvpn.php:315
-#: src/usr/local/www/status_services.php:130
+#: src/usr/local/www/status_openvpn.php:263
+#: src/usr/local/www/status_openvpn.php:319
+#: src/usr/local/www/status_services.php:120
#: src/usr/local/www/widgets/widgets/dyn_dns_status.widget.php:129
#: src/usr/local/www/widgets/widgets/services_status.widget.php:108
msgid "Service"
@@ -20530,7 +20778,7 @@ msgstr ""
#: src/usr/local/www/services_dyndns.php:251
msgid ""
-"You can force an update for an IP address on the edit page for that service."
+"An update for an IP address can be forced on the edit page for that service."
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:124
@@ -20579,8 +20827,8 @@ msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:335
msgid ""
"Enter the complete fully qualified domain name. Example: myhost.dyndns."
-"org<br />he.net tunnelbroker: Enter your tunnel ID<br />GleSYS: Enter your "
-"record ID<br />DNSimple: Enter only the domain name.<br />Namecheap: Enter "
+"org<br />he.net tunnelbroker: Enter the tunnel ID.<br />GleSYS: Enter the "
+"record ID.<br />DNSimple: Enter only the domain name.<br />Namecheap: Enter "
"the hostname and the domain separately, with the domain being the domain or "
"subdomain zone being handled by Namecheap."
msgstr ""
@@ -20591,8 +20839,8 @@ msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:348
msgid ""
-"Note: With DynDNS service you can only use a hostname, not an IP address. "
-"Set this option only if you need a special MX record. Not all services "
+"Note: With DynDNS service only a hostname can be used, not an IP address. "
+"Set this option only if a special MX record is needed. Not all services "
"support this."
msgstr ""
@@ -20611,16 +20859,16 @@ msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:384
msgid ""
"Username is required for all types except Namecheap, FreeDNS and Custom "
-"Entries.<br />Route 53: Enter your Access Key ID.<br />GleSYS: Enter your "
-"API user.<br />For Custom Entries, Username and Password represent HTTP "
+"Entries.<br />Route 53: Enter the Access Key ID.<br />GleSYS: Enter the API "
+"user.<br />For Custom Entries, Username and Password represent HTTP "
"Authentication username and passwords."
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:394
msgid ""
-"FreeDNS (freedns.afraid.org): Enter your \"Authentication Token\" provided "
-"by FreeDNS.<br />Route 53: Enter your Secret Access Key.<br />GleSYS: Enter "
-"your API key.<br />DNSimple: Enter your API token."
+"FreeDNS (freedns.afraid.org): Enter the \"Authentication Token\" provided by "
+"FreeDNS.<br />Route 53: Enter the Secret Access Key.<br />GleSYS: Enter the "
+"API key.<br />DNSimple: Enter the API token."
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:401
@@ -20629,8 +20877,8 @@ msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:404
msgid ""
-"Enter Zone ID that you received when you created your domain in Route 53."
-"<br />DNSimple: Enter the Record ID of record to update."
+"Enter Zone ID that was received when creating the domain in Route 53.<br /"
+">DNSimple: Enter the Record ID of record to update."
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:412
@@ -20649,11 +20897,10 @@ msgid "TTL"
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:428
-msgid "Choose TTL for your dns record."
+msgid "Choose TTL for the dns record."
msgstr ""
#: src/usr/local/www/services_dyndns_edit.php:447
-#: src/usr/local/www/services_rfc2136_edit.php:149
#: src/usr/local/www/services_rfc2136_edit.php:337
msgid "Save & Force Update"
msgstr ""
@@ -20673,8 +20920,8 @@ msgstr ""
#: src/usr/local/www/services_igmpproxy.php:183
msgid ""
"Please add the interface for upstream, the allowed subnets, and the "
-"downstream interfaces you would like the proxy to allow. Only one \"upstream"
-"\" interface can be configured."
+"downstream interfaces for the proxy to allow. Only one \"upstream\" "
+"interface can be configured."
msgstr ""
#: src/usr/local/www/services_igmpproxy_edit.php:103
@@ -20696,7 +20943,7 @@ msgstr ""
#: src/usr/local/www/services_igmpproxy_edit.php:205
msgid ""
"The upstream network interface is the outgoing interface which is "
-"responsible for communicating to available multicast data sources .There can "
+"responsible for communicating to available multicast data sources. There can "
"only be one upstream interface.<br />Downstream network interfaces are the "
"distribution\tinterfaces to the destination networks, where multicast "
"clients can join groups and receive multicast data. One or more downstream "
@@ -20714,8 +20961,7 @@ msgid ""
"by default the threshold is 1."
msgstr ""
-#: src/usr/local/www/services_igmpproxy_edit.php:273
-#: src/usr/local/www/services_unbound_acls.php:311
+#: src/usr/local/www/services_igmpproxy_edit.php:275
msgid "Add network"
msgstr ""
@@ -20744,8 +20990,8 @@ msgstr ""
#: src/usr/local/www/services_ntpd_gps.php:233
#: src/usr/local/www/services_ntpd_pps.php:136
#: src/usr/local/www/services_ntpd_pps.php:152
-#: src/usr/local/www/status_queues.php:197
-#: src/usr/local/www/status_queues.php:201
+#: src/usr/local/www/status_queues.php:196
+#: src/usr/local/www/status_queues.php:200
msgid "PPS"
msgstr ""
@@ -20764,82 +21010,82 @@ msgstr ""
msgid "Time Servers"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:296
+#: src/usr/local/www/services_ntpd.php:300
msgid ""
"For best results three to five servers should be configured here.<br />The "
"prefer option indicates that NTP should favor the use of this server more "
-"than all others.<br />The noselect option indicates that NTP should not use "
+"than all others.<br />The no select option indicates that NTP should not use "
"this server for time, but stats for this server will be collected and "
"displayed."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:302
+#: src/usr/local/www/services_ntpd.php:306
msgid "Orphan Mode"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:305
+#: src/usr/local/www/services_ntpd.php:309
msgid ""
"Orphan mode allows the system clock to be used when no other clocks are "
"available. The number here specifies the stratum reported during orphan mode "
"and should normally be set to a number high enough to insure that any other "
-"servers available to clients are preferred over this server. (default: 12)."
+"servers available to clients are preferred over this server (default: 12)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:311
+#: src/usr/local/www/services_ntpd.php:315
msgid "NTP Graphs"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:318
+#: src/usr/local/www/services_ntpd.php:322
msgid "Logging"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:328
+#: src/usr/local/www/services_ntpd.php:332
msgid ""
"These options enable additional messages from NTP to be written to the "
"System Log <a href=\"status_logs.php?logfile=ntpd\">Status > System Logs > "
-"NTP</a>"
+"NTP</a>."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:340
+#: src/usr/local/www/services_ntpd.php:346
msgid "Statistics Logging"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:342
+#: src/usr/local/www/services_ntpd.php:348
msgid ""
"Warning: These options will create persistent daily log files in /var/log/"
"ntp."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:374
+#: src/usr/local/www/services_ntpd.php:382
msgid "Leap seconds"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:376
+#: src/usr/local/www/services_ntpd.php:384
msgid ""
-"A leap second file allows NTP to advertize an upcoming leap second addition "
+"A leap second file allows NTP to advertise an upcoming leap second addition "
"or subtraction. Normally this is only useful if this server is a stratum 1 "
"time server. "
msgstr ""
-#: src/usr/local/www/services_ntpd.php:383
-msgid "Enter Leap second configuration as text OR select a file to upload"
+#: src/usr/local/www/services_ntpd.php:391
+msgid "Enter Leap second configuration as text OR select a file to upload."
msgstr ""
#: src/usr/local/www/services_ntpd_acls.php:122
#: src/usr/local/www/services_ntpd_acls.php:135
#: src/usr/local/www/services_unbound_acls.php:151
#: src/usr/local/www/services_unbound_acls.php:165
-msgid "You must enter a valid IP address for each row under Networks."
+msgid "A valid IP address must be entered for each row under Networks."
msgstr ""
#: src/usr/local/www/services_ntpd_acls.php:126
#: src/usr/local/www/services_unbound_acls.php:156
-msgid "You must enter a valid IPv4 netmask for each IPv4 row under Networks."
+msgid "A valid IPv4 netmask must be entered for each IPv4 row under Networks."
msgstr ""
#: src/usr/local/www/services_ntpd_acls.php:132
#: src/usr/local/www/services_unbound_acls.php:162
-msgid "You must enter a valid IPv6 netmask for each IPv6 row under Networks."
+msgid "A valid IPv6 netmask must be entered for each IPv6 row under Networks."
msgstr ""
#: src/usr/local/www/services_ntpd_acls.php:215
@@ -20938,10 +21184,10 @@ msgstr ""
#: src/usr/local/www/services_ntpd_gps.php:256
msgid ""
-"This option allows you to select a predefined configuration. Default is the "
+"This option allows a predefined configuration to be selected. Default is the "
"configuration of pfSense 2.1 and earlier (not recommended). Select Generic "
-"if your GPS is not listed.<br /><br />The predefined configurations assume "
-"your GPS has already been set to NMEA mode."
+"if the GPS is not listed.<br /><br />The predefined configurations assume "
+"the GPS has already been set to NMEA mode."
msgstr ""
#: src/usr/local/www/services_ntpd_gps.php:272
@@ -20995,7 +21241,7 @@ msgstr ""
#: src/usr/local/www/services_ntpd_gps.php:315
msgid ""
"This may be used to change the GPS Clock stratum (default: 0). This may be "
-"useful if, for some reason, you want ntpd to prefer a different clock"
+"useful to, for some reason, have ntpd prefer a different clock."
msgstr ""
#: src/usr/local/www/services_ntpd_gps.php:319
@@ -21018,25 +21264,25 @@ msgstr ""
msgid "This may be used to change the GPS Clock ID (default: GPS)."
msgstr ""
-#: src/usr/local/www/services_ntpd_gps.php:383
+#: src/usr/local/www/services_ntpd_gps.php:385
msgid "GPS Initialization"
msgstr ""
-#: src/usr/local/www/services_ntpd_gps.php:391
+#: src/usr/local/www/services_ntpd_gps.php:393
msgid ""
"Commands entered here will be sent to the GPS during initialization. Please "
-"read and understand your GPS documentation before making any changes here"
+"read and understand the GPS documentation before making any changes here."
msgstr ""
-#: src/usr/local/www/services_ntpd_gps.php:393
+#: src/usr/local/www/services_ntpd_gps.php:395
msgid "NMEA Checksum Calculator"
msgstr ""
-#: src/usr/local/www/services_ntpd_gps.php:402
+#: src/usr/local/www/services_ntpd_gps.php:404
msgid "Calculate"
msgstr ""
-#: src/usr/local/www/services_ntpd_gps.php:417
+#: src/usr/local/www/services_ntpd_gps.php:421
msgid ""
"Enter the text between &quot;$&quot; and &quot;*&quot; of a NMEA command "
"string:"
@@ -21059,20 +21305,20 @@ msgstr ""
#: src/usr/local/www/services_ntpd_pps.php:191
msgid ""
"Fudge time is used to specify the PPS signal offset from the actual second "
-"such as the transmission delay between the transmitter and the receiver. "
+"such as the transmission delay between the transmitter and the receiver "
"(default: 0.0)."
msgstr ""
#: src/usr/local/www/services_ntpd_pps.php:195
-#: src/usr/local/www/status_ntpd.php:201
+#: src/usr/local/www/status_ntpd.php:302
msgid "Stratum"
msgstr ""
#: src/usr/local/www/services_ntpd_pps.php:198
msgid ""
"This may be used to change the PPS Clock stratum (default: 0). This may be "
-"useful if, for some reason, you want ntpd to prefer a different clock and "
-"just monitor this source."
+"useful to, for some reason, have ntpd prefer a different clock and just "
+"monitor this source."
msgstr ""
#: src/usr/local/www/services_ntpd_pps.php:227
@@ -21084,7 +21330,7 @@ msgid "The PPPoE entry list has been changed."
msgstr ""
#: src/usr/local/www/services_pppoe.php:138
-#: src/usr/local/www/status_ipsec.php:134
+#: src/usr/local/www/status_ipsec.php:511
msgid "Local IP"
msgstr ""
@@ -21097,7 +21343,7 @@ msgid "Delete PPPoE instance"
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:142
-#: src/usr/local/www/vpn_l2tp.php:95 src/usr/local/www/vpn_l2tp.php:271
+#: src/usr/local/www/vpn_l2tp.php:95 src/usr/local/www/vpn_l2tp.php:268
msgid "Server address"
msgstr ""
@@ -21194,9 +21440,9 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:364
msgid ""
"Enter the IP address the PPPoE server should give to clients for use as "
-"their \"gateway\"<br />Typically this is set to an unused IP just outside of "
-"the client range <br />NOTE: This should NOT be set to any IP address "
-"currently in use on this firewall"
+"their \"gateway\".<br />Typically this is set to an unused IP just outside "
+"of the client range.<br />NOTE: This should NOT be set to any IP address "
+"currently in use on this firewall."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:370
@@ -21204,7 +21450,8 @@ msgid "Remote Address Range"
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:372
-msgid "Specify the starting address for the client IP address subnet"
+#: src/usr/local/www/vpn_l2tp.php:280
+msgid "Specify the starting address for the client IP address subnet."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:379
@@ -21214,21 +21461,22 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:399
msgid ""
"If entered these servers will be given to all PPPoE clients, otherwise LAN "
-"DNS and one WAN DNS will go to all clients"
+"DNS and one WAN DNS will go to all clients."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:406
msgid ""
"Users will be authenticated using the RADIUS server specified below. The "
-"local user database will not be used"
+"local user database will not be used."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:414
-msgid "Sends accounting packets to the RADIUS server"
+#: src/usr/local/www/vpn_l2tp.php:338
+msgid "Sends accounting packets to the RADIUS server."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:421
-msgid "If primary server fails all requests will be sent via backup server"
+msgid "If primary server fails all requests will be sent via backup server."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:425
@@ -21257,8 +21505,8 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:456
#: src/usr/local/www/services_pppoe_edit.php:489
-#: src/usr/local/www/system_authservers.php:228
-#: src/usr/local/www/system_authservers.php:721
+#: src/usr/local/www/system_authservers.php:294
+#: src/usr/local/www/system_authservers.php:789
msgid "Authentication port"
msgstr ""
@@ -21269,7 +21517,7 @@ msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:465
#: src/usr/local/www/services_pppoe_edit.php:498
-msgid "Standard ports are 1812 (authentication) and 1813 (accounting)"
+msgid "Standard ports are 1812 (authentication) and 1813 (accounting)."
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:471
@@ -21277,7 +21525,7 @@ msgid "Primary RADIUS Server Shared Secret"
msgstr ""
#: src/usr/local/www/services_pppoe_edit.php:474
-#: src/usr/local/www/vpn_l2tp.php:354
+#: src/usr/local/www/vpn_l2tp.php:351
msgid ""
"Enter the shared secret that will be used to authenticate to the RADIUS "
"server."
@@ -21301,11 +21549,11 @@ msgstr ""
msgid "User table"
msgstr ""
-#: src/usr/local/www/services_pppoe_edit.php:568
+#: src/usr/local/www/services_pppoe_edit.php:570
msgid "Add user"
msgstr ""
-#: src/usr/local/www/services_pppoe_edit.php:601
+#: src/usr/local/www/services_pppoe_edit.php:605
msgid ""
"Don't forget to add a firewall rule to permit traffic from PPPoE clients."
msgstr ""
@@ -21315,7 +21563,7 @@ msgid "RFC2136 Clients"
msgstr ""
#: src/usr/local/www/services_rfc2136.php:208
-#: src/usr/local/www/vpn_openvpn_client.php:843
+#: src/usr/local/www/vpn_openvpn_client.php:842
msgid "Edit client"
msgstr ""
@@ -21328,7 +21576,7 @@ msgid "Enable client"
msgstr ""
#: src/usr/local/www/services_rfc2136.php:217
-#: src/usr/local/www/vpn_openvpn_client.php:844
+#: src/usr/local/www/vpn_openvpn_client.php:843
msgid "Delete client"
msgstr ""
@@ -21365,7 +21613,7 @@ msgid "RFC 2136 Client"
msgstr ""
#: src/usr/local/www/services_rfc2136_edit.php:220
-msgid "Fully qualified hostname of the host to be updated"
+msgid "Fully qualified hostname of the host to be updated."
msgstr ""
#: src/usr/local/www/services_rfc2136_edit.php:224
@@ -21398,10 +21646,10 @@ msgstr ""
msgid "Record Type"
msgstr ""
-#: src/usr/local/www/services_rfc2136_edit.php:344
+#: src/usr/local/www/services_rfc2136_edit.php:346
#, php-format
msgid ""
-"You must configure a DNS server in %1$sSystem: General setup %2$sor allow "
+"A DNS server must be configured in %1$sSystem: General Setup %2$sor allow "
"the DNS server list to be overridden by DHCP/PPP on WAN for dynamic DNS "
"updates to work."
msgstr ""
@@ -21416,31 +21664,31 @@ msgstr ""
msgid "Only interfaces configured with a static IP will be shown."
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:142
+#: src/usr/local/www/services_router_advertisements.php:143
msgid "Router Only"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:143
+#: src/usr/local/www/services_router_advertisements.php:144
msgid "Unmanaged"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:144
+#: src/usr/local/www/services_router_advertisements.php:145
msgid "Managed"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:145
+#: src/usr/local/www/services_router_advertisements.php:146
msgid "Assisted"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:146
+#: src/usr/local/www/services_router_advertisements.php:147
msgid "Stateless DHCP"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:148
+#: src/usr/local/www/services_router_advertisements.php:149
msgid "Low"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:153
+#: src/usr/local/www/services_router_advertisements.php:154
msgid ""
"Subnets are specified in CIDR format. Select the CIDR mask that pertains to "
"each entry.\t/128 specifies a single IPv6 host; /64 specifies a normal IPv6 "
@@ -21449,87 +21697,95 @@ msgid ""
"assigned."
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:183
+#: src/usr/local/www/services_router_advertisements.php:184
#, php-format
msgid "An invalid subnet or alias was specified. [%s/%s]"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:202
+#: src/usr/local/www/services_router_advertisements.php:203
msgid ""
"A valid lifetime below 2 hrs will be ignored by clients (RFC 4862 Section "
"5.5.3 point e)"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:297
+#: src/usr/local/www/services_router_advertisements.php:296
msgid "Advertisements"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:301
+#: src/usr/local/www/services_router_advertisements.php:300
msgid "Router mode"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:304
+#: src/usr/local/www/services_router_advertisements.php:303
msgid ""
"Select the Operating Mode for the Router Advertisement (RA) Daemon. Use:<br /"
">&nbsp;<strong>Router Only</strong> to only advertise this router<br />&nbsp;"
"<strong>Unmanaged</strong> for Router Advertising with Stateless "
"Autoconfig<br />&nbsp;<strong>Managed</strong> for assignment through a "
"DHCPv6 Server<br />&nbsp;<strong>Assisted</strong> for DHCPv6 Server "
-"assignment combined with Stateless Autoconfig.It is not required to activate "
-"this DHCPv6 server when set to \"Managed\", this can be another host on the "
-"network"
+"assignment combined with Stateless Autoconfig. It is not required to "
+"activate this DHCPv6 server when set to \"Managed\", this can be another "
+"host on the network"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:313
+#: src/usr/local/www/services_router_advertisements.php:312
msgid "Router priority"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:316
+#: src/usr/local/www/services_router_advertisements.php:315
msgid "Select the Priority for the Router Advertisement (RA) Daemon."
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:320
+#: src/usr/local/www/services_router_advertisements.php:339
+msgid "RA Interface"
+msgstr ""
+
+#: src/usr/local/www/services_router_advertisements.php:342
+msgid "Select the Interface for the Router Advertisement (RA) Daemon."
+msgstr ""
+
+#: src/usr/local/www/services_router_advertisements.php:347
msgid "Default valid lifetime"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:323
+#: src/usr/local/www/services_router_advertisements.php:350
msgid ""
"Seconds. The length of time in seconds (relative to the time the packet is "
"sent) that the prefix is valid for the purpose of on-link determination. "
"<br />The default is 86400 seconds."
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:328
+#: src/usr/local/www/services_router_advertisements.php:355
msgid "Default preferred lifetime"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:331
+#: src/usr/local/www/services_router_advertisements.php:358
msgid ""
"Seconds. The length of time in seconds (relative to the time the packet is "
"sent) that addresses generated from the prefix via stateless address "
"autoconfiguration remain preferred. <br />The default is 14400 seconds."
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:335
+#: src/usr/local/www/services_router_advertisements.php:362
msgid "RA Subnets"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:351
+#: src/usr/local/www/services_router_advertisements.php:378
msgid "Subnets"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:378
+#: src/usr/local/www/services_router_advertisements.php:409
msgid "DNS Configuration"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:383
+#: src/usr/local/www/services_router_advertisements.php:414
msgid "Server "
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:393
+#: src/usr/local/www/services_router_advertisements.php:424
msgid ""
"The RA server can optionally provide a domain search list. Use the semicolon "
-"character as separator "
+"character as separator."
msgstr ""
#: src/usr/local/www/services_snmp.php:117
@@ -21579,7 +21835,7 @@ msgid "SNMP Daemon Settings"
msgstr ""
#: src/usr/local/www/services_snmp.php:243
-msgid "Enter the port to accept polling events on (default 161)"
+msgid "Enter the port to accept polling events on (default 161)."
msgstr ""
#: src/usr/local/www/services_snmp.php:247
@@ -21667,10 +21923,6 @@ msgstr ""
msgid "One or more Outgoing Network Interfaces must be selected."
msgstr ""
-#: src/usr/local/www/services_unbound.php:180
-msgid "You must specify a valid port number."
-msgstr ""
-
#: src/usr/local/www/services_unbound.php:198
msgid ""
"The generated config file cannot be parsed by unbound. Please correct the "
@@ -21682,8 +21934,8 @@ msgstr ""
msgid "DNS Resolver configured."
msgstr ""
-#: src/usr/local/www/services_unbound.php:266
-#: src/usr/local/www/services_unbound.php:284
+#: src/usr/local/www/services_unbound.php:272
+#: src/usr/local/www/services_unbound.php:290
#: src/usr/local/www/services_unbound_acls.php:229
#: src/usr/local/www/services_unbound_advanced.php:238
#: src/usr/local/www/services_unbound_domainoverride_edit.php:145
@@ -21691,42 +21943,42 @@ msgstr ""
msgid "General Settings"
msgstr ""
-#: src/usr/local/www/services_unbound.php:280
+#: src/usr/local/www/services_unbound.php:286
#: src/usr/local/www/services_unbound_acls.php:225
#: src/usr/local/www/services_unbound_advanced.php:234
msgid "The DNS resolver configuration has been changed."
msgstr ""
-#: src/usr/local/www/services_unbound.php:285
+#: src/usr/local/www/services_unbound.php:291
#: src/usr/local/www/services_unbound_acls.php:230
#: src/usr/local/www/services_unbound_advanced.php:221
#: src/usr/local/www/services_unbound_advanced.php:239
#: src/usr/local/www/vpn_ipsec.php:261 src/usr/local/www/vpn_ipsec_keys.php:122
#: src/usr/local/www/vpn_ipsec_mobile.php:459
-#: src/usr/local/www/vpn_ipsec_phase1.php:683
+#: src/usr/local/www/vpn_ipsec_phase1.php:681
#: src/usr/local/www/vpn_ipsec_phase2.php:526
#: src/usr/local/www/vpn_ipsec_settings.php:236
#: src/usr/local/www/vpn_ipsec_settings.php:269
msgid "Advanced Settings"
msgstr ""
-#: src/usr/local/www/services_unbound.php:286
+#: src/usr/local/www/services_unbound.php:292
#: src/usr/local/www/services_unbound_acls.php:208
#: src/usr/local/www/services_unbound_acls.php:231
#: src/usr/local/www/services_unbound_advanced.php:240
msgid "Access Lists"
msgstr ""
-#: src/usr/local/www/services_unbound.php:291
+#: src/usr/local/www/services_unbound.php:297
msgid "General DNS Resolver Options"
msgstr ""
-#: src/usr/local/www/services_unbound.php:312
-#: src/usr/local/www/system_advanced_network.php:233
+#: src/usr/local/www/services_unbound.php:318
+#: src/usr/local/www/system_advanced_network.php:232
msgid "Network Interfaces"
msgstr ""
-#: src/usr/local/www/services_unbound.php:316
+#: src/usr/local/www/services_unbound.php:322
msgid ""
"Interface IPs used by the DNS Resolver for responding to queries from "
"clients. If an interface has both IPv4 and IPv6 IPs, both are used. Queries "
@@ -21734,45 +21986,54 @@ msgid ""
"behavior is to respond to queries on every available IPv4 and IPv6 address."
msgstr ""
-#: src/usr/local/www/services_unbound.php:323
+#: src/usr/local/www/services_unbound.php:329
msgid "Outgoing Network Interfaces"
msgstr ""
-#: src/usr/local/www/services_unbound.php:327
+#: src/usr/local/www/services_unbound.php:333
msgid ""
"Utilize different network interface(s) that the DNS Resolver will use to "
"send queries to authoritative servers and receive their replies. By default "
"all interfaces are used."
msgstr ""
-#: src/usr/local/www/services_unbound.php:331
+#: src/usr/local/www/services_unbound.php:337
msgid "System Domain Local Zone Type"
msgstr ""
-#: src/usr/local/www/services_unbound.php:334
+#: src/usr/local/www/services_unbound.php:340
msgid ""
"The local-zone type used for the pfSense system domain (System | General "
"Setup | Domain). Transparent is the default. Local-Zone type descriptions "
"are available in the unbound.conf(5) manual pages."
msgstr ""
-#: src/usr/local/www/services_unbound.php:338
+#: src/usr/local/www/services_unbound.php:344
msgid "DNSSEC"
msgstr ""
-#: src/usr/local/www/services_unbound.php:384
+#: src/usr/local/www/services_unbound.php:383
+#: src/usr/local/www/services_unbound.php:419
+msgid "Display Custom Options"
+msgstr ""
+
+#: src/usr/local/www/services_unbound.php:391
msgid ""
"Enter any additional configuration parameters to add to the DNS Resolver "
-"configuration here, separated by a newline"
+"configuration here, separated by a newline."
+msgstr ""
+
+#: src/usr/local/www/services_unbound.php:417
+msgid "Hide Custom Options"
msgstr ""
-#: src/usr/local/www/services_unbound.php:559
+#: src/usr/local/www/services_unbound.php:588
#, php-format
msgid ""
"If the DNS Resolver is enabled, the DHCP service (if enabled) will "
"automatically serve the LAN IP address as a DNS server to DHCP clients so "
"they will use the DNS Resolver. If Forwarding is enabled, the DNS Resolver "
-"will use the DNS servers entered in %sSystem: General setup%s or those "
+"will use the DNS servers entered in %sSystem: General Setup%s or those "
"obtained via DHCP or PPP on WAN if &quot;Allow DNS server list to be "
"overridden by DHCP/PPP on WAN&quot; is checked."
msgstr ""
@@ -21804,7 +22065,7 @@ msgstr ""
msgid ""
"%sAllow Snoop:%s Allow recursive and nonrecursive access from hosts within "
"the netblock defined below. Used for cache snooping and ideally should only "
-"be configured for your administrative host."
+"be configured for the administrative host."
msgstr ""
#: src/usr/local/www/services_unbound_acls.php:238
@@ -21823,19 +22084,19 @@ msgstr ""
msgid "Allow Snoop"
msgstr ""
-#: src/usr/local/www/services_unbound_acls.php:320
+#: src/usr/local/www/services_unbound_acls.php:324
msgid "Access Lists to Control Access to the DNS Resolver"
msgstr ""
-#: src/usr/local/www/services_unbound_acls.php:326
+#: src/usr/local/www/services_unbound_acls.php:330
msgid "Access List Name"
msgstr ""
-#: src/usr/local/www/services_unbound_acls.php:348
+#: src/usr/local/www/services_unbound_acls.php:352
msgid "Edit ACL"
msgstr ""
-#: src/usr/local/www/services_unbound_acls.php:349
+#: src/usr/local/www/services_unbound_acls.php:353
msgid "Delete ACL"
msgstr ""
@@ -21912,7 +22173,7 @@ msgstr ""
msgid ""
"When enabled, this option can cause an increase of around 10% more DNS "
"traffic and load on the server, but frequently requested items will not "
-"expire from the cache"
+"expire from the cache."
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:270
@@ -21977,10 +22238,10 @@ msgstr ""
msgid ""
"Number of bytes size to advertise as the EDNS reassembly buffer size. This "
"is the value that is used in UDP datagrams sent to peers. RFC recommendation "
-"is 4096 (which is the default). If you have fragmentation reassemble "
-"problems, usually seen as timeouts, then a value of 1480 should help. The "
-"512 value bypasses most MTU path problems, but it can generate an excessive "
-"amount of TCP fallback."
+"is 4096 (which is the default). If fragmentation reassemble problems occur, "
+"usually seen as timeouts, then a value of 1480 should help. The 512 value "
+"bypasses most MTU path problems, but it can generate an excessive amount of "
+"TCP fallback."
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:314
@@ -21991,7 +22252,7 @@ msgstr ""
msgid ""
"The number of queries that every thread will service simultaneously. If more "
"queries arrive that need to be serviced, and no queries can be jostled, then "
-"these queries are dropped"
+"these queries are dropped."
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:321
@@ -22014,7 +22275,7 @@ msgid ""
"The Maximum Time to Live for RRsets and messages in the cache. The default "
"is 86400 seconds (1 day). When the internal TTL expires the cache item is "
"expired. This can be configured to force the resolver to query for data more "
-"often and not trust (very large) TTL values"
+"often and not trust (very large) TTL values."
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:336
@@ -22099,7 +22360,7 @@ msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:390
msgid ""
"See the implementation <a href=\"https://tools.ietf.org/html/draft-vixie-"
-"dnsext-dns0x20-00\">draft dns-0x20</a> for more information: "
+"dnsext-dns0x20-00\">draft dns-0x20</a> for more information."
msgstr ""
#: src/usr/local/www/services_unbound_domainoverride_edit.php:117
@@ -22112,20 +22373,20 @@ msgstr ""
msgid "A valid IP address must be specified, for example 192.168.100.10."
msgstr ""
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:151
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:155
msgid "Domain Override"
msgstr ""
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:158
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:162
msgid ""
-"Domain to override (NOTE: this does not have to be a valid TLD!) e.g.: "
-"testormycompany.localdomainor1.168.192.in-addr.arpa"
+"Domain to override (NOTE: this does not have to be a valid TLD!) e.g.: test "
+"or mycompany.localdomain or 1.168.192.in-addr.arpa"
msgstr ""
-#: src/usr/local/www/services_unbound_domainoverride_edit.php:164
+#: src/usr/local/www/services_unbound_domainoverride_edit.php:168
msgid ""
"IP address of the authoritative DNS server for this domain. e.g.: "
-"192.168.100.100<br />To use a nondefault port for communication, append an "
+"192.168.100.100<br />To use a non-default port for communication, append an "
"'@' with the port number."
msgstr ""
@@ -22188,24 +22449,28 @@ msgstr ""
msgid "Enter a MAC address in the following format: xx:xx:xx:xx:xx:xx"
msgstr ""
-#: src/usr/local/www/services_wol.php:191
+#: src/usr/local/www/services_wol.php:199
msgid "Wake-on-LAN Devices"
msgstr ""
-#: src/usr/local/www/services_wol.php:195
+#: src/usr/local/www/services_wol.php:203
msgid "Click the MAC address to wake up an individual device."
msgstr ""
-#: src/usr/local/www/services_wol.php:219
-msgid "Edit device"
+#: src/usr/local/www/services_wol.php:227
+msgid "Edit Device"
+msgstr ""
+
+#: src/usr/local/www/services_wol.php:228
+msgid "Delete Device"
msgstr ""
-#: src/usr/local/www/services_wol.php:220
-msgid "Delete device"
+#: src/usr/local/www/services_wol.php:229
+msgid "Wake Device"
msgstr ""
-#: src/usr/local/www/services_wol.php:234
-msgid "Wake all devices"
+#: src/usr/local/www/services_wol.php:245
+msgid "Wake All Devices"
msgstr ""
#: src/usr/local/www/services_wol_edit.php:155
@@ -22228,71 +22493,71 @@ msgstr ""
msgid "Related log entries"
msgstr ""
-#: src/usr/local/www/status.php:166
+#: src/usr/local/www/status.php:168
msgid "System Status on "
msgstr ""
-#: src/usr/local/www/status.php:169
+#: src/usr/local/www/status.php:171
msgid "This status page includes the following information"
msgstr ""
-#: src/usr/local/www/status.php:286
+#: src/usr/local/www/status.php:290
msgid ""
"Make sure all sensitive information is removed! (Passwords, etc.) before "
"posting information from this page in public places (like mailing lists)."
msgstr ""
-#: src/usr/local/www/status.php:288
+#: src/usr/local/www/status.php:292
msgid "Common password fields in config.xml have been automatically redacted."
msgstr ""
-#: src/usr/local/www/status.php:290
+#: src/usr/local/www/status.php:294
msgid "Diagnostics > Command Prompt."
msgstr ""
-#: src/usr/local/www/status.php:295
+#: src/usr/local/www/status.php:299
msgid "Saving output to archive..."
msgstr ""
-#: src/usr/local/www/status.php:303
+#: src/usr/local/www/status.php:307
msgid "Done."
msgstr ""
#: src/usr/local/www/status_captiveportal.php:131
#: src/usr/local/www/status_captiveportal.php:140
-#: src/usr/local/www/status_captiveportal_expire.php:101
-#: src/usr/local/www/status_captiveportal_test.php:109
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:97
-#: src/usr/local/www/status_captiveportal_vouchers.php:133
-msgid "Active Users"
-msgstr ""
-
-#: src/usr/local/www/status_captiveportal.php:141
#: src/usr/local/www/status_captiveportal_expire.php:102
#: src/usr/local/www/status_captiveportal_test.php:110
#: src/usr/local/www/status_captiveportal_voucher_rolls.php:98
-#: src/usr/local/www/status_captiveportal_vouchers.php:85
#: src/usr/local/www/status_captiveportal_vouchers.php:134
-msgid "Active Vouchers"
+msgid "Active Users"
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:143
-#: src/usr/local/www/status_captiveportal_expire.php:104
-#: src/usr/local/www/status_captiveportal_test.php:86
-#: src/usr/local/www/status_captiveportal_test.php:112
-#: src/usr/local/www/status_captiveportal_test.php:118
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:100
-#: src/usr/local/www/status_captiveportal_vouchers.php:136
-msgid "Test Vouchers"
+#: src/usr/local/www/status_captiveportal.php:141
+#: src/usr/local/www/status_captiveportal_expire.php:103
+#: src/usr/local/www/status_captiveportal_test.php:111
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:99
+#: src/usr/local/www/status_captiveportal_vouchers.php:86
+#: src/usr/local/www/status_captiveportal_vouchers.php:135
+msgid "Active Vouchers"
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:144
-#: src/usr/local/www/status_captiveportal_expire.php:86
+#: src/usr/local/www/status_captiveportal.php:143
#: src/usr/local/www/status_captiveportal_expire.php:105
-#: src/usr/local/www/status_captiveportal_expire.php:110
+#: src/usr/local/www/status_captiveportal_test.php:87
#: src/usr/local/www/status_captiveportal_test.php:113
+#: src/usr/local/www/status_captiveportal_test.php:119
#: src/usr/local/www/status_captiveportal_voucher_rolls.php:101
#: src/usr/local/www/status_captiveportal_vouchers.php:137
+msgid "Test Vouchers"
+msgstr ""
+
+#: src/usr/local/www/status_captiveportal.php:144
+#: src/usr/local/www/status_captiveportal_expire.php:87
+#: src/usr/local/www/status_captiveportal_expire.php:106
+#: src/usr/local/www/status_captiveportal_expire.php:111
+#: src/usr/local/www/status_captiveportal_test.php:114
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:102
+#: src/usr/local/www/status_captiveportal_vouchers.php:138
msgid "Expire Vouchers"
msgstr ""
@@ -22305,104 +22570,115 @@ msgid "Display Zone"
msgstr ""
#: src/usr/local/www/status_captiveportal.php:177
-#: src/usr/local/www/widgets/include/captiveportal.inc:2
-msgid "Captive Portal Status"
+#, php-format
+msgid "Users Logged In (%d)"
msgstr ""
#: src/usr/local/www/status_captiveportal.php:192
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:133
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:134
msgid "Session start"
msgstr ""
#: src/usr/local/www/status_captiveportal.php:199
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:134
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:135
msgid "Last activity"
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:252
-#: src/usr/local/www/status_interfaces.php:127
-#: src/usr/local/www/status_interfaces.php:128
-#: src/usr/local/www/status_interfaces.php:129
-#: src/usr/local/www/status_interfaces.php:130
-#: src/usr/local/www/status_ipsec.php:284
-#: src/usr/local/www/status_ipsec.php:393
-msgid "Disconnect"
+#: src/usr/local/www/status_captiveportal.php:251
+msgid "Disconnect this User"
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:265
+#: src/usr/local/www/status_captiveportal.php:264
#, php-format
msgid ""
-"No Captive Portal zones have been configured. You may add new zones here: "
+"No Captive Portal zones have been configured. New zones may be added here: "
"%1$sServices > Captive Portal%2$s."
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:278
+#: src/usr/local/www/status_captiveportal.php:277
msgid "Don't show last activity"
msgstr ""
-#: src/usr/local/www/status_captiveportal.php:283
+#: src/usr/local/www/status_captiveportal.php:279
+msgid "Hide Last Activity"
+msgstr ""
+
+#: src/usr/local/www/status_captiveportal.php:285
msgid "Show last activity"
msgstr ""
-#: src/usr/local/www/status_captiveportal_expire.php:93
+#: src/usr/local/www/status_captiveportal.php:287
+msgid "Show Last Activity"
+msgstr ""
+
+#: src/usr/local/www/status_captiveportal_expire.php:94
msgid "Voucher(s) successfully marked."
msgstr ""
-#: src/usr/local/www/status_captiveportal_expire.php:95
+#: src/usr/local/www/status_captiveportal_expire.php:96
msgid "Voucher(s) could not be processed."
msgstr ""
-#: src/usr/local/www/status_captiveportal_expire.php:116
+#: src/usr/local/www/status_captiveportal_expire.php:117
msgid ""
"Enter multiple vouchers separated by space or newline. All valid vouchers "
"will be marked as expired."
msgstr ""
-#: src/usr/local/www/status_captiveportal_test.php:124
+#: src/usr/local/www/status_captiveportal_expire.php:130
+msgid "Expire"
+msgstr ""
+
+#: src/usr/local/www/status_captiveportal_test.php:125
msgid ""
"Enter multiple vouchers separated by space or newline. The remaining time, "
"if valid, will be shown for each voucher."
msgstr ""
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:109
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:110
msgid "Roll#"
msgstr ""
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:113
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:114
msgid "used"
msgstr ""
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:114
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:115
#: src/usr/local/www/status_dhcp_leases.php:176
#: src/usr/local/www/status_dhcpv6_leases.php:216
msgid "active"
msgstr ""
-#: src/usr/local/www/status_captiveportal_voucher_rolls.php:115
+#: src/usr/local/www/status_captiveportal_voucher_rolls.php:116
msgid "ready"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:145
+#: src/usr/local/www/status_captiveportal_vouchers.php:143
+#, php-format
+msgid "Vouchers in Use (%d)"
+msgstr ""
+
+#: src/usr/local/www/status_captiveportal_vouchers.php:148
msgid "Voucher"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:146
+#: src/usr/local/www/status_captiveportal_vouchers.php:149
msgid "Roll"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:147
+#: src/usr/local/www/status_captiveportal_vouchers.php:150
msgid "Activated at"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:148
+#: src/usr/local/www/status_captiveportal_vouchers.php:151
msgid "Expires in"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:149
+#: src/usr/local/www/status_captiveportal_vouchers.php:152
msgid "Expires at"
msgstr ""
-#: src/usr/local/www/status_captiveportal_vouchers.php:160
+#: src/usr/local/www/status_captiveportal_vouchers.php:163
msgid "min"
msgstr ""
@@ -22422,7 +22698,7 @@ msgid "No CARP interfaces have been defined."
msgstr ""
#: src/usr/local/www/status_carp.php:164
-msgid "You can configure high availability sync settings here."
+msgid "High availability sync settings can be configured here."
msgstr ""
#: src/usr/local/www/status_carp.php:179
@@ -22439,35 +22715,35 @@ msgstr ""
msgid "Search the %1$sSystem Log%2$s for CARP demotion-related events."
msgstr ""
-#: src/usr/local/www/status_carp.php:186
+#: src/usr/local/www/status_carp.php:186 src/usr/local/www/status_carp.php:188
msgid "Reset CARP Demotion Status."
msgstr ""
-#: src/usr/local/www/status_carp.php:193
+#: src/usr/local/www/status_carp.php:195
msgid "Temporarily Disable CARP"
msgstr ""
-#: src/usr/local/www/status_carp.php:193
+#: src/usr/local/www/status_carp.php:195
msgid "Enable CARP"
msgstr ""
-#: src/usr/local/www/status_carp.php:194
+#: src/usr/local/www/status_carp.php:196
msgid "Leave Persistent CARP Maintenance Mode"
msgstr ""
-#: src/usr/local/www/status_carp.php:194
+#: src/usr/local/www/status_carp.php:196
msgid "Enter Persistent CARP Maintenance Mode"
msgstr ""
-#: src/usr/local/www/status_carp.php:199
+#: src/usr/local/www/status_carp.php:201
msgid "CARP Interfaces"
msgstr ""
-#: src/usr/local/www/status_carp.php:204
+#: src/usr/local/www/status_carp.php:206
msgid "CARP Interface"
msgstr ""
-#: src/usr/local/www/status_carp.php:253
+#: src/usr/local/www/status_carp.php:255
msgid "pfSync Nodes"
msgstr ""
@@ -22530,7 +22806,7 @@ msgstr ""
#: src/usr/local/www/status_dhcp_leases.php:373
#: src/usr/local/www/status_dhcpv6_leases.php:451
-#: src/usr/local/www/status_ipsec.php:120
+#: src/usr/local/www/status_ipsec.php:497
#: src/usr/local/www/status_ipsec_leases.php:66
#: src/usr/local/www/status_ipsec_leases.php:74
#: src/usr/local/www/status_ipsec_sad.php:87
@@ -22540,7 +22816,7 @@ msgstr ""
#: src/usr/local/www/status_dhcp_leases.php:384
#: src/usr/local/www/status_dhcpv6_leases.php:463
-#: src/usr/local/www/status_dhcpv6_leases.php:555
+#: src/usr/local/www/status_dhcpv6_leases.php:558
msgid "End"
msgstr ""
@@ -22550,8 +22826,8 @@ msgstr ""
#: src/usr/local/www/status_gateways.php:171
#: src/usr/local/www/status_gateways.php:175
#: src/usr/local/www/status_ipsec_leases.php:87
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:250
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:90
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:262
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:96
msgid "Online"
msgstr ""
@@ -22560,45 +22836,45 @@ msgstr ""
msgid "Lease Type"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:461
-#: src/usr/local/www/status_dhcp_leases.php:462
+#: src/usr/local/www/status_dhcp_leases.php:464
+#: src/usr/local/www/status_dhcp_leases.php:465
msgid "n/a"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:468
-#: src/usr/local/www/status_dhcpv6_leases.php:530
+#: src/usr/local/www/status_dhcp_leases.php:471
+#: src/usr/local/www/status_dhcpv6_leases.php:533
msgid "Add static mapping"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:472
-#: src/usr/local/www/status_dhcpv6_leases.php:532
+#: src/usr/local/www/status_dhcp_leases.php:475
+#: src/usr/local/www/status_dhcpv6_leases.php:535
msgid "Add WOL mapping"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:474
+#: src/usr/local/www/status_dhcp_leases.php:477
msgid "Send WOL packet"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:478
-#: src/usr/local/www/status_dhcpv6_leases.php:534
+#: src/usr/local/www/status_dhcp_leases.php:481
+#: src/usr/local/www/status_dhcpv6_leases.php:537
msgid "Delete lease"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:489
+#: src/usr/local/www/status_dhcp_leases.php:492
msgid "Leases in Use"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:497
+#: src/usr/local/www/status_dhcp_leases.php:500
msgid "# of leases in use"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:518
-#: src/usr/local/www/status_dhcpv6_leases.php:624
+#: src/usr/local/www/status_dhcp_leases.php:521
+#: src/usr/local/www/status_dhcpv6_leases.php:627
msgid "Show active and static leases only"
msgstr ""
-#: src/usr/local/www/status_dhcp_leases.php:520
-#: src/usr/local/www/status_dhcpv6_leases.php:626
+#: src/usr/local/www/status_dhcp_leases.php:523
+#: src/usr/local/www/status_dhcpv6_leases.php:629
msgid "Show all configured leases"
msgstr ""
@@ -22611,19 +22887,19 @@ msgid "No leases file found. Is the DHCPv6 server active?"
msgstr ""
#: src/usr/local/www/status_dhcpv6_leases.php:458
-#: src/usr/local/www/status_dhcpv6_leases.php:552
+#: src/usr/local/www/status_dhcpv6_leases.php:555
msgid "IAID"
msgstr ""
-#: src/usr/local/www/status_dhcpv6_leases.php:545
+#: src/usr/local/www/status_dhcpv6_leases.php:548
msgid "Delegated Prefixes"
msgstr ""
-#: src/usr/local/www/status_dhcpv6_leases.php:551
+#: src/usr/local/www/status_dhcpv6_leases.php:554
msgid "IPv6 Prefix"
msgstr ""
-#: src/usr/local/www/status_dhcpv6_leases.php:603
+#: src/usr/local/www/status_dhcpv6_leases.php:606
msgid "Routed To"
msgstr ""
@@ -22663,10 +22939,10 @@ msgstr ""
#: src/usr/local/www/status_gateway_groups.php:90
#: src/usr/local/www/status_gateways.php:82
#: src/usr/local/www/system_gateway_groups.php:76
-#: src/usr/local/www/system_gateway_groups.php:124
-#: src/usr/local/www/system_gateway_groups.php:140
-#: src/usr/local/www/system_gateway_groups.php:144
-#: src/usr/local/www/system_gateway_groups_edit.php:180
+#: src/usr/local/www/system_gateway_groups.php:138
+#: src/usr/local/www/system_gateway_groups.php:154
+#: src/usr/local/www/system_gateway_groups.php:158
+#: src/usr/local/www/system_gateway_groups_edit.php:181
#: src/usr/local/www/system_gateways.php:264
#: src/usr/local/www/system_routes.php:264
msgid "Gateway Groups"
@@ -22679,9 +22955,9 @@ msgstr ""
#: src/usr/local/www/status_gateway_groups.php:152
#: src/usr/local/www/status_gateways.php:162
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:238
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:96
-#: src/usr/local/www/diag_smart.php:400
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:250
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:100
+#: src/usr/local/www/diag_smart.php:425
msgid "Offline"
msgstr ""
@@ -22708,7 +22984,7 @@ msgid "RTTsd"
msgstr ""
#: src/usr/local/www/status_gateways.php:98
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:92
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:93
msgid "Loss"
msgstr ""
@@ -22716,15 +22992,15 @@ msgstr ""
#: src/usr/local/www/status_gateways.php:140
#: src/usr/local/www/status_gateways.php:151
#: src/usr/local/www/status_gateways.php:178
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:254
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:262
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:263
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:264
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:266
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:274
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:275
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:276
msgid "Pending"
msgstr ""
#: src/usr/local/www/status_gateways.php:159
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:235
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:247
msgid "Offline (forced)"
msgstr ""
@@ -22732,46 +23008,48 @@ msgstr ""
msgid "Last checked"
msgstr ""
-#: src/usr/local/www/status_graph.php:157
+#: src/usr/local/www/status_graph.php:172
msgid "Graph Settings"
msgstr ""
-#: src/usr/local/www/status_graph.php:173
-#: src/usr/local/www/status_graph.php:275
+#: src/usr/local/www/status_graph.php:188
+#: src/usr/local/www/status_graph.php:290
msgid "Bandwidth In"
msgstr ""
-#: src/usr/local/www/status_graph.php:174
-#: src/usr/local/www/status_graph.php:276
+#: src/usr/local/www/status_graph.php:189
+#: src/usr/local/www/status_graph.php:291
msgid "Bandwidth Out"
msgstr ""
-#: src/usr/local/www/status_graph.php:183
+#: src/usr/local/www/status_graph.php:198
+#: src/usr/local/www/system_groupmanager.php:420
msgid "Local"
msgstr ""
-#: src/usr/local/www/status_graph.php:184
+#: src/usr/local/www/status_graph.php:199
+#: src/usr/local/www/system_groupmanager.php:420
msgid "Remote"
msgstr ""
-#: src/usr/local/www/status_graph.php:197
+#: src/usr/local/www/status_graph.php:212
msgid "FQDN"
msgstr ""
-#: src/usr/local/www/status_graph.php:199
+#: src/usr/local/www/status_graph.php:214
msgid "Display"
msgstr ""
-#: src/usr/local/www/status_graph.php:228
-#: src/usr/local/www/status_graph.php:229
+#: src/usr/local/www/status_graph.php:243
+#: src/usr/local/www/status_graph.php:244
msgid "Bits/sec"
msgstr ""
-#: src/usr/local/www/status_graph.php:274
+#: src/usr/local/www/status_graph.php:289
msgid "Host IP"
msgstr ""
-#: src/usr/local/www/status_graph.php:274
+#: src/usr/local/www/status_graph.php:289
msgid "Host Name or IP"
msgstr ""
@@ -22787,299 +23065,300 @@ msgstr ""
#: src/usr/local/www/status_graph_cpu.php:80
#, php-format
msgid ""
-"If you cannot see the graph, you may have to install the %1$sAdobe SVG viewer"
-"%2$s"
+"If the graph cannot be seen, the %1$sAdobe SVG viewer%2$s may need to be "
+"installed"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:120
+#: src/usr/local/www/status_interfaces.php:123
msgid " Interface "
msgstr ""
-#: src/usr/local/www/status_interfaces.php:125
-#: src/usr/local/www/status_interfaces.php:126
+#: src/usr/local/www/status_interfaces.php:128
+#: src/usr/local/www/status_interfaces.php:129
msgid "Release"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:125
-#: src/usr/local/www/status_interfaces.php:126
+#: src/usr/local/www/status_interfaces.php:128
+#: src/usr/local/www/status_interfaces.php:129
msgid "Renew"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:127
-#: src/usr/local/www/status_interfaces.php:128
-#: src/usr/local/www/status_interfaces.php:129
#: src/usr/local/www/status_interfaces.php:130
-msgid "Connect"
+#: src/usr/local/www/status_interfaces.php:131
+#: src/usr/local/www/status_interfaces.php:132
+#: src/usr/local/www/status_interfaces.php:133
+#: src/usr/local/www/status_ipsec.php:266
+#: src/usr/local/www/status_ipsec.php:378
+msgid "Disconnect"
msgstr ""
+#: src/usr/local/www/status_interfaces.php:130
#: src/usr/local/www/status_interfaces.php:131
-msgid "Uptime "
+#: src/usr/local/www/status_interfaces.php:132
+#: src/usr/local/www/status_interfaces.php:133
+msgid "Connect"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:132
+#: src/usr/local/www/status_interfaces.php:134
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:187
+msgid "Uptime"
+msgstr ""
+
+#: src/usr/local/www/status_interfaces.php:135
msgid "Cell Signal (RSSI)"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:133
+#: src/usr/local/www/status_interfaces.php:136
msgid "Cell Mode"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:134
+#: src/usr/local/www/status_interfaces.php:137
msgid "Cell SIM State"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:135
+#: src/usr/local/www/status_interfaces.php:138
msgid "Cell Service"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:136
+#: src/usr/local/www/status_interfaces.php:139
msgid "Cell Upstream"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:137
+#: src/usr/local/www/status_interfaces.php:140
msgid "Cell Downstream"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:138
+#: src/usr/local/www/status_interfaces.php:141
msgid "Cell Current Up"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:139
+#: src/usr/local/www/status_interfaces.php:142
msgid "Cell Current Down"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:150
+#: src/usr/local/www/status_interfaces.php:153
msgid "Subnet mask IPv4"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:152
+#: src/usr/local/www/status_interfaces.php:155
msgid "IPv6 Link Local"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:153
+#: src/usr/local/www/status_interfaces.php:156
msgid "IPv6 Address"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:154
+#: src/usr/local/www/status_interfaces.php:157
msgid "Subnet mask IPv6"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:161
+#: src/usr/local/www/status_interfaces.php:164
msgid "ISP DNS servers"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:168
+#: src/usr/local/www/status_interfaces.php:171
msgid "Media"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:170
+#: src/usr/local/www/status_interfaces.php:173
msgid "LAGG Ports"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:173
+#: src/usr/local/www/status_interfaces.php:176
msgid "BSSID"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:175
+#: src/usr/local/www/status_interfaces.php:178
msgid "RSSI"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:176
+#: src/usr/local/www/status_interfaces.php:179
msgid "In/out packets"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:177
+#: src/usr/local/www/status_interfaces.php:181
msgid "In/out packets (pass)"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:178
+#: src/usr/local/www/status_interfaces.php:183
msgid "In/out packets (block)"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:179
+#: src/usr/local/www/status_interfaces.php:185
msgid "In/out errors"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:180
+#: src/usr/local/www/status_interfaces.php:186
#: src/usr/local/www/widgets/widgets/interface_statistics.widget.php:79
msgid "Collisions"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:183
+#: src/usr/local/www/status_interfaces.php:189
msgid "Bridge ("
msgstr ""
-#: src/usr/local/www/status_interfaces.php:200
+#: src/usr/local/www/status_interfaces.php:206
msgid "Total interrupts"
msgstr ""
-#: src/usr/local/www/status_interfaces.php:211
+#: src/usr/local/www/status_interfaces.php:217
msgid ""
"Using dial-on-demand will bring the connection up again if any packet "
"triggers it. To substantiate this point: disconnecting manually will "
"<strong>not</strong> prevent dial-on-demand from making connections to the "
-"outside! Don't use dial-on-demand if you want to make sure that the line is "
-"kept disconnected."
-msgstr ""
-
-#: src/usr/local/www/status_ipsec.php:70 src/usr/local/www/status_ipsec.php:119
-#: src/usr/local/www/status_ipsec_leases.php:73
-#: src/usr/local/www/status_ipsec_sad.php:86
-#: src/usr/local/www/status_ipsec_spd.php:79
-#: src/usr/local/www/widgets/widgets/ipsec.widget.php:205
-msgid "Overview"
-msgstr ""
-
-#: src/usr/local/www/status_ipsec.php:121
-#: src/usr/local/www/status_ipsec_leases.php:75
-#: src/usr/local/www/status_ipsec_sad.php:69
-#: src/usr/local/www/status_ipsec_sad.php:88
-#: src/usr/local/www/status_ipsec_spd.php:81
-msgid "SADs"
-msgstr ""
-
-#: src/usr/local/www/status_ipsec.php:122
-#: src/usr/local/www/status_ipsec_leases.php:76
-#: src/usr/local/www/status_ipsec_sad.php:89
-#: src/usr/local/www/status_ipsec_spd.php:72
-#: src/usr/local/www/status_ipsec_spd.php:82
-msgid "SPDs"
+"outside! Don't use dial-on-demand if the line is to be kept disconnected."
msgstr ""
-#: src/usr/local/www/status_ipsec.php:127
-msgid "IPsec Status"
+#: src/usr/local/www/status_ipsec.php:142
+#: src/usr/local/www/status_ipsec.php:175
+msgid "Any identifier"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:133
-msgid "Local ID"
+#: src/usr/local/www/status_ipsec.php:226
+#: src/usr/local/www/status_ipsec.php:248
+#: src/usr/local/www/status_ipsec.php:336
+#: src/usr/local/www/status_ipsec.php:337
+#: src/usr/local/www/status_ipsec.php:338
+msgid " seconds ("
msgstr ""
-#: src/usr/local/www/status_ipsec.php:135
-msgid "Remote ID"
+#: src/usr/local/www/status_ipsec.php:248
+msgid ") ago"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:136
-msgid "Remote IP"
+#: src/usr/local/www/status_ipsec.php:257
+#: src/usr/local/www/status_ipsec.php:259
+#: src/usr/local/www/status_ipsec.php:478
+msgid "Connect VPN"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:137
-msgid "Role"
+#: src/usr/local/www/status_ipsec.php:264
+msgid "Disconnect VPN"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:138
-msgid "Reauth"
+#: src/usr/local/www/status_ipsec.php:281
+msgid "Show child SA entries"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:139
-#: src/usr/local/www/status_ipsec.php:309
-msgid "Algo"
+#: src/usr/local/www/status_ipsec.php:315
+msgid "Local: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:167
-#: src/usr/local/www/status_ipsec.php:200
-msgid "Any identifier"
+#: src/usr/local/www/status_ipsec.php:319
+msgid "Remote: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:250
-#: src/usr/local/www/status_ipsec.php:270
-#: src/usr/local/www/status_ipsec.php:354
-#: src/usr/local/www/status_ipsec.php:355
-#: src/usr/local/www/status_ipsec.php:356
-msgid " seconds ("
+#: src/usr/local/www/status_ipsec.php:336
+msgid "Rekey: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:277
-#: src/usr/local/www/status_ipsec.php:278
-#: src/usr/local/www/status_ipsec.php:494
-msgid "Connect VPN"
+#: src/usr/local/www/status_ipsec.php:337
+msgid "Life: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:283
-msgid "Disconnect VPN"
+#: src/usr/local/www/status_ipsec.php:338
+msgid "Install: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:298
-msgid "Show child SA entries"
+#: src/usr/local/www/status_ipsec.php:359
+msgid "IPComp: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:305
-msgid "Local subnets"
+#: src/usr/local/www/status_ipsec.php:369
+msgid "Bytes-In: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:306
-msgid "Local SPI(s)"
+#: src/usr/local/www/status_ipsec.php:370
+msgid "Packets-In: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:307
-msgid "Remote subnets"
+#: src/usr/local/www/status_ipsec.php:371
+msgid "Bytes-Out: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:308
-msgid "Times"
+#: src/usr/local/www/status_ipsec.php:372
+msgid "Packets-Out: "
msgstr ""
-#: src/usr/local/www/status_ipsec.php:310
-msgid "Stats"
+#: src/usr/local/www/status_ipsec.php:376
+msgid "Disconnect Child SA"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:333
-msgid "Local: "
+#: src/usr/local/www/status_ipsec.php:465
+msgid "Awaiting connections"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:337
-msgid "Remote: "
+#: src/usr/local/www/status_ipsec.php:473
+msgid "Disconnected"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:354
-msgid "Rekey: "
+#: src/usr/local/www/status_ipsec.php:490
+#: src/usr/local/www/status_ipsec.php:496
+#: src/usr/local/www/status_ipsec_leases.php:73
+#: src/usr/local/www/status_ipsec_sad.php:86
+#: src/usr/local/www/status_ipsec_spd.php:79
+#: src/usr/local/www/widgets/widgets/ipsec.widget.php:205
+msgid "Overview"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:355
-msgid "Life: "
+#: src/usr/local/www/status_ipsec.php:498
+#: src/usr/local/www/status_ipsec_leases.php:75
+#: src/usr/local/www/status_ipsec_sad.php:69
+#: src/usr/local/www/status_ipsec_sad.php:88
+#: src/usr/local/www/status_ipsec_spd.php:81
+msgid "SADs"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:356
-msgid "Install: "
+#: src/usr/local/www/status_ipsec.php:499
+#: src/usr/local/www/status_ipsec_leases.php:76
+#: src/usr/local/www/status_ipsec_sad.php:89
+#: src/usr/local/www/status_ipsec_spd.php:72
+#: src/usr/local/www/status_ipsec_spd.php:82
+msgid "SPDs"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:375
-msgid "IPComp: "
+#: src/usr/local/www/status_ipsec.php:504
+msgid "IPsec Status"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:385
-msgid "Bytes-In: "
+#: src/usr/local/www/status_ipsec.php:510
+msgid "Local ID"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:386
-msgid "Packets-In: "
+#: src/usr/local/www/status_ipsec.php:512
+msgid "Remote ID"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:387
-msgid "Bytes-Out: "
+#: src/usr/local/www/status_ipsec.php:513
+msgid "Remote IP"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:388
-msgid "Packets-Out: "
+#: src/usr/local/www/status_ipsec.php:514
+msgid "Role"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:392
-msgid "Disconnect Child SA"
+#: src/usr/local/www/status_ipsec.php:515
+msgid "Reauth"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:482
-msgid "Awaiting connections"
+#: src/usr/local/www/status_ipsec.php:516
+msgid "Algo"
msgstr ""
-#: src/usr/local/www/status_ipsec.php:490
-msgid "Disconnected"
+#: src/usr/local/www/status_ipsec.php:524
+msgid "Collecting IPsec status information."
msgstr ""
-#: src/usr/local/www/status_ipsec.php:531
+#: src/usr/local/www/status_ipsec.php:541
#: src/usr/local/www/status_ipsec_leases.php:162
#: src/usr/local/www/status_ipsec_sad.php:161
#: src/usr/local/www/status_ipsec_spd.php:145
#, php-format
-msgid "You can configure IPsec %1$shere%2$s."
+msgid "IPsec can be configured %1$shere%2$s."
+msgstr ""
+
+#: src/usr/local/www/status_ipsec.php:574
+msgid "No IPsec status information available."
msgstr ""
#: src/usr/local/www/status_ipsec_leases.php:86
@@ -23110,6 +23389,10 @@ msgstr ""
msgid "Data"
msgstr ""
+#: src/usr/local/www/status_ipsec_sad.php:138
+msgid "Remove this SPD Entry"
+msgstr ""
+
#: src/usr/local/www/status_ipsec_sad.php:149
msgid "No IPsec security associations."
msgstr ""
@@ -23156,7 +23439,7 @@ msgstr ""
#: src/usr/local/www/status_lb_vs.php:131
#: src/usr/local/www/widgets/widgets/load_balancer_status.widget.php:105
-#: src/usr/local/www/system.php:558
+#: src/usr/local/www/system.php:584
msgid "Active"
msgstr ""
@@ -23224,14 +23507,14 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_keys_edit.php:155
#: src/usr/local/www/vpn_ipsec_mobile.php:339
#: src/usr/local/www/vpn_ipsec_phase1.php:664
-#: src/usr/local/www/vpn_ipsec_phase1.php:667
+#: src/usr/local/www/vpn_ipsec_phase1.php:666
#: src/usr/local/www/vpn_ipsec_phase2.php:441
#: src/usr/local/www/vpn_ipsec_phase2.php:444
#: src/usr/local/www/vpn_ipsec_settings.php:236
#: src/usr/local/www/vpn_l2tp.php:219 src/usr/local/www/vpn_l2tp_users.php:63
#: src/usr/local/www/vpn_l2tp_users_edit.php:63
#: src/usr/local/www/vpn_openvpn_client.php:426
-#: src/usr/local/www/vpn_openvpn_csc.php:308
+#: src/usr/local/www/vpn_openvpn_csc.php:312
#: src/usr/local/www/vpn_openvpn_server.php:592
msgid "VPN"
msgstr ""
@@ -23329,7 +23612,7 @@ msgstr ""
#: src/usr/local/www/status_logs_common.inc:321
#: src/usr/local/www/status_logs_common.inc:529
-#: src/usr/local/www/status_logs_vpn.php:479 src/usr/local/www/system.php:539
+#: src/usr/local/www/status_logs_vpn.php:479 src/usr/local/www/system.php:559
msgid "Log Filter"
msgstr ""
@@ -23390,7 +23673,7 @@ msgstr ""
#: src/usr/local/www/status_logs_common.inc:764
#: src/usr/local/www/status_logs_settings.php:200
-#: src/usr/local/www/system_advanced_admin.php:599
+#: src/usr/local/www/system_advanced_admin.php:600
msgid "webConfigurator configuration has changed. Restarting webConfigurator."
msgstr ""
@@ -23404,12 +23687,12 @@ msgid "Manage"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:816
-#: src/usr/local/www/diag_nanobsd.php:162
+#: src/usr/local/www/diag_nanobsd.php:167
msgid " "
msgstr ""
#: src/usr/local/www/status_logs_common.inc:825
-#: src/usr/local/www/status_logs_settings.php:255
+#: src/usr/local/www/status_logs_settings.php:252
msgid "Forward/Reverse Display"
msgstr ""
@@ -23427,7 +23710,7 @@ msgstr ""
#: src/usr/local/www/status_logs_common.inc:854
#: src/usr/local/www/status_logs_common.inc:859
-#: src/usr/local/www/status_logs_settings.php:262
+#: src/usr/local/www/status_logs_settings.php:259
msgid "GUI Log Entries"
msgstr ""
@@ -23439,7 +23722,7 @@ msgstr ""
#: src/usr/local/www/status_logs_common.inc:868
#: src/usr/local/www/status_logs_common.inc:873
-#: src/usr/local/www/status_logs_settings.php:270
+#: src/usr/local/www/status_logs_settings.php:267
msgid "Log file size (Bytes)"
msgstr ""
@@ -23465,7 +23748,7 @@ msgid ""
msgstr ""
#: src/usr/local/www/status_logs_common.inc:917
-#: src/usr/local/www/status_logs_settings.php:306
+#: src/usr/local/www/status_logs_settings.php:303
msgid "Web Server Log"
msgstr ""
@@ -23476,7 +23759,7 @@ msgid ""
msgstr ""
#: src/usr/local/www/status_logs_common.inc:928
-#: src/usr/local/www/status_logs_settings.php:278
+#: src/usr/local/www/status_logs_settings.php:275
msgid "Log firewall default blocks"
msgstr ""
@@ -23494,31 +23777,31 @@ msgid ""
msgstr ""
#: src/usr/local/www/status_logs_common.inc:959
-#: src/usr/local/www/status_logs_settings.php:323
+#: src/usr/local/www/status_logs_settings.php:320
msgid "Dont load descriptions"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:960
-#: src/usr/local/www/status_logs_settings.php:324
+#: src/usr/local/www/status_logs_settings.php:321
msgid "Display as column"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:961
-#: src/usr/local/www/status_logs_settings.php:325
+#: src/usr/local/www/status_logs_settings.php:322
msgid "Display as second row"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:956
-#: src/usr/local/www/status_logs_settings.php:320
+#: src/usr/local/www/status_logs_settings.php:317
msgid "Where to show rule descriptions"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:963
-#: src/usr/local/www/status_logs_settings.php:327
+#: src/usr/local/www/status_logs_settings.php:324
msgid ""
-"Show the applied rule description below or in the firewall log rows<br /"
+"Show the applied rule description below or in the firewall log rows.<br /"
">Displaying rule descriptions for all lines in the log might affect "
-"performance with large rule sets"
+"performance with large rule sets."
msgstr ""
#: src/usr/local/www/status_logs_common.inc:983
@@ -23557,7 +23840,7 @@ msgid "Easy Rule: Add to Block List"
msgstr ""
#: src/usr/local/www/status_logs_filter.php:269
-msgid "Do you really want to add this BLOCK rule?"
+msgid "Confirmation required to add this BLOCK rule."
msgstr ""
#: src/usr/local/www/status_logs_filter.php:278
@@ -23565,7 +23848,7 @@ msgid "Easy Rule: Pass this traffic"
msgstr ""
#: src/usr/local/www/status_logs_filter.php:278
-msgid "Do you really want to add this PASS rule?"
+msgid "Confirmation required to add this PASS rule."
msgstr ""
#: src/usr/local/www/status_logs_filter_dynamic.php:414
@@ -23604,12 +23887,8 @@ msgstr ""
msgid "Reverse Resolve with DNS"
msgstr ""
-#: src/usr/local/www/status_logs_filter_summary.php:210
-msgid "Lookup"
-msgstr ""
-
#: src/usr/local/www/status_logs_settings.php:109
-#: src/usr/local/www/status_logs_settings.php:339
+#: src/usr/local/www/status_logs_settings.php:336
msgid "Reset Log Files"
msgstr ""
@@ -23646,9 +23925,9 @@ msgstr ""
#: src/usr/local/www/status_logs_settings.php:214
msgid ""
"NOTE: Log sizes are changed the next time a log file is cleared or deleted. "
-"To immediately increase the size of the log files, you must first save the "
-"options to set the size, then clear all logs using the \"Reset Log Files\" "
-"option farther down this page. "
+"To immediately increase the size of the log files, first save the options to "
+"set the size, then clear all logs using the \"Reset Log Files\" option "
+"farther down this page. "
msgstr ""
#: src/usr/local/www/status_logs_settings.php:215
@@ -23673,9 +23952,8 @@ msgstr ""
#: src/usr/local/www/status_logs_settings.php:220
msgid ""
-"If you pick a single IP, remote syslog servers must all be of that IP type. "
-"If you wish to mix IPv4 and IPv6 remote syslog servers, you must bind to all "
-"interfaces."
+"If a single IP is picked, remote syslog servers must all be of that IP type. "
+"To mix IPv4 and IPv6 remote syslog servers, bind to all interfaces."
msgstr ""
#: src/usr/local/www/status_logs_settings.php:222
@@ -23684,65 +23962,65 @@ msgid ""
"will bind to all addresses."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:266
+#: src/usr/local/www/status_logs_settings.php:263
msgid ""
"This is only the number of log entries displayed in the GUI. It does not "
"affect how many entries are contained in the actual log files."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:281
+#: src/usr/local/www/status_logs_settings.php:278
msgid ""
"Log packets that are <strong>blocked</strong> by the implicit default block "
"rule. - Per-rule logging options are still respected."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:288
+#: src/usr/local/www/status_logs_settings.php:285
msgid ""
"Log packets that are <strong>allowed</strong> by the implicit default pass "
"rule. - Per-rule logging options are still respected. "
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:309
+#: src/usr/local/www/status_logs_settings.php:306
msgid ""
"If this is checked, errors from the web server process for the GUI or "
-"Captive Portal will appear in the main system log"
+"Captive Portal will appear in the main system log."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:313
+#: src/usr/local/www/status_logs_settings.php:310
msgid "Raw Logs"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:316
+#: src/usr/local/www/status_logs_settings.php:313
msgid ""
"If this is checked, filter logs are shown as generated by the packet filter, "
"without any formatting. This will reveal more detailed information, but it "
-"is more difficult to read"
+"is more difficult to read."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:332
+#: src/usr/local/www/status_logs_settings.php:329
msgid "Local Logging"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:340
+#: src/usr/local/www/status_logs_settings.php:339
msgid ""
"Clears all local log files and reinitializes them as empty logs. This also "
-"restarts the DHCP daemon. Use the Save button first if you have made any "
-"setting changes."
+"restarts the DHCP daemon. Use the Save button first if any setting changes "
+"have been made."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:343
+#: src/usr/local/www/status_logs_settings.php:342
msgid "Remote Logging Options"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:348
+#: src/usr/local/www/status_logs_settings.php:347
msgid "Enable Remote Logging"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:357
+#: src/usr/local/www/status_logs_settings.php:356
msgid "Default (any)"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:365
+#: src/usr/local/www/status_logs_settings.php:364
msgid ""
"This option is only used when a non-default address is chosen as the source "
"above. This option only expresses a preference; If an IP address of the "
@@ -23750,34 +24028,34 @@ msgid ""
"tried."
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:369
+#: src/usr/local/www/status_logs_settings.php:368
msgid "Remote log servers"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:374
-#: src/usr/local/www/vpn_openvpn_csc.php:484
-#: src/usr/local/www/vpn_openvpn_csc.php:525
-#: src/usr/local/www/vpn_openvpn_csc.php:575
+#: src/usr/local/www/status_logs_settings.php:373
+#: src/usr/local/www/vpn_openvpn_csc.php:488
+#: src/usr/local/www/vpn_openvpn_csc.php:529
+#: src/usr/local/www/vpn_openvpn_csc.php:579
msgid "Server 1"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:382
-#: src/usr/local/www/vpn_openvpn_csc.php:491
-#: src/usr/local/www/vpn_openvpn_csc.php:532
-#: src/usr/local/www/vpn_openvpn_csc.php:582
+#: src/usr/local/www/status_logs_settings.php:381
+#: src/usr/local/www/vpn_openvpn_csc.php:495
+#: src/usr/local/www/vpn_openvpn_csc.php:536
+#: src/usr/local/www/vpn_openvpn_csc.php:586
msgid "Server 2"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:390
-#: src/usr/local/www/vpn_openvpn_csc.php:498
+#: src/usr/local/www/status_logs_settings.php:389
+#: src/usr/local/www/vpn_openvpn_csc.php:502
msgid "Server 3"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:398
+#: src/usr/local/www/status_logs_settings.php:397
msgid "Remote Syslog Contents"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:464
+#: src/usr/local/www/status_logs_settings.php:463
msgid ""
"Syslog sends UDP datagrams to port 514 on the specified remote syslog "
"server, unless another port is specified. Be sure to set syslogd on the "
@@ -23825,84 +24103,84 @@ msgstr ""
msgid "Outlier"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:193
+#: src/usr/local/www/status_ntpd.php:205
+#, php-format
+msgid ""
+"Statistics unavailable because ntpq and ntpdc queries are disabled in the "
+"%sNTP service settings%s"
+msgstr ""
+
+#: src/usr/local/www/status_ntpd.php:211
+#, php-format
+msgid "No peers found, %sis the ntp service running?%s"
+msgstr ""
+
+#: src/usr/local/www/status_ntpd.php:268
+msgid "in view "
+msgstr ""
+
+#: src/usr/local/www/status_ntpd.php:275
+msgid "in use "
+msgstr ""
+
+#: src/usr/local/www/status_ntpd.php:283
+msgid "Google Maps Link"
+msgstr ""
+
+#: src/usr/local/www/status_ntpd.php:294
msgid "Network Time Protocol Status"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:200
+#: src/usr/local/www/status_ntpd.php:301
msgid "Ref ID"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:203
+#: src/usr/local/www/status_ntpd.php:304
msgid "When"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:204
+#: src/usr/local/www/status_ntpd.php:305
msgid "Poll"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:205
+#: src/usr/local/www/status_ntpd.php:306
msgid "Reach"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:206
-#: src/usr/local/www/vpn_ipsec_phase1.php:932
+#: src/usr/local/www/status_ntpd.php:307
+#: src/usr/local/www/vpn_ipsec_phase1.php:930
msgid "Delay"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:207
+#: src/usr/local/www/status_ntpd.php:308
msgid "Offset"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:208
+#: src/usr/local/www/status_ntpd.php:309
msgid "Jitter"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:217
-#, php-format
-msgid ""
-"Statistics unavailable because ntpq and ntpdc queries are disabled in the "
-"%sNTP service settings%s"
-msgstr ""
-
-#: src/usr/local/www/status_ntpd.php:225
-#, php-format
-msgid "No peers found, %sis the ntp service running?%s"
-msgstr ""
-
-#: src/usr/local/www/status_ntpd.php:266
+#: src/usr/local/www/status_ntpd.php:331
msgid "GPS Information"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:272
+#: src/usr/local/www/status_ntpd.php:336
msgid "Clock Latitude"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:275
+#: src/usr/local/www/status_ntpd.php:337
msgid "Clock Longitude"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:281
+#: src/usr/local/www/status_ntpd.php:341
msgid "Clock Altitude"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:290
+#: src/usr/local/www/status_ntpd.php:348
#: src/usr/local/www/widgets/widgets/ntp_status.widget.php:209
msgid "Satellites"
msgstr ""
-#: src/usr/local/www/status_ntpd.php:322
-msgid "in view "
-msgstr ""
-
-#: src/usr/local/www/status_ntpd.php:329
-msgid "in use "
-msgstr ""
-
-#: src/usr/local/www/status_ntpd.php:338
-msgid "Google Maps Link"
-msgstr ""
-
#: src/usr/local/www/status_openvpn.php:115
#: src/usr/local/www/widgets/widgets/openvpn.widget.php:96
msgid "An error occurred."
@@ -23913,40 +24191,40 @@ msgid "Client Connections"
msgstr ""
#: src/usr/local/www/status_openvpn.php:137
-#: src/usr/local/www/status_openvpn.php:204
-#: src/usr/local/www/system_camanager.php:627
-#: src/usr/local/www/system_certmanager.php:789
-#: src/usr/local/www/system_certmanager.php:904
-#: src/usr/local/www/vpn_openvpn_csc.php:670
+#: src/usr/local/www/status_openvpn.php:208
+#: src/usr/local/www/system_camanager.php:624
+#: src/usr/local/www/system_certmanager.php:748
+#: src/usr/local/www/system_certmanager.php:867
+#: src/usr/local/www/vpn_openvpn_csc.php:674
msgid "Common Name"
msgstr ""
#: src/usr/local/www/status_openvpn.php:138
-#: src/usr/local/www/status_openvpn.php:205
+#: src/usr/local/www/status_openvpn.php:209
msgid "Real Address"
msgstr ""
#: src/usr/local/www/status_openvpn.php:139
-#: src/usr/local/www/status_openvpn.php:255
-#: src/usr/local/www/status_openvpn.php:311
+#: src/usr/local/www/status_openvpn.php:259
+#: src/usr/local/www/status_openvpn.php:315
msgid "Virtual Address"
msgstr ""
#: src/usr/local/www/status_openvpn.php:140
-#: src/usr/local/www/status_openvpn.php:254
-#: src/usr/local/www/status_openvpn.php:310
+#: src/usr/local/www/status_openvpn.php:258
+#: src/usr/local/www/status_openvpn.php:314
msgid "Connected Since"
msgstr ""
#: src/usr/local/www/status_openvpn.php:141
-#: src/usr/local/www/status_openvpn.php:257
-#: src/usr/local/www/status_openvpn.php:313
+#: src/usr/local/www/status_openvpn.php:261
+#: src/usr/local/www/status_openvpn.php:317
msgid "Bytes Sent"
msgstr ""
#: src/usr/local/www/status_openvpn.php:142
-#: src/usr/local/www/status_openvpn.php:258
-#: src/usr/local/www/status_openvpn.php:314
+#: src/usr/local/www/status_openvpn.php:262
+#: src/usr/local/www/status_openvpn.php:318
msgid "Bytes Received"
msgstr ""
@@ -23957,54 +24235,55 @@ msgid "Kill client connection from %s"
msgstr ""
#: src/usr/local/www/status_openvpn.php:195
+#: src/usr/local/www/status_openvpn.php:197
msgid "Show Routing Table"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:195
+#: src/usr/local/www/status_openvpn.php:199
msgid "Display OpenVPN's internal routing table for this server."
msgstr ""
-#: src/usr/local/www/status_openvpn.php:199
+#: src/usr/local/www/status_openvpn.php:203
msgid "Routing Table"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:206
+#: src/usr/local/www/status_openvpn.php:210
msgid "Target Network"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:207
+#: src/usr/local/www/status_openvpn.php:211
msgid "Last Used"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:227
+#: src/usr/local/www/status_openvpn.php:231
msgid ""
"An IP address followed by C indicates a host currently connected through the "
"VPN."
msgstr ""
-#: src/usr/local/www/status_openvpn.php:247
+#: src/usr/local/www/status_openvpn.php:251
#: src/usr/local/www/widgets/widgets/openvpn.widget.php:158
msgid "Peer to Peer Server Instance Statistics"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:256
-#: src/usr/local/www/status_openvpn.php:312
+#: src/usr/local/www/status_openvpn.php:260
+#: src/usr/local/www/status_openvpn.php:316
msgid "Remote Host"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:303
+#: src/usr/local/www/status_openvpn.php:307
#: src/usr/local/www/widgets/widgets/openvpn.widget.php:208
msgid "Client Instance Statistics"
msgstr ""
-#: src/usr/local/www/status_openvpn.php:355
+#: src/usr/local/www/status_openvpn.php:359
msgid ""
-"If you have custom options that override the management features of OpenVPN "
+"If there are custom options that override the management features of OpenVPN "
"on a client or server, they will cause that OpenVPN instance to not work "
"correctly with this status page."
msgstr ""
-#: src/usr/local/www/status_openvpn.php:359
+#: src/usr/local/www/status_openvpn.php:363
msgid "No OpenVPN instances defined."
msgstr ""
@@ -24031,43 +24310,43 @@ msgstr ""
msgid "No queue statistics could be read."
msgstr ""
-#: src/usr/local/www/status_queues.php:150
+#: src/usr/local/www/status_queues.php:149
msgid "Traffic shaping is not configured."
msgstr ""
-#: src/usr/local/www/status_queues.php:189
+#: src/usr/local/www/status_queues.php:188
msgid "Status Queues"
msgstr ""
-#: src/usr/local/www/status_queues.php:195
+#: src/usr/local/www/status_queues.php:194
msgid "Statistics"
msgstr ""
-#: src/usr/local/www/status_queues.php:203
+#: src/usr/local/www/status_queues.php:202
msgid "Borrows"
msgstr ""
-#: src/usr/local/www/status_queues.php:204
+#: src/usr/local/www/status_queues.php:203
msgid "Suspends"
msgstr ""
-#: src/usr/local/www/status_queues.php:205
+#: src/usr/local/www/status_queues.php:204
msgid "Drops"
msgstr ""
-#: src/usr/local/www/status_queues.php:206
+#: src/usr/local/www/status_queues.php:205
msgid "Length"
msgstr ""
-#: src/usr/local/www/status_queues.php:220
+#: src/usr/local/www/status_queues.php:219
msgid "Queue graphs take 5 seconds to sample data."
msgstr ""
-#: src/usr/local/www/status_queues.php:283
+#: src/usr/local/www/status_queues.php:282
msgid "Loading"
msgstr ""
-#: src/usr/local/www/status_services.php:198
+#: src/usr/local/www/status_services.php:188
msgid "No services found."
msgstr ""
@@ -24113,70 +24392,72 @@ msgid ""
"time."
msgstr ""
-#: src/usr/local/www/system.php:175
+#: src/usr/local/www/system.php:176
msgid "The domain may only contain the characters a-z, 0-9, '-' and '.'."
msgstr ""
-#: src/usr/local/www/system.php:186
+#: src/usr/local/www/system.php:187
#, php-format
msgid "A valid IP address must be specified for DNS server %s."
msgstr ""
-#: src/usr/local/www/system.php:192
+#: src/usr/local/www/system.php:193
#, php-format
-msgid "You can not specify IPv6 gateway \"%1$s\" for IPv4 DNS server \"%2$s\"."
+msgid ""
+"The IPv6 gateway \"%1$s\" can not be specified for IPv4 DNS server \"%2$s\"."
msgstr ""
-#: src/usr/local/www/system.php:195
+#: src/usr/local/www/system.php:196
#, php-format
-msgid "You can not specify IPv4 gateway \"%1$s\" for IPv6 DNS server \"%2$s\"."
+msgid ""
+"The IPv4 gateway \"%1$s\" can not be specified for IPv6 DNS server \"%2$s\"."
msgstr ""
-#: src/usr/local/www/system.php:206
+#: src/usr/local/www/system.php:207
msgid ""
"Each configured DNS server must have a unique IP address. Remove the "
"duplicated IP."
msgstr ""
-#: src/usr/local/www/system.php:217
+#: src/usr/local/www/system.php:218
#, php-format
msgid ""
-"You can not assign a gateway to DNS '%s' server which is on a directly "
+"A gateway can not be assigned to DNS '%s' server which is on a directly "
"connected network."
msgstr ""
-#: src/usr/local/www/system.php:229
+#: src/usr/local/www/system.php:230
msgid ""
"A NTP Time Server name may only contain the characters a-z, 0-9, '-' and '.'."
msgstr ""
-#: src/usr/local/www/system.php:380
+#: src/usr/local/www/system.php:384
msgid "Name of the firewall host, without domain part"
msgstr ""
-#: src/usr/local/www/system.php:387
+#: src/usr/local/www/system.php:391
msgid ""
"Do not use 'local' as a domain name. It will cause local hosts running mDNS "
"(avahi, bonjour, etc.) to be unable to resolve local hosts not running mDNS."
msgstr ""
-#: src/usr/local/www/system.php:392
+#: src/usr/local/www/system.php:396
msgid "DNS Server Settings"
msgstr ""
-#: src/usr/local/www/system.php:398
+#: src/usr/local/www/system.php:402
msgid "DNS Server "
msgstr ""
-#: src/usr/local/www/system.php:402
+#: src/usr/local/www/system.php:406
msgid "DNS Server"
msgstr ""
-#: src/usr/local/www/system.php:445
+#: src/usr/local/www/system.php:449
msgid "DNS Server Override"
msgstr ""
-#: src/usr/local/www/system.php:448
+#: src/usr/local/www/system.php:452
#, php-format
msgid ""
"If this option is set, %s will use DNS servers assigned by a DHCP/PPP server "
@@ -24184,11 +24465,11 @@ msgid ""
"will not be assigned to DHCP and PPTP VPN clients."
msgstr ""
-#: src/usr/local/www/system.php:455
+#: src/usr/local/www/system.php:459
msgid "Disable DNS Forwarder"
msgstr ""
-#: src/usr/local/www/system.php:458
+#: src/usr/local/www/system.php:462
msgid ""
"By default localhost (127.0.0.1) will be used as the first DNS server where "
"the DNS Forwarder or DNS Resolver is enabled and set to listen on Localhost, "
@@ -24196,222 +24477,232 @@ msgid ""
"box omits localhost from the list of DNS servers."
msgstr ""
-#: src/usr/local/www/system.php:465
+#: src/usr/local/www/system.php:469
msgid "Localization"
msgstr ""
-#: src/usr/local/www/system.php:468
+#: src/usr/local/www/system.php:472
msgid "Timezone"
msgstr ""
-#: src/usr/local/www/system.php:471
-msgid "Select the location closest to you"
+#: src/usr/local/www/system.php:475
+msgid ""
+"Select the timezone or location within the timezone to be used by this "
+"system."
msgstr ""
-#: src/usr/local/www/system.php:474
+#: src/usr/local/www/system.php:478
msgid "Timeservers"
msgstr ""
-#: src/usr/local/www/system.php:477
+#: src/usr/local/www/system.php:481
msgid ""
"Use a space to separate multiple hosts (only one required). Remember to set "
-"up at least one DNS server if you enter a host name here!"
+"up at least one DNS server if a host name is entered here!"
msgstr ""
-#: src/usr/local/www/system.php:481
+#: src/usr/local/www/system.php:485
msgid "Language"
msgstr ""
-#: src/usr/local/www/system.php:484
+#: src/usr/local/www/system.php:488
msgid "Choose a language for the webConfigurator"
msgstr ""
-#: src/usr/local/www/system.php:503
-#: src/usr/local/www/system_advanced_admin.php:339
-#: src/usr/local/www/system_certmanager.php:1075
+#: src/usr/local/www/system.php:523
+#: src/usr/local/www/system_advanced_admin.php:341
+#: src/usr/local/www/system_certmanager.php:1043
msgid "webConfigurator"
msgstr ""
-#: src/usr/local/www/system.php:507
+#: src/usr/local/www/system.php:527
msgid "Theme"
msgstr ""
-#: src/usr/local/www/system.php:510
+#: src/usr/local/www/system.php:530
+#, php-format
msgid ""
"Choose an alternative css file (if installed) to change the appearance of "
-"the webConfigurator. css files are located in /usr/local/www/bootstrap/css"
+"the webConfigurator. css files are located in /usr/local/www/css/%s"
msgstr ""
-#: src/usr/local/www/system.php:516
+#: src/usr/local/www/system.php:536
msgid "Scrolls with page"
msgstr ""
-#: src/usr/local/www/system.php:516
+#: src/usr/local/www/system.php:536
msgid "Fixed (Remains visible at top of page)"
msgstr ""
-#: src/usr/local/www/system.php:514
+#: src/usr/local/www/system.php:534
msgid "Top Navigation"
msgstr ""
-#: src/usr/local/www/system.php:517
+#: src/usr/local/www/system.php:537
msgid "The fixed option is intended for large screens only."
msgstr ""
-#: src/usr/local/www/system.php:521
+#: src/usr/local/www/system.php:541
msgid "Dashboard Columns"
msgstr ""
-#: src/usr/local/www/system.php:525
-msgid "<span class=\"badge\" title=\"This feature is in BETA\">BETA</span>"
-msgstr ""
-
-#: src/usr/local/www/system.php:527
+#: src/usr/local/www/system.php:547
msgid "Associated Panels Show/Hide"
msgstr ""
-#: src/usr/local/www/system.php:534
+#: src/usr/local/www/system.php:554
msgid "Show the Available Widgets panel on the Dashboard."
msgstr ""
-#: src/usr/local/www/system.php:541
+#: src/usr/local/www/system.php:561
msgid "Show the Log Filter panel in System Logs."
msgstr ""
-#: src/usr/local/www/system.php:548
+#: src/usr/local/www/system.php:568
msgid "Show the Manage Log panel in System Logs."
msgstr ""
-#: src/usr/local/www/system.php:550
+#: src/usr/local/www/system.php:575
+msgid "Show the Settings panel in Status Monitoring."
+msgstr ""
+
+#: src/usr/local/www/system.php:577
msgid ""
"These options allow certain panels to be automatically hidden on page load. "
-"A control is provided in the title bar to un-hide the panel.\n"
-"<br /><span class=\"badge\" title=\"This feature is in BETA\">BETA</span>"
+"A control is provided in the title bar to un-hide the panel."
msgstr ""
-#: src/usr/local/www/system.php:557
+#: src/usr/local/www/system.php:583
msgid "Left Column Labels"
msgstr ""
-#: src/usr/local/www/system.php:560
+#: src/usr/local/www/system.php:586
msgid ""
"If selected, clicking a label in the left column will select/toggle the "
-"first item of the group.<br /><span class=\"badge\" title=\"This feature is "
-"in BETA\">BETA</span>"
+"first item of the group."
+msgstr ""
+
+#: src/usr/local/www/system.php:592
+#, php-format
+msgid "%sUser-created themes are unsupported, use at your own risk."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:111
-msgid "You must specify a valid webConfigurator port number"
+#: src/usr/local/www/system_advanced_admin.php:113
+msgid "A valid webConfigurator port number must be specified"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:117
+#: src/usr/local/www/system_advanced_admin.php:119
msgid "Max Processes must be a number 1 or greater"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:125
+#: src/usr/local/www/system_advanced_admin.php:127
#, php-format
msgid "Alternate hostname %s is not a valid hostname."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:301
+#: src/usr/local/www/system_advanced_admin.php:134
+msgid "A valid port number must be specified"
+msgstr ""
+
+#: src/usr/local/www/system_advanced_admin.php:303
#, php-format
msgid "One moment...redirecting to %s in 20 seconds."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:316
-#: src/usr/local/www/system_advanced_admin.php:328
+#: src/usr/local/www/system_advanced_admin.php:318
+#: src/usr/local/www/system_advanced_admin.php:330
#: src/usr/local/www/system_advanced_firewall.php:415
-#: src/usr/local/www/system_advanced_misc.php:316
+#: src/usr/local/www/system_advanced_misc.php:333
#: src/usr/local/www/system_advanced_network.php:184
-#: src/usr/local/www/system_advanced_notifications.php:228
+#: src/usr/local/www/system_advanced_notifications.php:227
#: src/usr/local/www/system_advanced_sysctl.php:186
msgid "Admin Access"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:329
+#: src/usr/local/www/system_advanced_admin.php:331
#: src/usr/local/www/system_advanced_firewall.php:404
#: src/usr/local/www/system_advanced_firewall.php:416
-#: src/usr/local/www/system_advanced_misc.php:317
+#: src/usr/local/www/system_advanced_misc.php:334
#: src/usr/local/www/system_advanced_network.php:185
-#: src/usr/local/www/system_advanced_notifications.php:229
+#: src/usr/local/www/system_advanced_notifications.php:228
#: src/usr/local/www/system_advanced_sysctl.php:187
msgid "Firewall & NAT"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:331
+#: src/usr/local/www/system_advanced_admin.php:333
#: src/usr/local/www/system_advanced_firewall.php:418
-#: src/usr/local/www/system_advanced_misc.php:304
-#: src/usr/local/www/system_advanced_misc.php:319
+#: src/usr/local/www/system_advanced_misc.php:320
+#: src/usr/local/www/system_advanced_misc.php:336
#: src/usr/local/www/system_advanced_network.php:187
-#: src/usr/local/www/system_advanced_notifications.php:231
+#: src/usr/local/www/system_advanced_notifications.php:230
#: src/usr/local/www/system_advanced_sysctl.php:189
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:277
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:280
msgid "Miscellaneous"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:332
+#: src/usr/local/www/system_advanced_admin.php:334
#: src/usr/local/www/system_advanced_firewall.php:419
-#: src/usr/local/www/system_advanced_misc.php:320
+#: src/usr/local/www/system_advanced_misc.php:337
#: src/usr/local/www/system_advanced_network.php:188
-#: src/usr/local/www/system_advanced_notifications.php:232
+#: src/usr/local/www/system_advanced_notifications.php:231
#: src/usr/local/www/system_advanced_sysctl.php:166
#: src/usr/local/www/system_advanced_sysctl.php:190
#: src/usr/local/www/system_advanced_sysctl.php:197
msgid "System Tunables"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:333
+#: src/usr/local/www/system_advanced_admin.php:335
#: src/usr/local/www/system_advanced_firewall.php:420
-#: src/usr/local/www/system_advanced_misc.php:321
+#: src/usr/local/www/system_advanced_misc.php:338
#: src/usr/local/www/system_advanced_network.php:189
-#: src/usr/local/www/system_advanced_notifications.php:216
-#: src/usr/local/www/system_advanced_notifications.php:233
+#: src/usr/local/www/system_advanced_notifications.php:215
+#: src/usr/local/www/system_advanced_notifications.php:232
#: src/usr/local/www/system_advanced_sysctl.php:191
msgid "Notifications"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:359
+#: src/usr/local/www/system_advanced_admin.php:361
msgid "Create or Import"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:378
+#: src/usr/local/www/system_advanced_admin.php:379
msgid "TCP port"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:382
+#: src/usr/local/www/system_advanced_admin.php:383
msgid ""
-"Enter a custom port number for the webConfigurator above if you want to "
-"override the default (80 for HTTP, 443 for HTTPS). Changes will take effect "
-"immediately after save."
+"Enter a custom port number for the webConfigurator above to override the "
+"default (80 for HTTP, 443 for HTTPS). Changes will take effect immediately "
+"after save."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:388
+#: src/usr/local/www/system_advanced_admin.php:389
msgid "Max Processes"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:391
+#: src/usr/local/www/system_advanced_admin.php:392
msgid ""
-"Enter the number of webConfigurator processes you want to run. This defaults "
-"to 2. Increasing this will allow more users/browsers to access the GUI "
+"Enter the number of webConfigurator processes to run. This defaults to 2. "
+"Increasing this will allow more users/browsers to access the GUI "
"concurrently."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:397
+#: src/usr/local/www/system_advanced_admin.php:398
msgid "WebGUI redirect"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:400
+#: src/usr/local/www/system_advanced_admin.php:401
msgid ""
"When this is unchecked, access to the webConfigurator is always permitted "
"even on port 80, regardless of the listening port configured. Check this box "
"to disable this automatically added redirect rule."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:406
+#: src/usr/local/www/system_advanced_admin.php:407
msgid "WebGUI Login Autocomplete"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:409
+#: src/usr/local/www/system_advanced_admin.php:410
msgid ""
"When this is checked, login credentials for the webConfigurator may be saved "
"by the browser. While convenient, some security standards require this to be "
@@ -24420,165 +24711,165 @@ msgid ""
"this option)."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:417
+#: src/usr/local/www/system_advanced_admin.php:418
msgid "WebGUI login messages"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:420
+#: src/usr/local/www/system_advanced_admin.php:421
msgid ""
"When this is checked, successful logins to the webConfigurator will not be "
"logged."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:431
+#: src/usr/local/www/system_advanced_admin.php:432
msgid "Anti-lockout"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:434
+#: src/usr/local/www/system_advanced_admin.php:435
#, php-format
msgid ""
"When this is unchecked, access to the webConfigurator on the %s interface is "
"always permitted, regardless of the user-defined firewall rule set. Check "
"this box to disable this automatically added rule, so access to the "
-"webConfigurator is controlled by the user-defined firewall rules (ensure you "
-"have a firewall rule in place that allows you in, or you will lock yourself "
-"out!)<em>Hint: the &quot;Set interface(s) IP address&quot; option in the "
-"console menu resets this setting as well.</em>"
+"webConfigurator is controlled by the user-defined firewall rules (ensure a "
+"firewall rule is in place that allows access, to avoid being locked out!) "
+"<em>Hint: the &quot;Set interface(s) IP address&quot; option in the console "
+"menu resets this setting as well.</em>"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:444
+#: src/usr/local/www/system_advanced_admin.php:445
msgid "DNS Rebind Check"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:447
+#: src/usr/local/www/system_advanced_admin.php:448
msgid ""
-"When this is unchecked, your system is protected against <a href=\"http://en."
+"When this is unchecked, the system is protected against <a href=\"http://en."
"wikipedia.org/wiki/DNS_rebinding\">DNS Rebinding attacks</a>. This blocks "
-"private IP responses from your configured DNS servers. Check this box to "
+"private IP responses from the configured DNS servers. Check this box to "
"disable this protection if it interferes with webConfigurator access or name "
-"resolution in your environment."
+"resolution in the environment."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:455
+#: src/usr/local/www/system_advanced_admin.php:456
msgid "Alternate Hostnames"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:458
+#: src/usr/local/www/system_advanced_admin.php:459
msgid ""
-"Alternate Hostnames for DNS Rebinding and HTTP_REFERER Checks. Here you can "
-"specify alternate hostnames by which the router may be queried, to bypass "
-"the DNS Rebinding Attack checks. Separate hostnames with spaces."
+"Alternate Hostnames for DNS Rebinding and HTTP_REFERER Checks. Specify "
+"alternate hostnames by which the router may be queried, to bypass the DNS "
+"Rebinding Attack checks. Separate hostnames with spaces."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:464
+#: src/usr/local/www/system_advanced_admin.php:465
msgid "Browser HTTP_REFERER enforcement"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:467
+#: src/usr/local/www/system_advanced_admin.php:468
msgid ""
"When this is unchecked, access to the webConfigurator is protected against "
"HTTP_REFERER redirection attempts. Check this box to disable this protection "
-"if you find that it interferes with webConfigurator access in certain corner "
-"cases such as using external scripts to interact with this system. More "
-"information on HTTP_REFERER is available from <a target=\"_blank\" href="
-"\"http://en.wikipedia.org/wiki/HTTP_referrer\">Wikipedia</a>."
+"if it interferes with webConfigurator access in certain corner cases such as "
+"using external scripts to interact with this system. More information on "
+"HTTP_REFERER is available from <a target=\"_blank\" href=\"http://en."
+"wikipedia.org/wiki/HTTP_referrer\">Wikipedia</a>."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:476
+#: src/usr/local/www/system_advanced_admin.php:477
msgid "Browser tab text"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:479
+#: src/usr/local/www/system_advanced_admin.php:480
msgid ""
"When this is unchecked, the browser tab shows the host name followed by the "
"current page. Check this box to display the current page followed by the "
"host name."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:484
+#: src/usr/local/www/system_advanced_admin.php:485
msgid "Secure Shell"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:488
+#: src/usr/local/www/system_advanced_admin.php:489
msgid "Secure Shell Server"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:495
-#: src/usr/local/www/vpn_ipsec_phase1.php:740
+#: src/usr/local/www/system_advanced_admin.php:496
+#: src/usr/local/www/vpn_ipsec_phase1.php:738
msgid "Authentication Method"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:498
+#: src/usr/local/www/system_advanced_admin.php:499
msgid ""
"When enabled, authorized keys need to be configured for each <a href="
"\"system_usermanager.php\">user</a> that has been granted secure shell "
"access."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:504
+#: src/usr/local/www/system_advanced_admin.php:505
msgid "SSH port"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:508
+#: src/usr/local/www/system_advanced_admin.php:509
msgid "Note: Leave this blank for the default of 22."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:512
+#: src/usr/local/www/system_advanced_admin.php:513
msgid "Serial Communications"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:517
+#: src/usr/local/www/system_advanced_admin.php:518
msgid "Serial Terminal"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:520
+#: src/usr/local/www/system_advanced_admin.php:521
msgid ""
"Note:\tThis will redirect the console output and messages to the serial "
-"port. You can still access the console menu from the internal video card/"
+"port. The console menu can still be accessed from the internal video card/"
"keyboard. A <b>null modem</b> serial cable or adapter is required to use the "
"serial console."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:528
+#: src/usr/local/www/system_advanced_admin.php:529
msgid "Serial Speed"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:531
+#: src/usr/local/www/system_advanced_admin.php:532
msgid "Allows selection of different speeds for the serial console port."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:539
+#: src/usr/local/www/system_advanced_admin.php:540
msgid "Serial Console"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:540
+#: src/usr/local/www/system_advanced_admin.php:541
msgid "VGA Console"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:536
+#: src/usr/local/www/system_advanced_admin.php:537
msgid "Primary Console"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:542
+#: src/usr/local/www/system_advanced_admin.php:543
msgid ""
"Select the preferred console if multiple consoles are present. The preferred "
"console will show pfSense boot script output. All consoles display OS boot "
"messages, console messages, and the console menu."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:548
+#: src/usr/local/www/system_advanced_admin.php:549
msgid "Console Options"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:552
+#: src/usr/local/www/system_advanced_admin.php:553
msgid "Console menu"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:588
+#: src/usr/local/www/system_advanced_admin.php:589
msgid "secure shell configuration has changed. Stopping sshd."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:591
+#: src/usr/local/www/system_advanced_admin.php:592
msgid "secure shell configuration has changed. Restarting sshd."
msgstr ""
@@ -24707,7 +24998,7 @@ msgid "High-latency"
msgstr ""
#: src/usr/local/www/system_advanced_firewall.php:455
-#: src/usr/local/www/vpn_ipsec_phase1.php:749
+#: src/usr/local/www/vpn_ipsec_phase1.php:747
msgid "Aggressive"
msgstr ""
@@ -24731,8 +25022,8 @@ msgstr ""
#, php-format
msgid ""
"Note: This converts %s into a routing only platform!<br/>Note: This will "
-"also turn off NAT! If you only want to disable NAT, and not firewall rules, "
-"visit the <a href=\"firewall_nat_out.php\">Outbound NAT</a> page."
+"also turn off NAT! To only disable NAT, and not firewall rules, visit the <a "
+"href=\"firewall_nat_out.php\">Outbound NAT</a> page."
msgstr ""
#: src/usr/local/www/system_advanced_firewall.php:472
@@ -24780,7 +25071,7 @@ msgstr ""
#, php-format
msgid ""
"Maximum number of connections to hold in the firewall state table. <br/"
-">Note: Leave this blank for the default. On your system the default size is: "
+">Note: Leave this blank for the default. On this system the default size is: "
"%d"
msgstr ""
@@ -24792,7 +25083,7 @@ msgstr ""
#, php-format
msgid ""
"Maximum number of table entries for systems such as aliases, sshlockout, "
-"snort, etc, combined.<br/>Note: Leave this blank for the default. On your "
+"snort, etc, combined.<br/>Note: Leave this blank for the default. On this "
"system the default size is: %d"
msgstr ""
@@ -24812,7 +25103,7 @@ msgstr ""
#: src/usr/local/www/system_advanced_firewall.php:538
msgid ""
-"This option only applies if you have defined one or more static routes. If "
+"This option only applies if one or more static routes have been defined. If "
"it is enabled, traffic that enters and leaves through the same interface "
"will not be checked by the firewall. This may be desirable in some "
"situations where multiple subnets are connected to the same interface."
@@ -24828,9 +25119,9 @@ msgstr ""
#: src/usr/local/www/system_advanced_firewall.php:555
msgid ""
-"With Multi-WAN you generally want to ensure traffic leaves the same "
+"With Multi-WAN it is generally desired to ensure traffic leaves the same "
"interface it arrives on, hence reply-to is added automatically by default. "
-"When using bridging, you must disable this behavior if the WAN gateway IP is "
+"When using bridging, this behavior must be disabled if the WAN gateway IP is "
"different from the gateway IP of the hosts behind the bridged interface."
msgstr ""
@@ -24840,79 +25131,79 @@ msgstr ""
#: src/usr/local/www/system_advanced_firewall.php:565
msgid ""
-"With Multi-WAN you generally want to ensure traffic reaches directly "
-"connected networks and VPN networks when using policy routing. You can "
-"disable this for special purposes but it requires manually creating rules "
-"for these networks"
+"With Multi-WAN it is generally desired to ensure traffic reaches directly "
+"connected networks and VPN networks when using policy routing. This can be "
+"disabled for special purposes but it requires manually creating rules for "
+"these networks."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:572
+#: src/usr/local/www/system_advanced_firewall.php:571
msgid "Aliases Hostnames Resolve Interval"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:576
+#: src/usr/local/www/system_advanced_firewall.php:575
msgid ""
"Interval, in seconds, that will be used to resolve hostnames configured on "
-"aliases.. <br/>Note:\t Leave this blank for the default (300s)."
+"aliases. <br/>Note:\t Leave this blank for the default (300s)."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:582
+#: src/usr/local/www/system_advanced_firewall.php:581
msgid "Check certificate of aliases URLs"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:585
+#: src/usr/local/www/system_advanced_firewall.php:584
msgid ""
"Make sure the certificate is valid for all HTTPS addresses on aliases. If "
"it's not valid or is revoked, do not download it."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:589
+#: src/usr/local/www/system_advanced_firewall.php:588
msgid "Bogon Networks"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:596
+#: src/usr/local/www/system_advanced_firewall.php:595
msgid "Monthly"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:597
+#: src/usr/local/www/system_advanced_firewall.php:596
msgid "Weekly"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:598
+#: src/usr/local/www/system_advanced_firewall.php:597
msgid "Daily"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:593
+#: src/usr/local/www/system_advanced_firewall.php:592
msgid "Update Frequency"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:600
+#: src/usr/local/www/system_advanced_firewall.php:599
msgid ""
"The frequency of updating the lists of IP addresses that are reserved (but "
"not RFC 1918) or not yet assigned by IANA."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:606
+#: src/usr/local/www/system_advanced_firewall.php:605
msgid "Network Address Translation"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:621
+#: src/usr/local/www/system_advanced_firewall.php:620
msgid "disabled"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:622
+#: src/usr/local/www/system_advanced_firewall.php:621
msgid "NAT + proxy"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:623
+#: src/usr/local/www/system_advanced_firewall.php:622
msgid "Pure NAT"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:618
+#: src/usr/local/www/system_advanced_firewall.php:617
msgid "NAT Reflection mode for port forwards"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:625
+#: src/usr/local/www/system_advanced_firewall.php:624
msgid ""
"</span><ul class=\"help-block\"><li>The pure NAT mode uses a set of NAT "
"rules to direct packets to the target of the port forward. It has better "
@@ -24930,21 +25221,21 @@ msgid ""
"configured to override this system setting on a per-rule basis."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:643
+#: src/usr/local/www/system_advanced_firewall.php:642
msgid "Reflection Timeout"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:647
+#: src/usr/local/www/system_advanced_firewall.php:646
msgid ""
"Enter value for Reflection timeout in seconds.<br/>Note: Only applies to "
"Reflection on port forwards in NAT + proxy mode."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:652
+#: src/usr/local/www/system_advanced_firewall.php:651
msgid "Enable NAT Reflection for 1:1 NAT"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:655
+#: src/usr/local/www/system_advanced_firewall.php:654
msgid ""
"Note: Reflection on 1:1 mappings is only for the inbound component of the "
"1:1 mappings. This functions the same as the pure NAT mode for port "
@@ -24953,11 +25244,11 @@ msgid ""
"rule basis."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:663
+#: src/usr/local/www/system_advanced_firewall.php:662
msgid "Enable automatic outbound NAT for Reflection"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:666
+#: src/usr/local/www/system_advanced_firewall.php:665
msgid ""
"Required for full functionality of the pure NAT mode of NAT Reflection for "
"port forwards or NAT Reflection for 1:1 NAT. Note: This only works for "
@@ -24965,50 +25256,50 @@ msgid ""
"outbound NAT rules that direct the reply packets back through the router."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:673
+#: src/usr/local/www/system_advanced_firewall.php:672
msgid "TFTP Proxy"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:677
-msgid "Choose the interfaces where you want TFTP proxy helper to be enabled."
+#: src/usr/local/www/system_advanced_firewall.php:676
+msgid "Choose the interfaces on which to enable TFTP proxy helper."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:682
-msgid "State Timeouts in Seconds. (Leave blank for default)"
+#: src/usr/local/www/system_advanced_firewall.php:681
+msgid "State Timeouts (seconds - blank for default)"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:689
+#: src/usr/local/www/system_advanced_firewall.php:688
msgid "TCP "
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:700
+#: src/usr/local/www/system_advanced_firewall.php:699
msgid "UDP "
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:711
+#: src/usr/local/www/system_advanced_firewall.php:710
msgid "ICMP "
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:722
+#: src/usr/local/www/system_advanced_firewall.php:721
msgid "Other "
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:745
+#: src/usr/local/www/system_advanced_firewall.php:744
msgid "The default optimization algorithm"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:747
+#: src/usr/local/www/system_advanced_firewall.php:746
msgid ""
"Used for eg. satellite links. Expires idle connections later than default"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:749
+#: src/usr/local/www/system_advanced_firewall.php:748
msgid ""
"Expires idle connections quicker. More efficient use of CPU and memory but "
"can drop legitimate idle connections"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:751
+#: src/usr/local/www/system_advanced_firewall.php:750
msgid ""
"Tries to avoid dropping any legitimate idle connections at the expense of "
"increased memory usage and CPU utilization"
@@ -25030,89 +25321,89 @@ msgstr ""
msgid "AMD K8, K10 and K11 CPU on-die thermal sensor"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:125
+#: src/usr/local/www/system_advanced_misc.php:124
msgid "Please select a valid Cryptographic Accelerator."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:129
+#: src/usr/local/www/system_advanced_misc.php:128
msgid "Please select a valid Thermal Hardware Sensor."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:133
+#: src/usr/local/www/system_advanced_misc.php:132
msgid "/tmp Size must be numeric and should not be less than 40MiB."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:137
+#: src/usr/local/www/system_advanced_misc.php:136
msgid "/var Size must be numeric and should not be less than 60MiB."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:141
+#: src/usr/local/www/system_advanced_misc.php:140
msgid "Proxy port must be a valid port number, 1-65535."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:145
+#: src/usr/local/www/system_advanced_misc.php:144
msgid "Proxy URL must be a valid IP address or FQDN."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:149
+#: src/usr/local/www/system_advanced_misc.php:148
msgid "The proxy username contains invalid characters."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:153
+#: src/usr/local/www/system_advanced_misc.php:152
msgid "Proxy password and confirmation must match."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:325
+#: src/usr/local/www/system_advanced_misc.php:342
msgid "Proxy Support"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:329
+#: src/usr/local/www/system_advanced_misc.php:346
msgid "Proxy URL"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:332
+#: src/usr/local/www/system_advanced_misc.php:349
msgid ""
"Hostname or IP address of proxy server this system will use for its outbound "
"Internet access."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:337
+#: src/usr/local/www/system_advanced_misc.php:354
msgid "Proxy Port"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:340
+#: src/usr/local/www/system_advanced_misc.php:357
msgid "Port where proxy server is listening."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:344
+#: src/usr/local/www/system_advanced_misc.php:361
msgid "Proxy Username"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:347
+#: src/usr/local/www/system_advanced_misc.php:364
msgid ""
"Username for authentication to proxy server. Optional, leave blank to not "
"use authentication."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:352
+#: src/usr/local/www/system_advanced_misc.php:369
msgid "Proxy Password"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:355
+#: src/usr/local/www/system_advanced_misc.php:372
msgid "Password for authentication to proxy server."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:358
-#: src/usr/local/www/system_advanced_misc.php:360
+#: src/usr/local/www/system_advanced_misc.php:375
+#: src/usr/local/www/system_advanced_misc.php:377
msgid "Load Balancing"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:364
-#: src/usr/local/www/system_advanced_misc.php:365
+#: src/usr/local/www/system_advanced_misc.php:381
+#: src/usr/local/www/system_advanced_misc.php:382
msgid "Use sticky connections"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:367
+#: src/usr/local/www/system_advanced_misc.php:384
msgid ""
"Successive connections will be redirected to the servers in a round-robin "
"manner with connections from the same source being sent to the same web "
@@ -25123,11 +25414,11 @@ msgid ""
"Load Balancing service."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:377
+#: src/usr/local/www/system_advanced_misc.php:394
msgid "Source tracking timeout"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:381
+#: src/usr/local/www/system_advanced_misc.php:398
msgid ""
"Set the source tracking timeout for sticky connections. By default this is "
"0, so source tracking is removed as soon as the state expires. Setting this "
@@ -25135,26 +25426,26 @@ msgid ""
"longer periods of time."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:390
+#: src/usr/local/www/system_advanced_misc.php:407
msgid "Default gateway switching"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:393
+#: src/usr/local/www/system_advanced_misc.php:410
msgid ""
"If the default gateway goes down, switch the default gateway to another "
"available one. This is not enabled by default, as it's unnecessary in most "
"all scenarios, which instead use gateway groups."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:398
+#: src/usr/local/www/system_advanced_misc.php:415
msgid "Power Savings"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:402
+#: src/usr/local/www/system_advanced_misc.php:419
msgid "PowerD"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:405
+#: src/usr/local/www/system_advanced_misc.php:422
msgid ""
"The powerd utility monitors the system state and sets various power control "
"options accordingly. It offers four modes (maximum, minimum, adaptive and "
@@ -25171,201 +25462,209 @@ msgid ""
"and keeps twice lower CPU load."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:420
+#: src/usr/local/www/system_advanced_misc.php:437
msgid "Hiadaptive"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:421
+#: src/usr/local/www/system_advanced_misc.php:438
msgid "Adaptive"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:422
+#: src/usr/local/www/system_advanced_misc.php:439
msgid "Minimum"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:423
+#: src/usr/local/www/system_advanced_misc.php:440
msgid "Maximum"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:428
+#: src/usr/local/www/system_advanced_misc.php:445
msgid "AC Power"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:435
+#: src/usr/local/www/system_advanced_misc.php:452
msgid "Battery Power"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:442
+#: src/usr/local/www/system_advanced_misc.php:459
msgid "Unknown Power"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:448
+#: src/usr/local/www/system_advanced_misc.php:465
msgid "Cryptographic & Thermal Hardware"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:452
+#: src/usr/local/www/system_advanced_misc.php:469
msgid "Cryptographic Hardware"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:455
+#: src/usr/local/www/system_advanced_misc.php:472
msgid ""
"A cryptographic accelerator module will use hardware support to speed up "
"some cryptographic functions on systems which have the chip. Do not enable "
-"this option if you have a Hifn cryptographic acceleration card, as this will "
-"take precedence and the Hifn card will not be used. Acceleration should be "
-"automatic for IPsec when using a cipher supported by your chip, such as "
+"this option with a Hifn cryptographic acceleration card, as this will take "
+"precedence and the Hifn card will not be used. Acceleration should be "
+"automatic for IPsec when using a cipher supported by the chip, such as "
"AES-128. OpenVPN should be set for AES-128-CBC and have cryptodev enabled "
-"for hardware acceleration.If you do not have a crypto chip in your system, "
-"this option will have no effect. To unload the selected module, set this "
-"option to \"none\" and then reboot."
+"for hardware acceleration. If there is not a crypto chip in the system, this "
+"option will have no effect. To unload the selected module, set this option "
+"to \"none\" and then reboot."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:467
+#: src/usr/local/www/system_advanced_misc.php:484
#: src/usr/local/www/widgets/include/thermal_sensors.inc:14
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:277
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:280
msgid "Thermal Sensors"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:470
+#: src/usr/local/www/system_advanced_misc.php:487
msgid ""
-"If you have a supported CPU, selecting a themal sensor will load the "
-"appropriate driver to read its temperature. Setting this to \"None\" will "
-"attempt to read the temperature from an ACPI-compliant motherboard sensor "
-"instead, if one is present.If you do not have a supported thermal sensor "
-"chip in your system, this option will have no effect. To unload the selected "
-"module, set this option to \"none\" and then reboot."
+"With a supported CPU, selecting a thermal sensor will load the appropriate "
+"driver to read its temperature. Setting this to \"None\" will attempt to "
+"read the temperature from an ACPI-compliant motherboard sensor instead, if "
+"one is present. If there is not a supported thermal sensor chip in the "
+"system, this option will have no effect. To unload the selected module, set "
+"this option to \"none\" and then reboot."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:483
+#: src/usr/local/www/system_advanced_misc.php:500
msgid "Schedule States"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:486
+#: src/usr/local/www/system_advanced_misc.php:503
msgid ""
"By default, when a schedule expires, connections permitted by that schedule "
"are killed. This option overrides that behavior by not clearing states for "
"existing connections."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:491
+#: src/usr/local/www/system_advanced_misc.php:508
#: src/usr/local/www/system_gateways_edit.php:667
msgid "Gateway Monitoring"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:495
+#: src/usr/local/www/system_advanced_misc.php:512
msgid "State Killing on Gateway Failure"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:498
+#: src/usr/local/www/system_advanced_misc.php:515
msgid ""
"The monitoring process will flush all states when a gateway goes down if "
"this box is checked."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:503
+#: src/usr/local/www/system_advanced_misc.php:520
msgid "Skip rules when gateway is down"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:506
+#: src/usr/local/www/system_advanced_misc.php:523
msgid ""
"By default, when a rule has a gateway specified and this gateway is down, "
"the rule is created omitting the gateway. This option overrides that "
"behavior by omitting the entire rule instead."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:511
+#: src/usr/local/www/system_advanced_misc.php:528
msgid "RAM Disk Settings (Reboot to Apply Changes)"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:515
+#: src/usr/local/www/system_advanced_misc.php:532
msgid "Use RAM Disks"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:518
+#: src/usr/local/www/system_advanced_misc.php:535
msgid ""
-"Set this if you wish to use /tmp and /var as RAM disks (memory file system "
-"disks) on a full install rather than use the hard disk. Setting this will "
-"cause the data in /tmp and /var to be lost at reboot, including log data. "
-"RRD and DHCP Leases will be retained."
+"Set this to use /tmp and /var as RAM disks (memory file system disks) on a "
+"full install rather than use the hard disk. Setting this will cause the data "
+"in /tmp and /var to be lost, including log data. RRD and DHCP Leases will be "
+"retained. Changing this setting will cause the firewall to reboot after "
+"clicking \"Save\"."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:525
+#: src/usr/local/www/system_advanced_misc.php:542
msgid "/tmp RAM Disk Size"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:529
+#: src/usr/local/www/system_advanced_misc.php:546
msgid ""
"Set the size, in MiB, for the /tmp RAM disk. Leave blank for 40MiB. Do not "
"set lower than 40."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:534
+#: src/usr/local/www/system_advanced_misc.php:551
msgid "/var RAM Disk Size"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:538
+#: src/usr/local/www/system_advanced_misc.php:555
msgid ""
"Set the size, in MiB, for the /var RAM disk. Leave blank for 60MiB. Do not "
"set lower than 60."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:543
+#: src/usr/local/www/system_advanced_misc.php:560
msgid "Periodic RRD Backup"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:547
+#: src/usr/local/www/system_advanced_misc.php:564
msgid ""
"This will periodically backup the RRD data so it can be restored "
"automatically on the next boot. Keep in mind that the more frequent the "
-"backup, the more writes will happen to your media."
+"backup, the more writes will happen to the media."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:553
+#: src/usr/local/www/system_advanced_misc.php:570
msgid "Periodic DHCP Leases Backup"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:557
+#: src/usr/local/www/system_advanced_misc.php:574
msgid ""
"This will periodically backup the DHCP leases so it can be restored "
"automatically on the next boot. Keep in mind that the more frequent the "
-"backup, the more writes will happen to your media."
+"backup, the more writes will happen to the media."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:564
+#: src/usr/local/www/system_advanced_misc.php:581
msgid "Hardware Settings"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:573
+#: src/usr/local/www/system_advanced_misc.php:590
msgid "Always on"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:571
+#: src/usr/local/www/system_advanced_misc.php:588
msgid "Hard disk standby time"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:574
+#: src/usr/local/www/system_advanced_misc.php:591
msgid ""
"Puts the hard disk into standby mode when the selected number of minutes has "
"elapsed since the last access.<br /><strong> Do not set this for CF cards.</"
"strong>"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:580
+#: src/usr/local/www/system_advanced_misc.php:597
msgid "Installation Feedback"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:584
+#: src/usr/local/www/system_advanced_misc.php:601
msgid "Host UUID"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:587
+#: src/usr/local/www/system_advanced_misc.php:604
msgid ""
"Enable this option to not send HOST UUID to pfSense as part of User-Agent "
"header."
msgstr ""
+#: src/usr/local/www/system_advanced_misc.php:610
+msgid ""
+"The \\\"Use Ramdisk\\\" setting has been changed. This will cause the "
+"firewall\\nto reboot immediately after the new setting is saved.\\n\\nPlease "
+"confirm."
+msgstr ""
+
#: src/usr/local/www/system_advanced_network.php:89
-msgid "You must specify an IP address to NAT IPv6 packets."
+msgid "An IP address to NAT IPv6 packets must be specified."
msgstr ""
#: src/usr/local/www/system_advanced_network.php:193
@@ -25377,7 +25676,6 @@ msgid "Allow IPv6"
msgstr ""
#: src/usr/local/www/system_advanced_network.php:200
-#: src/usr/local/www/system_advanced_network.php:209
msgid ""
"NOTE: This does not disable any IPv6 features on the firewall, it only "
"blocks traffic."
@@ -25388,7 +25686,7 @@ msgstr ""
msgid "IPv6 over IPv4 Tunneling"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:217
+#: src/usr/local/www/system_advanced_network.php:216
msgid ""
"Enable IPv4 NAT encapsulation of IPv6 packets. <br/>This provides an RFC "
"2893 compatibility mechanism that can be used to tunneling IPv6 packets over "
@@ -25396,82 +25694,83 @@ msgid ""
"rule to permit IPv6 packets."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:226
+#: src/usr/local/www/system_advanced_network.php:225
msgid "Prefer IPv4 over IPv6"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:229
+#: src/usr/local/www/system_advanced_network.php:228
msgid ""
-"By default, if a hostname resolves IPv6 and IPv4 addresses IPv6 will be "
-"used, if you check this option, IPv4 will be used instead of IPv6."
+"By default, if IPv6 is configured and a hostname resolves IPv6 and IPv4 "
+"addresses, IPv6 will be used. If this option is selected, IPv4 will be "
+"preferred over IPv6."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:237
+#: src/usr/local/www/system_advanced_network.php:236
msgid "Device polling"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:240
+#: src/usr/local/www/system_advanced_network.php:239
#, php-format
msgid ""
"Device polling is a technique that lets the system periodically poll network "
-"devices for new data instead of relying on interrupts. This prevents your "
+"devices for new data instead of relying on interrupts. This prevents the "
"webConfigurator, SSH, etc. from being inaccessible due to interrupt floods "
"when under extreme load. Generally this is not recommended. Not all NICs "
-"support polling; see the %s homepage for a list of supported cards"
+"support polling; see the %s homepage for a list of supported cards."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:249
+#: src/usr/local/www/system_advanced_network.php:248
msgid "Hardware Checksum Offloading"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:252
+#: src/usr/local/www/system_advanced_network.php:251
msgid ""
"Checking this option will disable hardware checksum offloading.<br/>Checksum "
"offloading is broken in some hardware, particularly some Realtek cards. "
"Rarely, drivers may have problems with checksum offloading and some specific "
-"NICs.This will take effect after you reboot the machine or re-configure each "
+"NICs. This will take effect after a machine reboot or re-configure of each "
"interface."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:260
+#: src/usr/local/www/system_advanced_network.php:259
msgid "Hardware TCP Segmentation Offloading"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:263
+#: src/usr/local/www/system_advanced_network.php:262
msgid ""
"Checking this option will disable hardware TCP segmentation offloading (TSO, "
"TSO4, TSO6). This offloading is broken in some hardware drivers, and may "
-"impact performance with some specific NICs.This will take effect after you "
-"reboot the machine or re-configure each interface."
+"impact performance with some specific NICs. This will take effect after a "
+"machine reboot or re-configure of each interface."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:270
+#: src/usr/local/www/system_advanced_network.php:269
msgid "Hardware Large Receive Offloading"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:273
+#: src/usr/local/www/system_advanced_network.php:272
msgid ""
"Checking this option will disable hardware large receive offloading (LRO). "
"This offloading is broken in some hardware drivers, and may impact "
-"performance with some specific NICs.This will take effect after you reboot "
-"the machine or re-configure each interface."
+"performance with some specific NICs. This will take effect after a machine "
+"reboot or re-configure of each interface."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:280
+#: src/usr/local/www/system_advanced_network.php:279
msgid "ARP Handling"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:283
+#: src/usr/local/www/system_advanced_network.php:282
msgid ""
"This option will suppress ARP log messages when multiple interfaces reside "
-"on the same broadcast domain"
+"on the same broadcast domain."
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:289
+#: src/usr/local/www/system_advanced_network.php:288
msgid "Enable flowtable support"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:291
+#: src/usr/local/www/system_advanced_network.php:290
msgid ""
"Enables infrastructure for caching flows as a means of accelerating L3 and "
"L2 lookups as well as providing stateful load balancing when used with "
@@ -25486,173 +25785,171 @@ msgstr ""
msgid "SMTP passwords must match"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:203
+#: src/usr/local/www/system_advanced_notifications.php:202
#, php-format
msgid "This is a test message from %s. It is safe to ignore this message."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:212
+#: src/usr/local/www/system_advanced_notifications.php:211
#, php-format
msgid "This is a test message from %s. It is safe to ignore this message."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:238
+#: src/usr/local/www/system_advanced_notifications.php:237
msgid "Growl"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:242
+#: src/usr/local/www/system_advanced_notifications.php:241
msgid "Disable Growl"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:245
+#: src/usr/local/www/system_advanced_notifications.php:244
msgid ""
"Check this option to disable growl notifications but preserve the settings "
"below."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:250
+#: src/usr/local/www/system_advanced_notifications.php:249
msgid "Registration Name"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:254
+#: src/usr/local/www/system_advanced_notifications.php:253
msgid "Enter the name to register with the Growl server."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:258
+#: src/usr/local/www/system_advanced_notifications.php:257
msgid "Notification Name"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:263
-msgid "Enter a name for the Growl notifications"
+#: src/usr/local/www/system_advanced_notifications.php:262
+msgid "Enter a name for the Growl notifications."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:270
-msgid ""
-"This is the IP address that you would like to send growl notifications to."
+#: src/usr/local/www/system_advanced_notifications.php:269
+msgid "This is the IP address to send growl notifications to."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:278
+#: src/usr/local/www/system_advanced_notifications.php:276
msgid "Enter the password of the remote growl notification device."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:282
-msgid "Test Growl"
+#: src/usr/local/www/system_advanced_notifications.php:280
+msgid "Test Growl Settings"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:285
+#: src/usr/local/www/system_advanced_notifications.php:283
msgid ""
"A test notification will be sent even if the service is marked as disabled."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:289
+#: src/usr/local/www/system_advanced_notifications.php:287
msgid "E-Mail"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:293
+#: src/usr/local/www/system_advanced_notifications.php:291
msgid "Disable SMTP"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:296
+#: src/usr/local/www/system_advanced_notifications.php:294
msgid ""
"Check this option to disable SMTP notifications but preserve the settings "
"below. Some other mechanisms, such as packages, may need these settings in "
"place to function."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:302
+#: src/usr/local/www/system_advanced_notifications.php:300
msgid "E-Mail server"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:305
+#: src/usr/local/www/system_advanced_notifications.php:303
msgid ""
"This is the FQDN or IP address of the SMTP E-Mail server to which "
"notifications will be sent."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:310
+#: src/usr/local/www/system_advanced_notifications.php:308
msgid "SMTP Port of E-Mail server"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:313
+#: src/usr/local/www/system_advanced_notifications.php:311
msgid ""
"This is the port of the SMTP E-Mail server, typically 25, 587 (submission) "
-"or 465 (smtps)"
+"or 465 (smtps)."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:316
+#: src/usr/local/www/system_advanced_notifications.php:314
msgid "Secure SMTP Connection"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:319
+#: src/usr/local/www/system_advanced_notifications.php:317
msgid "Enable SSL/TLS"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:326
+#: src/usr/local/www/system_advanced_notifications.php:324
msgid "Secure STARTTLS"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:335
+#: src/usr/local/www/system_advanced_notifications.php:333
msgid "From e-mail address"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:338
+#: src/usr/local/www/system_advanced_notifications.php:336
msgid "This is the e-mail address that will appear in the from field."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:342
+#: src/usr/local/www/system_advanced_notifications.php:340
msgid "Notification E-Mail address"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:345
-msgid ""
-"Enter the e-mail address that you would like email notifications sent to."
+#: src/usr/local/www/system_advanced_notifications.php:343
+msgid "Enter the e-mail address to send email notifications to."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:351
+#: src/usr/local/www/system_advanced_notifications.php:348
msgid "Notification E-Mail auth username (optional)"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:355
+#: src/usr/local/www/system_advanced_notifications.php:352
msgid "Enter the e-mail address username for SMTP authentication."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:359
+#: src/usr/local/www/system_advanced_notifications.php:356
msgid "Notification E-Mail auth password"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:362
+#: src/usr/local/www/system_advanced_notifications.php:359
msgid "Enter the e-mail account password for SMTP authentication."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:366
+#: src/usr/local/www/system_advanced_notifications.php:363
msgid "Notification E-Mail auth mechanism"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:369
+#: src/usr/local/www/system_advanced_notifications.php:366
msgid ""
"Select the authentication mechanism used by the SMTP server. Most work with "
"PLAIN, some servers like Exchange or Office365 might require LOGIN. "
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:373
-msgid "Test SMTP"
+#: src/usr/local/www/system_advanced_notifications.php:370
+msgid "Test SMTP Settings"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:376
+#: src/usr/local/www/system_advanced_notifications.php:373
msgid ""
"A test notification will be sent even if the service is marked as disabled. "
"The last SAVED values will be used, not necessarily the values entered here."
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:381
+#: src/usr/local/www/system_advanced_notifications.php:378
msgid "Sounds"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:385
+#: src/usr/local/www/system_advanced_notifications.php:382
msgid "Startup/Shutdown Sound"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:388
+#: src/usr/local/www/system_advanced_notifications.php:385
msgid "When this is checked, startup and shutdown sounds will no longer play."
msgstr ""
@@ -25696,171 +25993,179 @@ msgstr ""
msgid "Tunable"
msgstr ""
-#: src/usr/local/www/system_authservers.php:111
+#: src/usr/local/www/system_authservers.php:89
+msgid "Select LDAP containers for authentication"
+msgstr ""
+
+#: src/usr/local/www/system_authservers.php:90
+#: src/usr/local/www/system_authservers.php:631
+msgid "Containers"
+msgstr ""
+
+#: src/usr/local/www/system_authservers.php:177
#, php-format
msgid "Authentication Server %s deleted."
msgstr ""
-#: src/usr/local/www/system_authservers.php:197
-#: src/usr/local/www/system_authservers.php:220
-#: src/usr/local/www/system_authservers.php:460
+#: src/usr/local/www/system_authservers.php:263
+#: src/usr/local/www/system_authservers.php:286
+#: src/usr/local/www/system_authservers.php:526
#: src/usr/local/www/system_camanager.php:202
#: src/usr/local/www/system_camanager.php:216
#: src/usr/local/www/system_camanager.php:231
-#: src/usr/local/www/system_camanager.php:499
+#: src/usr/local/www/system_camanager.php:496
#: src/usr/local/www/system_certmanager.php:262
#: src/usr/local/www/system_certmanager.php:275
#: src/usr/local/www/system_certmanager.php:293
#: src/usr/local/www/system_certmanager.php:506
-#: src/usr/local/www/system_certmanager.php:610
-#: src/usr/local/www/system_certmanager.php:668
-#: src/usr/local/www/system_certmanager.php:959
+#: src/usr/local/www/system_certmanager.php:626
+#: src/usr/local/www/system_certmanager.php:919
#: src/usr/local/www/system_crlmanager.php:232
#: src/usr/local/www/system_crlmanager.php:238
#: src/usr/local/www/system_crlmanager.php:396
#: src/usr/local/www/system_crlmanager.php:461
#: src/usr/local/www/system_usermanager.php:191
-#: src/usr/local/www/system_usermanager.php:783
+#: src/usr/local/www/system_usermanager.php:788
msgid "Descriptive name"
msgstr ""
-#: src/usr/local/www/system_authservers.php:199
-#: src/usr/local/www/system_authservers.php:222
+#: src/usr/local/www/system_authservers.php:265
+#: src/usr/local/www/system_authservers.php:288
msgid "Hostname or IP"
msgstr ""
-#: src/usr/local/www/system_authservers.php:200
-#: src/usr/local/www/system_authservers.php:491
+#: src/usr/local/www/system_authservers.php:266
+#: src/usr/local/www/system_authservers.php:557
msgid "Port value"
msgstr ""
-#: src/usr/local/www/system_authservers.php:202
-#: src/usr/local/www/system_authservers.php:527
+#: src/usr/local/www/system_authservers.php:268
+#: src/usr/local/www/system_authservers.php:593
msgid "Protocol version"
msgstr ""
-#: src/usr/local/www/system_authservers.php:203
+#: src/usr/local/www/system_authservers.php:269
msgid "Search level"
msgstr ""
-#: src/usr/local/www/system_authservers.php:204
+#: src/usr/local/www/system_authservers.php:270
msgid "User naming Attribute"
msgstr ""
-#: src/usr/local/www/system_authservers.php:205
+#: src/usr/local/www/system_authservers.php:271
msgid "Group naming Attribute"
msgstr ""
-#: src/usr/local/www/system_authservers.php:206
-#: src/usr/local/www/system_authservers.php:654
+#: src/usr/local/www/system_authservers.php:272
+#: src/usr/local/www/system_authservers.php:722
msgid "Group member attribute"
msgstr ""
-#: src/usr/local/www/system_authservers.php:207
+#: src/usr/local/www/system_authservers.php:273
msgid "Authentication container"
msgstr ""
-#: src/usr/local/www/system_authservers.php:212
+#: src/usr/local/www/system_authservers.php:278
msgid "Bind user DN"
msgstr ""
-#: src/usr/local/www/system_authservers.php:213
+#: src/usr/local/www/system_authservers.php:279
msgid "Bind Password"
msgstr ""
-#: src/usr/local/www/system_authservers.php:234
-#: src/usr/local/www/system_authservers.php:728
+#: src/usr/local/www/system_authservers.php:300
+#: src/usr/local/www/system_authservers.php:796
msgid "Accounting port"
msgstr ""
-#: src/usr/local/www/system_authservers.php:246
+#: src/usr/local/www/system_authservers.php:312
msgid "The host name contains invalid characters."
msgstr ""
-#: src/usr/local/www/system_authservers.php:250
+#: src/usr/local/www/system_authservers.php:316
msgid "An authentication server with the same name already exists."
msgstr ""
-#: src/usr/local/www/system_authservers.php:256
+#: src/usr/local/www/system_authservers.php:322
#, php-format
msgid "%s Timeout value must be numeric and positive."
msgstr ""
-#: src/usr/local/www/system_authservers.php:377
-#: src/usr/local/www/system_authservers.php:397
-#: src/usr/local/www/system_authservers.php:403
-#: src/usr/local/www/system_groupmanager.php:292
-#: src/usr/local/www/system_groupmanager_addprivs.php:174
-#: src/usr/local/www/system_usermanager.php:486
+#: src/usr/local/www/system_authservers.php:443
+#: src/usr/local/www/system_authservers.php:463
+#: src/usr/local/www/system_authservers.php:469
+#: src/usr/local/www/system_groupmanager.php:308
+#: src/usr/local/www/system_groupmanager_addprivs.php:173
+#: src/usr/local/www/system_usermanager.php:487
#: src/usr/local/www/system_usermanager_addprivs.php:175
-#: src/usr/local/www/system_usermanager_settings.php:146
+#: src/usr/local/www/system_usermanager_settings.php:202
msgid "Authentication Servers"
msgstr ""
-#: src/usr/local/www/system_authservers.php:394
-#: src/usr/local/www/system_groupmanager.php:289
-#: src/usr/local/www/system_groupmanager_addprivs.php:171
-#: src/usr/local/www/system_usermanager.php:467
-#: src/usr/local/www/system_usermanager.php:483
-#: src/usr/local/www/system_usermanager.php:493
+#: src/usr/local/www/system_authservers.php:460
+#: src/usr/local/www/system_groupmanager.php:305
+#: src/usr/local/www/system_groupmanager_addprivs.php:170
+#: src/usr/local/www/system_usermanager.php:468
+#: src/usr/local/www/system_usermanager.php:484
+#: src/usr/local/www/system_usermanager.php:494
#: src/usr/local/www/system_usermanager_addprivs.php:70
#: src/usr/local/www/system_usermanager_addprivs.php:172
-#: src/usr/local/www/system_usermanager_settings.php:143
+#: src/usr/local/www/system_usermanager_settings.php:199
#: src/usr/local/www/vpn_l2tp.php:233 src/usr/local/www/vpn_l2tp_users.php:63
#: src/usr/local/www/vpn_l2tp_users.php:119
#: src/usr/local/www/vpn_l2tp_users_edit.php:63
msgid "Users"
msgstr ""
-#: src/usr/local/www/system_authservers.php:395
-#: src/usr/local/www/system_groupmanager.php:274
-#: src/usr/local/www/system_groupmanager.php:290
-#: src/usr/local/www/system_groupmanager.php:298
+#: src/usr/local/www/system_authservers.php:461
+#: src/usr/local/www/system_groupmanager.php:288
+#: src/usr/local/www/system_groupmanager.php:306
+#: src/usr/local/www/system_groupmanager.php:314
#: src/usr/local/www/system_groupmanager_addprivs.php:69
-#: src/usr/local/www/system_groupmanager_addprivs.php:172
-#: src/usr/local/www/system_usermanager.php:484
-#: src/usr/local/www/system_usermanager.php:503
+#: src/usr/local/www/system_groupmanager_addprivs.php:171
+#: src/usr/local/www/system_usermanager.php:485
+#: src/usr/local/www/system_usermanager.php:504
#: src/usr/local/www/system_usermanager_addprivs.php:173
-#: src/usr/local/www/system_usermanager_settings.php:144
+#: src/usr/local/www/system_usermanager_settings.php:200
msgid "Groups"
msgstr ""
-#: src/usr/local/www/system_authservers.php:409
+#: src/usr/local/www/system_authservers.php:475
msgid "Server Name"
msgstr ""
-#: src/usr/local/www/system_authservers.php:423
-#: src/usr/local/www/vpn_openvpn_server.php:1225
+#: src/usr/local/www/system_authservers.php:489
+#: src/usr/local/www/vpn_openvpn_server.php:1230
msgid "Edit server"
msgstr ""
-#: src/usr/local/www/system_authservers.php:424
-#: src/usr/local/www/vpn_openvpn_server.php:1226
+#: src/usr/local/www/system_authservers.php:490
+#: src/usr/local/www/vpn_openvpn_server.php:1231
msgid "Delete server"
msgstr ""
-#: src/usr/local/www/system_authservers.php:456
+#: src/usr/local/www/system_authservers.php:522
msgid "Server Settings"
msgstr ""
-#: src/usr/local/www/system_authservers.php:475
+#: src/usr/local/www/system_authservers.php:541
msgid "LDAP Server Settings"
msgstr ""
-#: src/usr/local/www/system_authservers.php:483
-#: src/usr/local/www/system_authservers.php:700
+#: src/usr/local/www/system_authservers.php:549
+#: src/usr/local/www/system_authservers.php:768
msgid "Hostname or IP address"
msgstr ""
-#: src/usr/local/www/system_authservers.php:486
+#: src/usr/local/www/system_authservers.php:552
msgid ""
"NOTE: When using SSL, this hostname MUST match the Common Name (CN) of the "
"LDAP server's SSL Certificate."
msgstr ""
-#: src/usr/local/www/system_authservers.php:506
-#: src/usr/local/www/system_authservers.php:518
-#: src/usr/local/www/vpn_ipsec_phase1.php:809
+#: src/usr/local/www/system_authservers.php:572
+#: src/usr/local/www/system_authservers.php:584
+#: src/usr/local/www/vpn_ipsec_phase1.php:807
#: src/usr/local/www/vpn_openvpn_client.php:612
#: src/usr/local/www/vpn_openvpn_client.php:618
#: src/usr/local/www/vpn_openvpn_server.php:735
@@ -25868,159 +26173,155 @@ msgstr ""
msgid "Peer Certificate Authority"
msgstr ""
-#: src/usr/local/www/system_authservers.php:521
+#: src/usr/local/www/system_authservers.php:587
msgid ""
"This option is used if 'SSL Encrypted' option is choosen. It must match with "
"the CA in the AD otherwise problems will arise."
msgstr ""
-#: src/usr/local/www/system_authservers.php:534
+#: src/usr/local/www/system_authservers.php:600
msgid "Server Timeout"
msgstr ""
-#: src/usr/local/www/system_authservers.php:538
+#: src/usr/local/www/system_authservers.php:604
msgid "Timeout for LDAP operations (seconds)"
msgstr ""
-#: src/usr/local/www/system_authservers.php:540
-#: src/usr/local/www/system_authservers.php:558
+#: src/usr/local/www/system_authservers.php:606
+#: src/usr/local/www/system_authservers.php:624
msgid "Search scope"
msgstr ""
-#: src/usr/local/www/system_authservers.php:544
+#: src/usr/local/www/system_authservers.php:610
msgid "Level"
msgstr ""
-#: src/usr/local/www/system_authservers.php:551
+#: src/usr/local/www/system_authservers.php:617
msgid "Base DN"
msgstr ""
-#: src/usr/local/www/system_authservers.php:562
+#: src/usr/local/www/system_authservers.php:628
msgid "Authentication containers"
msgstr ""
-#: src/usr/local/www/system_authservers.php:565
-msgid "Containers"
-msgstr ""
-
-#: src/usr/local/www/system_authservers.php:568
+#: src/usr/local/www/system_authservers.php:634
msgid ""
"Note: Semi-Colon separated. This will be prepended to the search base dn "
-"above or you can specify full container path containing a dc= component.<br/"
-">Example: CN=Users;DC=example,DC=com or OU=Staff;OU=Freelancers"
+"above or the full container path can be specified containing a dc= component."
+"<br/>Example: CN=Users;DC=example,DC=com or OU=Staff;OU=Freelancers"
msgstr ""
-#: src/usr/local/www/system_authservers.php:574
+#: src/usr/local/www/system_authservers.php:640
msgid "Select a container"
msgstr ""
-#: src/usr/local/www/system_authservers.php:581
+#: src/usr/local/www/system_authservers.php:649
msgid "Extended query"
msgstr ""
-#: src/usr/local/www/system_authservers.php:586
-#: src/usr/local/www/system_authservers.php:591
+#: src/usr/local/www/system_authservers.php:654
+#: src/usr/local/www/system_authservers.php:659
msgid "Query"
msgstr ""
-#: src/usr/local/www/system_authservers.php:594
+#: src/usr/local/www/system_authservers.php:662
msgid "Example: &amp;(objectClass=inetOrgPerson)(mail=*@example.com)"
msgstr ""
-#: src/usr/local/www/system_authservers.php:600
+#: src/usr/local/www/system_authservers.php:668
msgid "Bind anonymous"
msgstr ""
-#: src/usr/local/www/system_authservers.php:605
+#: src/usr/local/www/system_authservers.php:673
msgid "Bind credentials"
msgstr ""
-#: src/usr/local/www/system_authservers.php:610
+#: src/usr/local/www/system_authservers.php:678
msgid "User DN:"
msgstr ""
-#: src/usr/local/www/system_authservers.php:632
+#: src/usr/local/www/system_authservers.php:700
msgid "Initial Template"
msgstr ""
-#: src/usr/local/www/system_authservers.php:640
+#: src/usr/local/www/system_authservers.php:708
msgid "User naming attribute"
msgstr ""
-#: src/usr/local/www/system_authservers.php:647
+#: src/usr/local/www/system_authservers.php:715
msgid "Group naming attribute"
msgstr ""
-#: src/usr/local/www/system_authservers.php:661
+#: src/usr/local/www/system_authservers.php:729
msgid "RFC 2307 Groups"
msgstr ""
-#: src/usr/local/www/system_authservers.php:664
+#: src/usr/local/www/system_authservers.php:732
msgid ""
"RFC 2307 style group membership has members listed on the group object "
"rather than using groups listed on user object. Leave unchecked for Active "
"Directory style group membership (RFC 2307bis)."
msgstr ""
-#: src/usr/local/www/system_authservers.php:670
+#: src/usr/local/www/system_authservers.php:738
msgid "Group Object Class"
msgstr ""
-#: src/usr/local/www/system_authservers.php:674
+#: src/usr/local/www/system_authservers.php:742
msgid ""
"Object class used for groups in RFC2307 mode. Typically \"posixGroup\" or "
"\"group\"."
msgstr ""
-#: src/usr/local/www/system_authservers.php:679
+#: src/usr/local/www/system_authservers.php:747
msgid "UTF8 Encode"
msgstr ""
-#: src/usr/local/www/system_authservers.php:682
+#: src/usr/local/www/system_authservers.php:750
msgid ""
"Required to support international characters, but may not be supported by "
"every LDAP server."
msgstr ""
-#: src/usr/local/www/system_authservers.php:687
+#: src/usr/local/www/system_authservers.php:755
msgid "Username Alterations"
msgstr ""
-#: src/usr/local/www/system_authservers.php:690
+#: src/usr/local/www/system_authservers.php:758
msgid "e.g. user@host becomes user when unchecked."
msgstr ""
-#: src/usr/local/www/system_authservers.php:695
+#: src/usr/local/www/system_authservers.php:763
msgid "RADIUS Server Settings"
msgstr ""
-#: src/usr/local/www/system_authservers.php:714
+#: src/usr/local/www/system_authservers.php:782
msgid "Services offered"
msgstr ""
-#: src/usr/local/www/system_authservers.php:735
+#: src/usr/local/www/system_authservers.php:803
msgid "Authentication Timeout"
msgstr ""
-#: src/usr/local/www/system_authservers.php:738
+#: src/usr/local/www/system_authservers.php:806
msgid ""
"This value controls how long, in seconds, that the RADIUS server may take to "
"respond to an authentication request. If left blank, the default value is 5 "
-"seconds. NOTE: If you are using an interactive two-factor authentication "
-"system, increase this timeout to account for how long it will take the user "
-"to receive and enter a token."
+"seconds. NOTE: If using an interactive two-factor authentication system, "
+"increase this timeout to account for how long it will take the user to "
+"receive and enter a token."
msgstr ""
-#: src/usr/local/www/system_authservers.php:766
-msgid "Please fill the required values."
+#: src/usr/local/www/system_authservers.php:825
+msgid "LDAP containers"
msgstr ""
-#: src/usr/local/www/system_authservers.php:773
-msgid "Please fill the bind username/password."
+#: src/usr/local/www/system_authservers.php:842
+msgid "Please fill the required values."
msgstr ""
-#: src/usr/local/www/system_authservers.php:795
-msgid "Popup blocker detected.\tAction aborted."
+#: src/usr/local/www/system_authservers.php:849
+msgid "Please fill the bind username/password."
msgstr ""
#: src/usr/local/www/system_camanager.php:68
@@ -26041,9 +26342,9 @@ msgid "Certificate Authority %s and its CRLs (if any) successfully deleted."
msgstr ""
#: src/usr/local/www/system_camanager.php:203
-#: src/usr/local/www/system_camanager.php:520
+#: src/usr/local/www/system_camanager.php:517
#: src/usr/local/www/system_certmanager.php:263
-#: src/usr/local/www/system_certmanager.php:679
+#: src/usr/local/www/system_certmanager.php:637
msgid "Certificate data"
msgstr ""
@@ -26060,10 +26361,10 @@ msgstr ""
#: src/usr/local/www/system_camanager.php:233
#: src/usr/local/www/system_certmanager.php:277
#: src/usr/local/www/system_certmanager.php:294
-#: src/usr/local/www/system_certmanager.php:720
-#: src/usr/local/www/system_certmanager.php:850
+#: src/usr/local/www/system_certmanager.php:679
+#: src/usr/local/www/system_certmanager.php:813
#: src/usr/local/www/system_usermanager.php:193
-#: src/usr/local/www/system_usermanager.php:797
+#: src/usr/local/www/system_usermanager.php:802
msgid "Key length"
msgstr ""
@@ -26071,7 +26372,7 @@ msgstr ""
#: src/usr/local/www/system_camanager.php:234
#: src/usr/local/www/system_certmanager.php:279
#: src/usr/local/www/system_usermanager.php:194
-#: src/usr/local/www/system_usermanager.php:809
+#: src/usr/local/www/system_usermanager.php:814
#: src/usr/local/www/vpn_ipsec_phase2.php:703
msgid "Lifetime"
msgstr ""
@@ -26119,7 +26420,7 @@ msgid "Distinguished name Common Name"
msgstr ""
#: src/usr/local/www/system_camanager.php:232
-#: src/usr/local/www/system_camanager.php:554
+#: src/usr/local/www/system_camanager.php:551
msgid "Signing Certificate Authority"
msgstr ""
@@ -26167,9 +26468,9 @@ msgstr ""
#: src/usr/local/www/system_camanager.php:395
#: src/usr/local/www/system_certmanager.php:559
#: src/usr/local/www/system_certmanager.php:576
-#: src/usr/local/www/system_certmanager.php:1000
+#: src/usr/local/www/system_certmanager.php:968
#: src/usr/local/www/system_crlmanager.php:375
-#: src/usr/local/www/system_crlmanager.php:616
+#: src/usr/local/www/system_crlmanager.php:618
msgid "Certificates"
msgstr ""
@@ -26185,142 +26486,142 @@ msgid "Certificate Authorities"
msgstr ""
#: src/usr/local/www/system_camanager.php:393
-#: src/usr/local/www/system_crlmanager.php:615
+#: src/usr/local/www/system_crlmanager.php:617
msgid "Internal"
msgstr ""
#: src/usr/local/www/system_camanager.php:394
-#: src/usr/local/www/system_certmanager.php:1007
+#: src/usr/local/www/system_certmanager.php:975
msgid "Issuer"
msgstr ""
#: src/usr/local/www/system_camanager.php:396
-#: src/usr/local/www/system_certmanager.php:1008
+#: src/usr/local/www/system_certmanager.php:976
msgid "Distinguished Name"
msgstr ""
#: src/usr/local/www/system_camanager.php:408
-#: src/usr/local/www/system_certmanager.php:1032
+#: src/usr/local/www/system_certmanager.php:1000
msgid "self-signed"
msgstr ""
#: src/usr/local/www/system_camanager.php:410
-#: src/usr/local/www/system_certmanager.php:1034
+#: src/usr/local/www/system_certmanager.php:1002
msgid "external"
msgstr ""
-#: src/usr/local/www/system_camanager.php:445
-#: src/usr/local/www/system_certmanager.php:1066
+#: src/usr/local/www/system_camanager.php:442
+#: src/usr/local/www/system_certmanager.php:1034
msgid "Valid From"
msgstr ""
-#: src/usr/local/www/system_camanager.php:445
-#: src/usr/local/www/system_certmanager.php:1066
+#: src/usr/local/www/system_camanager.php:442
+#: src/usr/local/www/system_certmanager.php:1034
msgid "Valid Until"
msgstr ""
-#: src/usr/local/www/system_camanager.php:449
+#: src/usr/local/www/system_camanager.php:446
msgid "Edit CA"
msgstr ""
-#: src/usr/local/www/system_camanager.php:450
+#: src/usr/local/www/system_camanager.php:447
msgid "Export CA"
msgstr ""
-#: src/usr/local/www/system_camanager.php:452
+#: src/usr/local/www/system_camanager.php:449
msgid "Export key"
msgstr ""
-#: src/usr/local/www/system_camanager.php:454
+#: src/usr/local/www/system_camanager.php:451
msgid "Delete CA"
msgstr ""
-#: src/usr/local/www/system_camanager.php:495
+#: src/usr/local/www/system_camanager.php:492
msgid "Create / Edit CA"
msgstr ""
-#: src/usr/local/www/system_camanager.php:507
-#: src/usr/local/www/system_certmanager.php:660
+#: src/usr/local/www/system_camanager.php:504
+#: src/usr/local/www/system_certmanager.php:618
#: src/usr/local/www/system_crlmanager.php:387
msgid "Method"
msgstr ""
-#: src/usr/local/www/system_camanager.php:515
+#: src/usr/local/www/system_camanager.php:512
msgid "Existing Certificate Authority"
msgstr ""
-#: src/usr/local/www/system_camanager.php:522
-#: src/usr/local/www/system_certmanager.php:681
+#: src/usr/local/www/system_camanager.php:519
+#: src/usr/local/www/system_certmanager.php:639
msgid "Paste a certificate in X.509 PEM format here."
msgstr ""
-#: src/usr/local/www/system_camanager.php:526
+#: src/usr/local/www/system_camanager.php:523
msgid "Certificate Private Key (optional)"
msgstr ""
-#: src/usr/local/www/system_camanager.php:528
+#: src/usr/local/www/system_camanager.php:525
msgid ""
"Paste the private key for the above certificate here. This is optional in "
-"most cases, but required if you need to generate a Certificate Revocation "
-"List (CRL)."
+"most cases, but is required when generating a Certificate Revocation List "
+"(CRL)."
msgstr ""
-#: src/usr/local/www/system_camanager.php:534
+#: src/usr/local/www/system_camanager.php:531
msgid "Serial for next certificate"
msgstr ""
-#: src/usr/local/www/system_camanager.php:537
+#: src/usr/local/www/system_camanager.php:534
msgid ""
"Enter a decimal number to be used as the serial number for the next "
"certificate to be created using this CA."
msgstr ""
-#: src/usr/local/www/system_camanager.php:542
+#: src/usr/local/www/system_camanager.php:539
msgid "Internal Certificate Authority"
msgstr ""
-#: src/usr/local/www/system_camanager.php:566
+#: src/usr/local/www/system_camanager.php:563
msgid "Key length (bits)"
msgstr ""
-#: src/usr/local/www/system_camanager.php:573
-#: src/usr/local/www/system_certmanager.php:727
-#: src/usr/local/www/system_certmanager.php:857
+#: src/usr/local/www/system_camanager.php:570
+#: src/usr/local/www/system_certmanager.php:686
+#: src/usr/local/www/system_certmanager.php:820
msgid "Digest Algorithm"
msgstr ""
-#: src/usr/local/www/system_camanager.php:576
-#: src/usr/local/www/system_certmanager.php:730
+#: src/usr/local/www/system_camanager.php:573
+#: src/usr/local/www/system_certmanager.php:689
msgid ""
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible."
msgstr ""
-#: src/usr/local/www/system_camanager.php:581
-#: src/usr/local/www/system_certmanager.php:743
+#: src/usr/local/www/system_camanager.php:578
+#: src/usr/local/www/system_certmanager.php:702
msgid "Lifetime (days)"
msgstr ""
-#: src/usr/local/www/system_camanager.php:588
-#: src/usr/local/www/system_certmanager.php:750
-#: src/usr/local/www/system_certmanager.php:865
+#: src/usr/local/www/system_camanager.php:585
+#: src/usr/local/www/system_certmanager.php:709
+#: src/usr/local/www/system_certmanager.php:828
msgid "Country Code"
msgstr ""
-#: src/usr/local/www/system_camanager.php:595
-#: src/usr/local/www/system_certmanager.php:757
-#: src/usr/local/www/system_certmanager.php:872
+#: src/usr/local/www/system_camanager.php:592
+#: src/usr/local/www/system_certmanager.php:716
+#: src/usr/local/www/system_certmanager.php:835
msgid "State or Province"
msgstr ""
-#: src/usr/local/www/system_camanager.php:603
-#: src/usr/local/www/system_certmanager.php:765
-#: src/usr/local/www/system_certmanager.php:880
+#: src/usr/local/www/system_camanager.php:600
+#: src/usr/local/www/system_certmanager.php:724
+#: src/usr/local/www/system_certmanager.php:843
msgid "City"
msgstr ""
-#: src/usr/local/www/system_camanager.php:611
-#: src/usr/local/www/system_certmanager.php:773
-#: src/usr/local/www/system_certmanager.php:888
+#: src/usr/local/www/system_camanager.php:608
+#: src/usr/local/www/system_certmanager.php:732
+#: src/usr/local/www/system_certmanager.php:851
msgid "Organization"
msgstr ""
@@ -26350,15 +26651,15 @@ msgid "Key data"
msgstr ""
#: src/usr/local/www/system_certmanager.php:276
-#: src/usr/local/www/system_certmanager.php:695
-#: src/usr/local/www/system_certmanager.php:712
+#: src/usr/local/www/system_certmanager.php:653
+#: src/usr/local/www/system_certmanager.php:671
#: src/usr/local/www/system_usermanager.php:192
-#: src/usr/local/www/system_usermanager.php:790
+#: src/usr/local/www/system_usermanager.php:795
msgid "Certificate authority"
msgstr ""
#: src/usr/local/www/system_certmanager.php:278
-#: src/usr/local/www/system_certmanager.php:735
+#: src/usr/local/www/system_certmanager.php:694
msgid "Certificate Type"
msgstr ""
@@ -26375,149 +26676,146 @@ msgstr ""
msgid "The certificate modulus does not match the signing request modulus."
msgstr ""
-#: src/usr/local/www/system_certmanager.php:597
-msgid "Complete Signing Request"
-msgstr ""
-
-#: src/usr/local/www/system_certmanager.php:617
-#: src/usr/local/www/system_certmanager.php:966
-msgid "Signing request data"
-msgstr ""
-
-#: src/usr/local/www/system_certmanager.php:619
-#: src/usr/local/www/system_certmanager.php:970
-msgid ""
-"Copy the certificate signing data from here and forward it to your "
-"certificate authority for signing."
-msgstr ""
-
-#: src/usr/local/www/system_certmanager.php:624
-#: src/usr/local/www/system_certmanager.php:974
-msgid "Final certificate data"
-msgstr ""
-
-#: src/usr/local/www/system_certmanager.php:626
-#: src/usr/local/www/system_certmanager.php:977
-msgid "Paste the certificate received from your certificate authority here."
-msgstr ""
-
-#: src/usr/local/www/system_certmanager.php:655
+#: src/usr/local/www/system_certmanager.php:613
msgid "Add a New Certificate"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:674
+#: src/usr/local/www/system_certmanager.php:632
msgid "Import Certificate"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:685
+#: src/usr/local/www/system_certmanager.php:643
msgid "Private key data"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:687
+#: src/usr/local/www/system_certmanager.php:645
msgid "Paste a private key in X.509 PEM format here."
msgstr ""
-#: src/usr/local/www/system_certmanager.php:690
+#: src/usr/local/www/system_certmanager.php:648
msgid "Internal Certificate"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:696
-msgid "No internal Certificate Authorities have been defined. You must "
+#: src/usr/local/www/system_certmanager.php:654
+msgid "No internal Certificate Authorities have been defined. "
msgstr ""
-#: src/usr/local/www/system_certmanager.php:697
-msgid " create"
+#: src/usr/local/www/system_certmanager.php:655
+msgid ""
+"An internal CA must be defined in order to create an internal certificate. "
+msgstr ""
+
+#: src/usr/local/www/system_certmanager.php:656
+msgid "Create"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:698
-msgid " an internal CA before creating an internal certificate."
+#: src/usr/local/www/system_certmanager.php:657
+msgid " an internal CA."
msgstr ""
-#: src/usr/local/www/system_certmanager.php:738
+#: src/usr/local/www/system_certmanager.php:697
msgid ""
"Type of certificate to generate. Used for placing restrictions on the usage "
"of the generated certificate."
msgstr ""
-#: src/usr/local/www/system_certmanager.php:806
+#: src/usr/local/www/system_certmanager.php:765
msgid "Alternative Names"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:813
+#: src/usr/local/www/system_certmanager.php:772
msgid "FQDN or Hostname"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:815
+#: src/usr/local/www/system_certmanager.php:774
msgid "URI"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:816
+#: src/usr/local/www/system_certmanager.php:775
msgid "email address"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:845
+#: src/usr/local/www/system_certmanager.php:808
msgid "External Signing Request"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:860
+#: src/usr/local/www/system_certmanager.php:823
msgid ""
"NOTE: It is recommended to use an algorithm stronger than SHA1 when possible"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:911
+#: src/usr/local/www/system_certmanager.php:874
msgid "Choose an Existing Certificate"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:941
+#: src/usr/local/www/system_certmanager.php:903
msgid "Existing Certificates"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:955
+#: src/usr/local/www/system_certmanager.php:915
msgid "Complete Signing Request for "
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1042
+#: src/usr/local/www/system_certmanager.php:926
+msgid "Signing request data"
+msgstr ""
+
+#: src/usr/local/www/system_certmanager.php:930
+msgid ""
+"Copy the certificate signing data from here and forward it to a certificate "
+"authority for signing."
+msgstr ""
+
+#: src/usr/local/www/system_certmanager.php:934
+msgid "Final certificate data"
+msgstr ""
+
+#: src/usr/local/www/system_certmanager.php:937
+msgid "Paste the certificate received from the certificate authority here."
+msgstr ""
+
+#: src/usr/local/www/system_certmanager.php:1010
msgid "external - signature pending"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1078
+#: src/usr/local/www/system_certmanager.php:1046
msgid "User Cert"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1081
+#: src/usr/local/www/system_certmanager.php:1049
msgid "OpenVPN Server"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1084
+#: src/usr/local/www/system_certmanager.php:1052
msgid "OpenVPN Client"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1087
+#: src/usr/local/www/system_certmanager.php:1055
msgid "IPsec Tunnel"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1114
+#: src/usr/local/www/system_certmanager.php:1082
msgid "Export Certificate"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1115
-#: src/usr/local/www/system_certmanager.php:1120
+#: src/usr/local/www/system_certmanager.php:1083
+#: src/usr/local/www/system_certmanager.php:1088
msgid "Export Key"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1116
+#: src/usr/local/www/system_certmanager.php:1084
msgid "Export P12"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1118
+#: src/usr/local/www/system_certmanager.php:1086
msgid "Update CSR"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1119
+#: src/usr/local/www/system_certmanager.php:1087
msgid "Export Request"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:1123
+#: src/usr/local/www/system_certmanager.php:1091
msgid "Delete Certificate"
msgstr ""
@@ -26631,12 +26929,8 @@ msgstr ""
msgid "Revoked At"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:529
-msgid "Do you really want to delete this Certificate from the CRL?"
-msgstr ""
-
#: src/usr/local/www/system_crlmanager.php:530
-msgid "Delete this certificate from the CRL "
+msgid "Delete this certificate from the CRL"
msgstr ""
#: src/usr/local/www/system_crlmanager.php:554
@@ -26648,7 +26942,7 @@ msgid "Choose a Certificate to Revoke"
msgstr ""
#: src/usr/local/www/system_crlmanager.php:564
-#: src/usr/local/www/system_usermanager.php:733
+#: src/usr/local/www/system_usermanager.php:738
#: src/usr/local/www/vpn_ipsec_phase1.php:253
#: src/usr/local/www/vpn_openvpn_server.php:426
msgid "Certificate"
@@ -26658,25 +26952,25 @@ msgstr ""
msgid "Reason"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:609
+#: src/usr/local/www/system_crlmanager.php:611
msgid "Additional Certificate Revocation Lists"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:648
-#: src/usr/local/www/system_crlmanager.php:654
+#: src/usr/local/www/system_crlmanager.php:651
+#: src/usr/local/www/system_crlmanager.php:658
msgid "Add or Import CRL"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:675
+#: src/usr/local/www/system_crlmanager.php:678
msgid "Export CRL"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:680
-#: src/usr/local/www/system_crlmanager.php:686
+#: src/usr/local/www/system_crlmanager.php:681
+#: src/usr/local/www/system_crlmanager.php:685
msgid "Edit CRL"
msgstr ""
-#: src/usr/local/www/system_crlmanager.php:692
+#: src/usr/local/www/system_crlmanager.php:689
msgid "Delete CRL"
msgstr ""
@@ -26685,12 +26979,12 @@ msgstr ""
msgid "removed gateway group %s"
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:134
+#: src/usr/local/www/system_gateway_groups.php:148
#: src/usr/local/www/system_gateways.php:258
msgid "The gateway configuration has been changed."
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:139
+#: src/usr/local/www/system_gateway_groups.php:153
#: src/usr/local/www/system_gateways.php:263
#: src/usr/local/www/system_routes.php:77
#: src/usr/local/www/system_routes.php:246
@@ -26700,19 +26994,19 @@ msgstr ""
msgid "Static Routes"
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:186
+#: src/usr/local/www/system_gateway_groups.php:204
msgid "Edit gateway group"
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:187
+#: src/usr/local/www/system_gateway_groups.php:205
msgid "Copy gateway group"
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:188
+#: src/usr/local/www/system_gateway_groups.php:206
msgid "Delete gateway group"
msgstr ""
-#: src/usr/local/www/system_gateway_groups.php:209
+#: src/usr/local/www/system_gateway_groups.php:227
msgid ""
"Remember to use these Gateway Groups in firewall rules in order to enable "
"load balancing, failover, or policy-based routing.<br />Without rules "
@@ -26724,12 +27018,12 @@ msgid "Member Down"
msgstr ""
#: src/usr/local/www/system_gateway_groups_edit.php:77
-#: src/usr/local/www/system_gateway_groups_edit.php:334
+#: src/usr/local/www/system_gateway_groups_edit.php:363
msgid "Packet Loss"
msgstr ""
#: src/usr/local/www/system_gateway_groups_edit.php:78
-#: src/usr/local/www/system_gateway_groups_edit.php:335
+#: src/usr/local/www/system_gateway_groups_edit.php:364
msgid "High Latency"
msgstr ""
@@ -26737,66 +27031,65 @@ msgstr ""
msgid "Packet Loss or High Latency"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:114
+#: src/usr/local/www/system_gateway_groups_edit.php:115
msgid "A valid gateway group name must be specified."
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:117
-#: src/usr/local/www/system_gateways_edit.php:150
-msgid "The gateway name must not contain invalid characters."
+#: src/usr/local/www/system_gateway_groups_edit.php:118
+msgid "gateway group"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:126
+#: src/usr/local/www/system_gateway_groups_edit.php:127
msgid "Changing name on a gateway group is not allowed."
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:132
+#: src/usr/local/www/system_gateway_groups_edit.php:133
#, php-format
msgid "A gateway group with this name \"%s\" already exists."
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:149
+#: src/usr/local/www/system_gateway_groups_edit.php:150
#, php-format
msgid ""
"A gateway group cannot have the same name as a gateway \"%s\" please choose "
"another name."
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:154
+#: src/usr/local/www/system_gateway_groups_edit.php:155
msgid "No gateway(s) have been selected to be used in this group"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:223
+#: src/usr/local/www/system_gateway_groups_edit.php:238
msgid "Edit Gateway Group Entry"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:235
+#: src/usr/local/www/system_gateway_groups_edit.php:250
msgid "Gateway Priority"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:275
-#: src/usr/local/www/system_gateway_groups_edit.php:278
-#: src/usr/local/www/system_gateway_groups_edit.php:311
+#: src/usr/local/www/system_gateway_groups_edit.php:304
+#: src/usr/local/www/system_gateway_groups_edit.php:307
+#: src/usr/local/www/system_gateway_groups_edit.php:340
msgid "Tier"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:317
+#: src/usr/local/www/system_gateway_groups_edit.php:346
msgid "Link Priority"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:333
+#: src/usr/local/www/system_gateway_groups_edit.php:362
msgid "Member down"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:336
+#: src/usr/local/www/system_gateway_groups_edit.php:365
msgid "Packet Loss or High latency"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:330
+#: src/usr/local/www/system_gateway_groups_edit.php:359
msgid "Trigger Level"
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:338
+#: src/usr/local/www/system_gateway_groups_edit.php:367
msgid "When to trigger exclusion of a member"
msgstr ""
@@ -26837,7 +27130,7 @@ msgstr ""
#: src/usr/local/www/system_gateways.php:279
#: src/usr/local/www/system_gateways_edit.php:672
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:134
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:139
msgid "Monitor IP"
msgstr ""
@@ -26865,6 +27158,10 @@ msgstr ""
msgid "Delete gateway"
msgstr ""
+#: src/usr/local/www/system_gateways_edit.php:150
+msgid "gateway"
+msgstr ""
+
#: src/usr/local/www/system_gateways_edit.php:179
msgid "A valid gateway IP address must be specified."
msgstr ""
@@ -26946,8 +27243,8 @@ msgstr ""
#: src/usr/local/www/system_gateways_edit.php:305
#, php-format
msgid ""
-"The monitor IP address \"%s\" is already in use. You must choose a different "
-"monitor IP."
+"The monitor IP address \"%s\" is already in use. A different monitor IP must "
+"be chosen."
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:317
@@ -27077,7 +27374,7 @@ msgid "Default Gateway"
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:670
-msgid "This will consider this gateway as always being up"
+msgid "This will consider this gateway as always being up."
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:683
@@ -27092,238 +27389,248 @@ msgid "Force state"
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:694
-msgid "This will force this gateway to be considered Down"
+msgid "This will force this gateway to be considered down."
+msgstr ""
+
+#: src/usr/local/www/system_gateways_edit.php:701
+msgid "A description may be entered here for reference (not parsed)."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:744
+#: src/usr/local/www/system_gateways_edit.php:728
msgid "Weight for this gateway when used in a Gateway Group."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:748
+#: src/usr/local/www/system_gateways_edit.php:732
msgid "Data Payload"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:752
+#: src/usr/local/www/system_gateways_edit.php:736
msgid "Define data payload to send on ICMP packets to gateway monitor IP."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:754
+#: src/usr/local/www/system_gateways_edit.php:738
msgid "Latency thresholds"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:769
+#: src/usr/local/www/system_gateways_edit.php:753
#, php-format
msgid ""
"Low and high thresholds for latency in milliseconds.\n"
"\tDefault is %d/%d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:774
+#: src/usr/local/www/system_gateways_edit.php:758
msgid "Packet Loss thresholds"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:789
+#: src/usr/local/www/system_gateways_edit.php:773
#, php-format
msgid ""
"Low and high thresholds for packet loss in %%.\n"
"\tDefault is %d/%d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:795
+#: src/usr/local/www/system_gateways_edit.php:779
msgid "Probe Interval"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:802
+#: src/usr/local/www/system_gateways_edit.php:786
#, php-format
msgid "How often an ICMP probe will be sent in milliseconds. Default is %d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:806
+#: src/usr/local/www/system_gateways_edit.php:790
msgid "Loss Interval"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:810
+#: src/usr/local/www/system_gateways_edit.php:794
#, php-format
msgid ""
"Time interval in milliseconds before packets are treated as lost. Default is "
"%d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:813
+#: src/usr/local/www/system_gateways_edit.php:797
msgid "Time Period"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:823
+#: src/usr/local/www/system_gateways_edit.php:807
#, php-format
msgid ""
"Time period in milliseconds over which results are averaged. Default is %d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:827
+#: src/usr/local/www/system_gateways_edit.php:811
msgid "Alert interval"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:837
+#: src/usr/local/www/system_gateways_edit.php:821
#, php-format
msgid ""
"Time interval in milliseconds between checking for an alert condition. "
"Default is %d."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:842
+#: src/usr/local/www/system_gateways_edit.php:826
msgid "Additional information"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:844
+#: src/usr/local/www/system_gateways_edit.php:828
msgid ""
"The time period, probe interval and loss interval are closely related. The "
"ratio between these values control the accuracy of the numbers reported and "
"the timeliness of alerts."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:848
+#: src/usr/local/www/system_gateways_edit.php:832
msgid ""
-"A longer time period will will provide smoother results for round trip time "
-"and loss, but will increase the time before a latency or loss alert is "
-"triggered."
+"A longer time period will provide smoother results for round trip time and "
+"loss, but will increase the time before a latency or loss alert is triggered."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:851
+#: src/usr/local/www/system_gateways_edit.php:835
msgid ""
"A shorter probe interval will decrease the time required before a latency or "
"loss alert is triggered, but will use more network resource. Longer probe "
"intervals will degrade the accuracy of the quality graphs."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:855
+#: src/usr/local/www/system_gateways_edit.php:839
msgid ""
"The ratio of the probe interval to the time period (minus the loss interval) "
"also controls the resolution of loss reporting. To determine the resolution, "
"the following formula can be used:"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:859
-msgid "&nbsp &nbsp 100 * probe interval / (time period - loss interval)"
+#: src/usr/local/www/system_gateways_edit.php:843
+msgid ""
+"&nbsp;&nbsp;&nbsp;&nbsp;100 * probe interval / (time period - loss interval)"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:861
+#: src/usr/local/www/system_gateways_edit.php:845
msgid ""
"Rounding up to the nearest whole number will yield the resolution of loss "
"reporting in percent. The default values provide a resolution of 1%."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:864
+#: src/usr/local/www/system_gateways_edit.php:848
msgid ""
-"The default settings are recommended for most use cases. However if you "
-"change the settings, please observe the following restrictions:"
+"The default settings are recommended for most use cases. However if changing "
+"the settings, please observe the following restrictions:"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:867
+#: src/usr/local/www/system_gateways_edit.php:851
msgid ""
"- The time period must be greater than twice the probe interval plus the "
"loss interval. This guarantees there is at least one completed probe at all "
"times. "
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:870
+#: src/usr/local/www/system_gateways_edit.php:854
msgid ""
"- The alert interval must be greater than or equal to the probe interval. "
"There is no point checking for alerts more often than probes are done."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:873
+#: src/usr/local/www/system_gateways_edit.php:857
msgid ""
"- The loss interval must be greater than or equal to the high latency "
"threshold."
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:879
+#: src/usr/local/www/system_gateways_edit.php:863
msgid "Use non-local gateway"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:882
+#: src/usr/local/www/system_gateways_edit.php:866
msgid ""
"This will allow use of a gateway outside of this interface's subnet. This is "
"usually indicative of a configuration error, but is required for some "
"scenarios."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:114
+#: src/usr/local/www/system_groupmanager.php:115
#, php-format
msgid "Group %s successfully deleted."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:138
+#: src/usr/local/www/system_groupmanager.php:139
#, php-format
msgid "Privilege %s successfully deleted."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:165
+#: src/usr/local/www/system_groupmanager.php:166
msgid "Selected groups removed successfully."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:181
-msgid "The group name contains invalid characters."
+#: src/usr/local/www/system_groupmanager.php:183
+#: src/usr/local/www/system_groupmanager.php:187
+#, php-format
+msgid "The (%s) group name contains invalid characters."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:185
+#: src/usr/local/www/system_groupmanager.php:193
msgid "The group name is longer than 16 characters."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:192
+#: src/usr/local/www/system_groupmanager.php:200
msgid "Another entry with the same group name already exists."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:258
-#: src/usr/local/www/system_usermanager.php:399
+#: src/usr/local/www/system_groupmanager.php:272
+#: src/usr/local/www/system_usermanager.php:400
msgid "Delete Privilege"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:304
-#: src/usr/local/www/system_groupmanager.php:392
+#: src/usr/local/www/system_groupmanager.php:320
+#: src/usr/local/www/system_groupmanager.php:401
msgid "Group name"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:306
+#: src/usr/local/www/system_groupmanager.php:322
msgid "Member Count"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:381
+#: src/usr/local/www/system_groupmanager.php:397
msgid "Group Properties"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:385
-#: src/usr/local/www/system_usermanager.php:607
-msgid "Defined by"
+#: src/usr/local/www/system_groupmanager.php:411
+#: src/usr/local/www/system_groupmanager.php:418
+msgid "Scope"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:406
-msgid "Group description, for your own information only"
+#: src/usr/local/www/system_groupmanager.php:429
+msgid "Group description, for administrative information only"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:412
-#: src/usr/local/www/system_usermanager.php:677
+#: src/usr/local/www/system_groupmanager.php:436
+#: src/usr/local/www/system_usermanager.php:678
msgid "Group membership"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:433
+#: src/usr/local/www/system_groupmanager.php:457
msgid "Not members"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:449
-msgid "Move to \"Members\" >"
+#: src/usr/local/www/system_groupmanager.php:473
+msgid "Move to \"Members\""
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:454
-msgid "< Move to \"Not members"
+#: src/usr/local/www/system_groupmanager.php:480
+msgid "Move to \"Not members"
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:457
-#: src/usr/local/www/system_usermanager.php:726
-msgid "Hold down CTRL (pc)/COMMAND (mac) key to select multiple items"
+#: src/usr/local/www/system_groupmanager.php:485
+#: src/usr/local/www/system_groupmanager_addprivs.php:195
+#: src/usr/local/www/system_groupmanager_addprivs.php:204
+#: src/usr/local/www/system_usermanager.php:731
+#: src/usr/local/www/system_usermanager_addprivs.php:189
+#: src/usr/local/www/system_usermanager_addprivs.php:198
+msgid "Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items."
msgstr ""
-#: src/usr/local/www/system_groupmanager.php:463
+#: src/usr/local/www/system_groupmanager.php:491
msgid "Assigned Privileges"
msgstr ""
@@ -27332,41 +27639,31 @@ msgstr ""
msgid "Add Privileges"
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:100
+#: src/usr/local/www/system_groupmanager_addprivs.php:99
#: src/usr/local/www/system_usermanager_addprivs.php:104
msgid "Selected privileges"
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:187
+#: src/usr/local/www/system_groupmanager_addprivs.php:186
msgid "Add Privileges for "
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:191
+#: src/usr/local/www/system_groupmanager_addprivs.php:190
#: src/usr/local/www/system_usermanager_addprivs.php:184
msgid "Assigned privileges"
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:196
-msgid "Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items."
-msgstr ""
-
-#: src/usr/local/www/system_groupmanager_addprivs.php:200
+#: src/usr/local/www/system_groupmanager_addprivs.php:199
#: src/usr/local/www/system_usermanager_addprivs.php:193
msgid "Shadow"
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:205
-#: src/usr/local/www/system_usermanager_addprivs.php:189
-#: src/usr/local/www/system_usermanager_addprivs.php:198
-msgid "Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items"
-msgstr ""
-
-#: src/usr/local/www/system_groupmanager_addprivs.php:212
+#: src/usr/local/www/system_groupmanager_addprivs.php:211
#: src/usr/local/www/system_usermanager_addprivs.php:205
msgid "Show only the choices containing this term"
msgstr ""
-#: src/usr/local/www/system_groupmanager_addprivs.php:240
+#: src/usr/local/www/system_groupmanager_addprivs.php:239
#: src/usr/local/www/system_usermanager_addprivs.php:243
msgid "Select a privilege from the list above for a description"
msgstr ""
@@ -27411,9 +27708,9 @@ msgstr ""
#: src/usr/local/www/system_hasync.php:172
msgid ""
"If Synchronize States is enabled this interface will be used for "
-"communication.<br />We recommend setting this to an interface other than "
-"LAN! A dedicated interface works the best.<br />You must define an IP on "
-"each machine participating in this failover group.<br />You must have an IP "
+"communication.<br />It is recommended to set this to an interface other than "
+"LAN! A dedicated interface works the best.<br />An IP must be defined on "
+"each machine participating in this failover group.<br />An IP must be "
"assigned to the interface on any participating sync nodes."
msgstr ""
@@ -27452,7 +27749,7 @@ msgstr ""
#: src/usr/local/www/system_hasync.php:204
msgid ""
"Enter the webConfigurator username of the system entered above for "
-"synchronizing your configuration.<br />Do not use the Synchronize Config to "
+"synchronizing the configuration.<br />Do not use the Synchronize Config to "
"IP and username option on backup cluster members!"
msgstr ""
@@ -27463,7 +27760,7 @@ msgstr ""
#: src/usr/local/www/system_hasync.php:212
msgid ""
"Enter the webConfigurator password of the system entered above for "
-"synchronizing your configuration.<br />Do not use the Synchronize Config to "
+"synchronizing the configuration.<br />Do not use the Synchronize Config to "
"IP and password option on backup cluster members!"
msgstr ""
@@ -27611,7 +27908,7 @@ msgstr ""
#: src/usr/local/www/system_routes_edit.php:129
msgid ""
-"The gateway is disabled but the route is not. You must disable the route in "
+"The gateway is disabled but the route is not. The route must be disabled in "
"order to choose a disabled gateway."
msgstr ""
@@ -27655,69 +27952,65 @@ msgid ""
"list."
msgstr ""
-#: src/usr/local/www/system_update_settings.php:123
-msgid "Firmware Branch"
+#: src/usr/local/www/system_update_settings.php:105
+msgid "Changes have been saved successfully"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:129
-msgid "Stable"
-msgstr ""
-
-#: src/usr/local/www/system_update_settings.php:129
-msgid "Development"
+#: src/usr/local/www/system_update_settings.php:161
+msgid "Firmware Branch"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:127
+#: src/usr/local/www/system_update_settings.php:165
msgid "Branch"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:130
+#: src/usr/local/www/system_update_settings.php:168
msgid ""
"Please select the stable, or the development branch from which to update the "
"system firmware. <br />Use of the development version is at your own risk!"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:135
+#: src/usr/local/www/system_update_settings.php:173
msgid "Updates"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:146
+#: src/usr/local/www/system_update_settings.php:177
msgid "Dashboard check"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:154
+#: src/usr/local/www/system_update_settings.php:185
msgid "GitSync"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:158
+#: src/usr/local/www/system_update_settings.php:189
msgid "Auto sync on update"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:161
-#: src/usr/local/www/system_update_settings.php:159
-msgid "After updating, sync with the following repository/branch before reboot"
+#: src/usr/local/www/system_update_settings.php:192
+msgid ""
+"After updating, sync with the following repository/branch before reboot."
msgstr ""
-#: src/usr/local/www/system_update_settings.php:173
+#: src/usr/local/www/system_update_settings.php:204
msgid "Repository URL"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:176
+#: src/usr/local/www/system_update_settings.php:207
#, php-format
msgid ""
"The most recently used repository was %s. This repository will be used if "
"the field is left blank."
msgstr ""
-#: src/usr/local/www/system_update_settings.php:194
+#: src/usr/local/www/system_update_settings.php:225
msgid "Branch name"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:197
+#: src/usr/local/www/system_update_settings.php:228
#, php-format
msgid ""
"The most recently used branch was \"%s\". (Usually the branch name is "
-"master)<br />Note: Sync will not be performed if a branch is not specified"
+"master)<br />Note: Sync will not be performed if a branch is not specified."
msgstr ""
#: src/usr/local/www/system_usermanager.php:119
@@ -27774,35 +28067,35 @@ msgstr ""
msgid "Inherited from"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:429
+#: src/usr/local/www/system_usermanager.php:430
msgid "CA"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:448
+#: src/usr/local/www/system_usermanager.php:449
msgid "Remove this certificate association? (Certificate will not be deleted)"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:501
-#: src/usr/local/www/system_usermanager.php:659
+#: src/usr/local/www/system_usermanager.php:502
+#: src/usr/local/www/system_usermanager.php:660
msgid "Full name"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:530
+#: src/usr/local/www/system_usermanager.php:531
#: src/usr/local/www/vpn_ipsec_keys.php:164
#: src/usr/local/www/vpn_l2tp_users.php:145
msgid "Edit user"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:532
+#: src/usr/local/www/system_usermanager.php:533
#: src/usr/local/www/vpn_l2tp_users.php:146
msgid "Delete user"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:548
+#: src/usr/local/www/system_usermanager.php:549
msgid "Delete selected users"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:556
+#: src/usr/local/www/system_usermanager.php:557
msgid ""
"Additional users can be added here. User permissions for accessing the "
"webConfigurator can be assigned directly or inherited from group "
@@ -27810,79 +28103,83 @@ msgid ""
"be deleted."
msgstr ""
-#: src/usr/local/www/system_usermanager.php:559
+#: src/usr/local/www/system_usermanager.php:560
msgid ""
"Accounts added here are also used for other parts of the system such as "
"OpenVPN, IPsec, and Captive Portal."
msgstr ""
-#: src/usr/local/www/system_usermanager.php:604
+#: src/usr/local/www/system_usermanager.php:605
msgid "User Properties"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:651
+#: src/usr/local/www/system_usermanager.php:608
+msgid "Defined by"
+msgstr ""
+
+#: src/usr/local/www/system_usermanager.php:652
msgid "Confirm Password"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:662
-msgid "User's full name, for your own information only"
+#: src/usr/local/www/system_usermanager.php:663
+msgid "User's full name, for administrative information only"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:670
+#: src/usr/local/www/system_usermanager.php:671
msgid "Expiration date"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:673
+#: src/usr/local/www/system_usermanager.php:674
msgid ""
"Leave blank if the account shouldn't expire, otherwise enter the expiration "
"date"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:702
+#: src/usr/local/www/system_usermanager.php:703
msgid "Not member of"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:710
+#: src/usr/local/www/system_usermanager.php:711
msgid "Member of"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:718
-msgid "Move to \"Member of\" list >"
+#: src/usr/local/www/system_usermanager.php:719
+msgid "Move to \"Member of\" list"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:723
-msgid "< Move to \"Not member of\" list"
+#: src/usr/local/www/system_usermanager.php:726
+msgid "Move to \"Not member of\" list"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:746
+#: src/usr/local/www/system_usermanager.php:751
msgid "Effective Privileges"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:756
+#: src/usr/local/www/system_usermanager.php:761
msgid "User Certificates"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:768
+#: src/usr/local/www/system_usermanager.php:773
msgid "Create Certificate for User"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:820
+#: src/usr/local/www/system_usermanager.php:825
msgid "Keys"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:824
+#: src/usr/local/www/system_usermanager.php:829
msgid "Authorized keys"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:831
+#: src/usr/local/www/system_usermanager.php:836
msgid "Authorized SSH Keys"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:833
+#: src/usr/local/www/system_usermanager.php:838
msgid "Enter authorized SSH keys for this user"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:837
+#: src/usr/local/www/system_usermanager.php:842
msgid "IPsec Pre-Shared Key"
msgstr ""
@@ -27899,7 +28196,7 @@ msgid "Password successfully changed."
msgstr ""
#: src/usr/local/www/system_usermanager_passwordmg.php:124
-msgid "Sorry, you cannot change the password for a non-local user."
+msgid "The password cannot be changed for a non-local user."
msgstr ""
#: src/usr/local/www/system_usermanager_passwordmg.php:131
@@ -27914,94 +28211,76 @@ msgstr ""
msgid "Select a new password"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings.php:86
-msgid "Session timeout must be an integer value."
-msgstr ""
-
-#: src/usr/local/www/system_usermanager_settings.php:91
-msgid ""
-"Settings have been saved, but the test was not performed because it is not "
-"supported for local databases."
-msgstr ""
-
-#: src/usr/local/www/system_usermanager_settings.php:101
-msgid ""
-"Settings have been saved, but the test was not performed because it is "
-"supported only for LDAP based backends."
-msgstr ""
-
-#: src/usr/local/www/system_usermanager_settings.php:137
-msgid "Popup blocker detected. Action aborted."
-msgstr ""
-
-#: src/usr/local/www/system_usermanager_settings.php:164
-msgid ""
-"Time in minutes to expire idle management sessions. The default is 4 hours "
-"(240 minutes).Enter 0 to never expire sessions. NOTE: This is a security "
-"risk!"
+#: src/usr/local/www/system_usermanager_settings.php:77
+#, php-format
+msgid "%sError: Could not find settings for %s%s"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings.php:182
-msgid "Save & Test"
+#: src/usr/local/www/system_usermanager_settings.php:84
+#, php-format
+msgid "Attempting connection to %s%s%s"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_ldapacpicker.php:131
-msgid ""
-"Could not connect to the LDAP server. Please check your LDAP configuration."
+#: src/usr/local/www/system_usermanager_settings.php:86
+#: src/usr/local/www/system_usermanager_settings.php:90
+#: src/usr/local/www/system_usermanager_settings.php:96
+#: src/usr/local/www/uploadconfig.php:82
+msgid "OK"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_ldapacpicker.php:134
-msgid "Please select which containers to Authenticate against:"
+#: src/usr/local/www/system_usermanager_settings.php:88
+#, php-format
+msgid "Attempting bind to %s%s%s"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:77
-msgid "Test Authentication server"
+#: src/usr/local/www/system_usermanager_settings.php:92
+#, php-format
+msgid "Attempting to fetch Organizational Units from %s%s%s"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:87
-#, php-format
-msgid "Could not find settings for %s%s"
+#: src/usr/local/www/system_usermanager_settings.php:100
+msgid "Organization units found"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:89
-#, php-format
-msgid "Testing %s LDAP settings... One moment please..."
+#: src/usr/local/www/system_usermanager_settings.php:110
+#: src/usr/local/www/system_usermanager_settings.php:116
+#: src/usr/local/www/system_usermanager_settings.php:120
+msgid "failed"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:93
-#, php-format
-msgid "Attempting connection to %s%s%s"
+#: src/usr/local/www/system_usermanager_settings.php:151
+msgid "Session timeout must be an integer value."
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:95
-#: src/usr/local/www/system_usermanager_settings_test.php:99
-#: src/usr/local/www/system_usermanager_settings_test.php:104
-#: src/usr/local/www/uploadconfig.php:82
-msgid "OK"
+#: src/usr/local/www/system_usermanager_settings.php:156
+msgid ""
+"Settings have been saved, but the test was not performed because it is not "
+"supported for local databases."
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:97
-#, php-format
-msgid "Attempting bind to %s%s%s"
+#: src/usr/local/www/system_usermanager_settings.php:166
+msgid ""
+"Settings have been saved, but the test was not performed because it is "
+"supported only for LDAP based backends."
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:101
-#, php-format
-msgid "Attempting to fetch Organizational Units from %s%s%s"
+#: src/usr/local/www/system_usermanager_settings.php:220
+msgid ""
+"Time in minutes to expire idle management sessions. The default is 4 hours "
+"(240 minutes). Enter 0 to never expire sessions. NOTE: This is a security "
+"risk!"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:108
-msgid "Organization units found"
+#: src/usr/local/www/system_usermanager_settings.php:238
+msgid "Save & Test"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:115
-#: src/usr/local/www/system_usermanager_settings_test.php:121
-#: src/usr/local/www/system_usermanager_settings_test.php:125
-msgid "failed"
+#: src/usr/local/www/system_usermanager_settings.php:245
+msgid "LDAP settings"
msgstr ""
-#: src/usr/local/www/system_usermanager_settings_test.php:133
-msgid "Return"
+#: src/usr/local/www/system_usermanager_settings.php:248
+msgid "Test results"
msgstr ""
#: src/usr/local/www/uploadconfig.php:76
@@ -28019,8 +28298,8 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec.php:252 src/usr/local/www/vpn_ipsec.php:258
#: src/usr/local/www/vpn_ipsec_keys.php:119
#: src/usr/local/www/vpn_ipsec_mobile.php:456
-#: src/usr/local/www/vpn_ipsec_phase1.php:667
-#: src/usr/local/www/vpn_ipsec_phase1.php:680
+#: src/usr/local/www/vpn_ipsec_phase1.php:666
+#: src/usr/local/www/vpn_ipsec_phase1.php:678
#: src/usr/local/www/vpn_ipsec_phase2.php:444
#: src/usr/local/www/vpn_ipsec_phase2.php:523
#: src/usr/local/www/vpn_ipsec_settings.php:266
@@ -28032,7 +28311,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_mobile.php:339
#: src/usr/local/www/vpn_ipsec_mobile.php:457
#: src/usr/local/www/vpn_ipsec_phase1.php:664
-#: src/usr/local/www/vpn_ipsec_phase1.php:681
+#: src/usr/local/www/vpn_ipsec_phase1.php:679
#: src/usr/local/www/vpn_ipsec_phase2.php:441
#: src/usr/local/www/vpn_ipsec_phase2.php:524
#: src/usr/local/www/vpn_ipsec_settings.php:267
@@ -28044,7 +28323,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_keys.php:127
#: src/usr/local/www/vpn_ipsec_keys_edit.php:155
#: src/usr/local/www/vpn_ipsec_mobile.php:458
-#: src/usr/local/www/vpn_ipsec_phase1.php:682
+#: src/usr/local/www/vpn_ipsec_phase1.php:680
#: src/usr/local/www/vpn_ipsec_phase2.php:525
#: src/usr/local/www/vpn_ipsec_settings.php:268
msgid "Pre-Shared Keys"
@@ -28064,7 +28343,7 @@ msgid "IKE"
msgstr ""
#: src/usr/local/www/vpn_ipsec.php:283
-#: src/usr/local/www/vpn_ipsec_phase1.php:721
+#: src/usr/local/www/vpn_ipsec_phase1.php:719
msgid "Remote Gateway"
msgstr ""
@@ -28107,7 +28386,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec.php:418
#, php-format
-msgid "Show %s Phase-2 entries"
+msgid "Show Phase 2 Entries (%s)"
msgstr ""
#: src/usr/local/www/vpn_ipsec.php:427
@@ -28172,7 +28451,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec.php:560
#, php-format
-msgid "You can check your IPsec status at %s%s%s."
+msgid "The IPsec status can be checked at %s%s%s."
msgstr ""
#: src/usr/local/www/vpn_ipsec.php:560
@@ -28193,12 +28472,12 @@ msgstr ""
msgid "IPsec can be set to prefer older SAs at %s%s%s."
msgstr ""
-#: src/usr/local/www/vpn_ipsec.php:580
-msgid "Are you sure you wish to delete this P1 entry?"
+#: src/usr/local/www/vpn_ipsec.php:587
+msgid "Confirmation required to delete this P1 entry."
msgstr ""
-#: src/usr/local/www/vpn_ipsec.php:586
-msgid "Are you sure you wish to delete this P2 entry?"
+#: src/usr/local/www/vpn_ipsec.php:593
+msgid "Confirmation required to delete this P2 entry."
msgstr ""
#: src/usr/local/www/vpn_ipsec_keys.php:98
@@ -28224,7 +28503,7 @@ msgid "Delete key"
msgstr ""
#: src/usr/local/www/vpn_ipsec_keys.php:206
-#: src/usr/local/www/vpn_ipsec_keys_edit.php:201
+#: src/usr/local/www/vpn_ipsec_keys_edit.php:203
msgid "PSK for any user can be set by using an identifier of any."
msgstr ""
@@ -28260,7 +28539,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_keys_edit.php:172
msgid ""
"This can be either an IP address, fully qualified domain name or an e-mail "
-"address"
+"address."
msgstr ""
#: src/usr/local/www/vpn_ipsec_keys_edit.php:176
@@ -28416,9 +28695,9 @@ msgid ""
msgstr ""
#: src/usr/local/www/vpn_ipsec_mobile.php:594
-#: src/usr/local/www/vpn_openvpn_csc.php:451
-#: src/usr/local/www/vpn_openvpn_server.php:1017
-#: src/usr/local/www/vpn_openvpn_server.php:1024
+#: src/usr/local/www/vpn_openvpn_csc.php:455
+#: src/usr/local/www/vpn_openvpn_server.php:1022
+#: src/usr/local/www/vpn_openvpn_server.php:1029
msgid "DNS Default Domain"
msgstr ""
@@ -28482,14 +28761,14 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:276
msgid ""
-"A valid remote gateway IPv4 address must be specified or you need to change "
-"protocol to IPv6"
+"A valid remote gateway IPv4 address must be specified or protocol needs to "
+"be changed to IPv6"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:278
msgid ""
-"A valid remote gateway IPv6 address must be specified or you need to change "
-"protocol to IPv4"
+"A valid remote gateway IPv6 address must be specified or protocol needs to "
+"be changed to IPv4"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:288
@@ -28498,11 +28777,11 @@ msgid "The remote gateway \"%1$s\" is already used by phase1 \"%2$s\"."
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:299
-msgid "There is a Phase 2 using IPv6, you cannot use IPv4."
+msgid "There is a Phase 2 using IPv6, cannot use IPv4."
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:303
-msgid "There is a Phase 2 using IPv4, you cannot use IPv6."
+msgid "There is a Phase 2 using IPv4, cannot use IPv6."
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:317
@@ -28616,171 +28895,171 @@ msgid "GW Group %s"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase1.php:664
-#: src/usr/local/www/vpn_ipsec_phase1.php:667
+#: src/usr/local/www/vpn_ipsec_phase1.php:666
msgid "Edit Phase 1"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:688
+#: src/usr/local/www/vpn_ipsec_phase1.php:686
#: src/usr/local/www/vpn_ipsec_phase2.php:531
#: src/usr/local/www/vpn_openvpn_client.php:458
-#: src/usr/local/www/vpn_openvpn_csc.php:336
+#: src/usr/local/www/vpn_openvpn_csc.php:340
#: src/usr/local/www/vpn_openvpn_server.php:626
msgid "General Information"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:699
+#: src/usr/local/www/vpn_ipsec_phase1.php:697
msgid "Key Exchange version"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:702
+#: src/usr/local/www/vpn_ipsec_phase1.php:700
msgid ""
"Select the Internet Key Exchange protocol version to be used. Auto uses "
"IKEv2 when initiator, and accepts either IKEv1 or IKEv2 as responder."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:706
+#: src/usr/local/www/vpn_ipsec_phase1.php:704
msgid "Internet Protocol"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:709
+#: src/usr/local/www/vpn_ipsec_phase1.php:707
msgid "Select the Internet Protocol family."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:716
+#: src/usr/local/www/vpn_ipsec_phase1.php:714
msgid "Select the interface for the local endpoint of this phase1 entry."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:724
-msgid "Enter the public IP address or host name of the remote gateway"
+#: src/usr/local/www/vpn_ipsec_phase1.php:722
+msgid "Enter the public IP address or host name of the remote gateway."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:736
+#: src/usr/local/www/vpn_ipsec_phase1.php:734
msgid "Phase 1 Proposal (Authentication)"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:743
-#: src/usr/local/www/vpn_ipsec_phase1.php:841
-#: src/usr/local/www/vpn_ipsec_phase1.php:848
+#: src/usr/local/www/vpn_ipsec_phase1.php:741
+#: src/usr/local/www/vpn_ipsec_phase1.php:839
+#: src/usr/local/www/vpn_ipsec_phase1.php:846
msgid "Must match the setting chosen on the remote side."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:749
+#: src/usr/local/www/vpn_ipsec_phase1.php:747
msgid "Main"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:747
+#: src/usr/local/www/vpn_ipsec_phase1.php:745
msgid "Negotiation mode"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:750
+#: src/usr/local/www/vpn_ipsec_phase1.php:748
msgid "Aggressive is more flexible, but less secure."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:752
+#: src/usr/local/www/vpn_ipsec_phase1.php:750
msgid "My identifier"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:770
+#: src/usr/local/www/vpn_ipsec_phase1.php:768
msgid "Peer identifier"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:788
+#: src/usr/local/www/vpn_ipsec_phase1.php:786
msgid ""
"This is known as the \"group\" setting on some VPN client implementations"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:798
-msgid "Enter your Pre-Shared Key string."
+#: src/usr/local/www/vpn_ipsec_phase1.php:796
+msgid "Enter the Pre-Shared Key string."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:802
+#: src/usr/local/www/vpn_ipsec_phase1.php:800
msgid "My Certificate"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:805
+#: src/usr/local/www/vpn_ipsec_phase1.php:803
msgid "Select a certificate previously configured in the Certificate Manager."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:812
+#: src/usr/local/www/vpn_ipsec_phase1.php:810
msgid ""
"Select a certificate authority previously configured in the Certificate "
"Manager."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:816
+#: src/usr/local/www/vpn_ipsec_phase1.php:814
msgid "Phase 1 Proposal (Algorithms)"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:818
+#: src/usr/local/www/vpn_ipsec_phase1.php:816
#: src/usr/local/www/vpn_openvpn_client.php:661
#: src/usr/local/www/vpn_openvpn_server.php:809
msgid "Encryption Algorithm"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:838
+#: src/usr/local/www/vpn_ipsec_phase1.php:836
msgid "Hash Algorithm"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:845
+#: src/usr/local/www/vpn_ipsec_phase1.php:843
msgid "DH Group"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:852
+#: src/usr/local/www/vpn_ipsec_phase1.php:850
msgid "Lifetime (Seconds)"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:863
+#: src/usr/local/www/vpn_ipsec_phase1.php:861
msgid "Disable rekey"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:870
+#: src/usr/local/www/vpn_ipsec_phase1.php:868
msgid "Disable Reauth"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:877
+#: src/usr/local/www/vpn_ipsec_phase1.php:875
msgid "Responder Only"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:886
+#: src/usr/local/www/vpn_ipsec_phase1.php:884
msgid "Force"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:884
+#: src/usr/local/www/vpn_ipsec_phase1.php:882
msgid "NAT Traversal"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:887
+#: src/usr/local/www/vpn_ipsec_phase1.php:885
msgid ""
"Set this option to enable the use of NAT-T (i.e. the encapsulation of ESP in "
"UDP packets) if needed, which can help with clients that are behind "
"restrictive firewalls."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:892
+#: src/usr/local/www/vpn_ipsec_phase1.php:890
msgid "MOBIKE"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:895
+#: src/usr/local/www/vpn_ipsec_phase1.php:893
msgid "Set this option to control the use of MOBIKE"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:899
+#: src/usr/local/www/vpn_ipsec_phase1.php:897
msgid "Split connections"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:925
+#: src/usr/local/www/vpn_ipsec_phase1.php:923
msgid "Dead Peer Detection"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:935
+#: src/usr/local/www/vpn_ipsec_phase1.php:933
msgid "Delay between requesting peer acknowledgement."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:939
+#: src/usr/local/www/vpn_ipsec_phase1.php:937
msgid "Max failures"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:942
+#: src/usr/local/www/vpn_ipsec_phase1.php:940
msgid "Number of consecutive failures allowed before disconnect. "
msgstr ""
@@ -28810,14 +29089,14 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:190
msgid ""
-"A valid local network IPv4 address must be specified or you need to change "
-"Mode to IPv6"
+"A valid local network IPv4 address must be specified or Mode needs to be "
+"changed to IPv6"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:192
msgid ""
-"A valid local network IPv6 address must be specified or you need to change "
-"Mode to IPv4"
+"A valid local network IPv6 address must be specified or Mode needs to be "
+"changed to IPv4"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:203
@@ -28837,7 +29116,7 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:214
msgid ""
-"You cannot configure a network type address for NAT while only an address "
+"A network type address cannot be configured for NAT while only an address "
"type is selected for local source."
msgstr ""
@@ -28847,14 +29126,14 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:220
msgid ""
-"A valid NAT local network IPv4 address must be specified or you need to "
-"change Mode to IPv6"
+"A valid NAT local network IPv4 address must be specified or Mode needs to be "
+"changed to IPv6"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:222
msgid ""
-"A valid NAT local network IPv6 address must be specified or you need to "
-"change Mode to IPv4"
+"A valid NAT local network IPv6 address must be specified or Mode needs to be "
+"changed to IPv4"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:241
@@ -28867,14 +29146,14 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:247
msgid ""
-"A valid remote network IPv4 address must be specified or you need to change "
-"Mode to IPv6"
+"A valid remote network IPv4 address must be specified or Mode needs to be "
+"changed to IPv6"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:249
msgid ""
-"A valid remote network IPv6 address must be specified or you need to change "
-"Mode to IPv4"
+"A valid remote network IPv6 address must be specified or Mode needs to be "
+"changed to IPv4"
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:275
@@ -28942,8 +29221,8 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:670
msgid ""
-"Use 3DES for best compatibility or if you have a hardware crypto accelerator "
-"card. Blowfish is usually the fastest in software encryption."
+"Use 3DES for best compatibility or for a hardware crypto accelerator card. "
+"Blowfish is usually the fastest in software encryption."
msgstr ""
#: src/usr/local/www/vpn_ipsec_phase2.php:677
@@ -28977,17 +29256,17 @@ msgid "An integer between 576 and 65535 must be specified for Maximum MSS"
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:274
-msgid "Start IPsec in Debug Mode Based on Sections Selected"
+msgid "IPsec Logging Controls"
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:286
msgid ""
-"Launches IPsec in debug mode so that more verbose logs will be generated to "
-"aid in troubleshooting."
+"Changes the log verbosity for the IPsec daemon, so that more detail will be "
+"generated to aid in troubleshooting."
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:291
-msgid "IPsec Advanced Settings"
+msgid "Advanced IPsec Settings"
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:295
@@ -29034,12 +29313,12 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:328
msgid ""
"Some implementations send the third Main Mode message unencrypted, probably "
-"to find the PSKs for the specified ID for authentication.This is very "
+"to find the PSKs for the specified ID for authentication. This is very "
"similar to Aggressive Mode, and has the same security implications: A "
"passive attacker can sniff the negotiated Identity, and start brute forcing "
-"the PSK using the HASH payload.It is recommended to keep this option to no, "
-"unless you know exactly what the implications are and require compatibility "
-"to such devices (for example, some SonicWall boxes)."
+"the PSK using the HASH payload. It is recommended to keep this option to no, "
+"unless the exact implications are known and compatibility is required for "
+"such devices (for example, some SonicWall boxes)."
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:336
@@ -29083,11 +29362,11 @@ msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:379
msgid ""
-"instead of a break-before-make scheme. Make-before-break uses overlapping "
+"Instead of a break-before-make scheme. Make-before-break uses overlapping "
"IKE and CHILD_SA during reauthentication by first recreating all new SAs "
"before deleting the old ones. This behavior can be beneficial to avoid "
"connectivity gaps during reauthentication, but requires support for "
-"overlapping SAs by the peer"
+"overlapping SAs by the peer."
msgstr ""
#: src/usr/local/www/vpn_ipsec_settings.php:385
@@ -29120,11 +29399,11 @@ msgstr ""
msgid "The specified server address is equal to the LAN interface address."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:241
+#: src/usr/local/www/vpn_l2tp.php:238
msgid "Enable L2TP"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:274
+#: src/usr/local/www/vpn_l2tp.php:271
msgid ""
"Enter the IP address the L2TP server should give to clients for use as their "
"\"gateway\". <br />Typically this is set to an unused IP just outside of the "
@@ -29132,63 +29411,55 @@ msgid ""
"currently in use on this firewall."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:280
+#: src/usr/local/www/vpn_l2tp.php:277
msgid "Remote address range"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:283
-msgid "Specify the starting address for the client IP address subnet."
-msgstr ""
-
-#: src/usr/local/www/vpn_l2tp.php:287
+#: src/usr/local/www/vpn_l2tp.php:284
msgid "Number of L2TP users"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:294 src/usr/local/www/vpn_l2tp.php:351
+#: src/usr/local/www/vpn_l2tp.php:291 src/usr/local/www/vpn_l2tp.php:348
msgid "Secret"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:297
+#: src/usr/local/www/vpn_l2tp.php:294
msgid ""
"Specify optional secret shared between peers. Required on some devices/"
"setups."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:301
+#: src/usr/local/www/vpn_l2tp.php:298
msgid "Authentication type"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:308
+#: src/usr/local/www/vpn_l2tp.php:305
msgid "Specifies the protocol to use for authentication."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:312
-msgid "Primary L2TM DNS server"
+#: src/usr/local/www/vpn_l2tp.php:309
+msgid "Primary L2TP DNS server"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:319
-msgid "Secondary L2TM DNS server"
+#: src/usr/local/www/vpn_l2tp.php:316
+msgid "Secondary L2TP DNS server"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:334
+#: src/usr/local/www/vpn_l2tp.php:331
msgid ""
"When set, all users will be authenticated using the RADIUS server specified "
"below. The local user database will not be used."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:341
-msgid "Sends accounting packets to the RADIUS server."
-msgstr ""
-
-#: src/usr/local/www/vpn_l2tp.php:347
+#: src/usr/local/www/vpn_l2tp.php:344
msgid "Enter the IP address of the RADIUS server."
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:358
+#: src/usr/local/www/vpn_l2tp.php:355
msgid "RADIUS issued IPs"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:369
+#: src/usr/local/www/vpn_l2tp.php:366
msgid ""
"Don't forget to add a firewall rule to permit traffic from L2TP clients."
msgstr ""
@@ -29202,7 +29473,7 @@ msgid "The L2TP user list has been modified."
msgstr ""
#: src/usr/local/www/vpn_l2tp_users.php:113
-msgid "You must apply the changes in order for them to take effect"
+msgid "The changes must be applied for them to take effect"
msgstr ""
#: src/usr/local/www/vpn_l2tp_users.php:113
@@ -29222,12 +29493,11 @@ msgid "The IP address entered is not valid."
msgstr ""
#: src/usr/local/www/vpn_l2tp_users_edit.php:202
-msgid "If you want to change the users password, enter it here."
+msgid "To change the users password, enter it here."
msgstr ""
#: src/usr/local/www/vpn_l2tp_users_edit.php:211
-msgid ""
-"If you want the user to be assigned a specific IP address, enter it here."
+msgid "To assign the user a specific IP address, enter it here."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:123
@@ -29237,15 +29507,15 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:220
#: src/usr/local/www/vpn_openvpn_server.php:289
msgid ""
-"Protocol and IP address families do not match. You cannot select an IPv6 "
-"protocol and an IPv4 IP address."
+"Protocol and IP address families do not match. An IPv6 protocol and an IPv4 "
+"IP address cannot be selected."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:222
#: src/usr/local/www/vpn_openvpn_server.php:291
msgid ""
-"Protocol and IP address families do not match. You cannot select an IPv4 "
-"protocol and an IPv6 IP address."
+"Protocol and IP address families do not match. An IPv4 protocol and an IPv6 "
+"IP address cannot be selected."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:224
@@ -29304,21 +29574,21 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:426
#: src/usr/local/www/vpn_openvpn_client.php:449
-#: src/usr/local/www/vpn_openvpn_csc.php:327
+#: src/usr/local/www/vpn_openvpn_csc.php:331
#: src/usr/local/www/vpn_openvpn_server.php:615
msgid "Clients"
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:450
-#: src/usr/local/www/vpn_openvpn_csc.php:308
-#: src/usr/local/www/vpn_openvpn_csc.php:328
+#: src/usr/local/www/vpn_openvpn_csc.php:312
+#: src/usr/local/www/vpn_openvpn_csc.php:332
#: src/usr/local/www/vpn_openvpn_server.php:616
msgid "Client Specific Overrides"
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:465
msgid ""
-"Set this option to disable this client without removing it from the list"
+"Set this option to disable this client without removing it from the list."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:469
@@ -29338,8 +29608,8 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:501
msgid ""
-"Set this option if you would like to bind to a specific port. Leave this "
-"blank or enter 0 for a random dynamic port."
+"Set this option to bind to a specific port. Leave this blank or enter 0 for "
+"a random dynamic port."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:505
@@ -29403,7 +29673,7 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:648
#: src/usr/local/www/vpn_openvpn_server.php:724
#: src/usr/local/www/vpn_openvpn_server.php:805
-msgid "Paste your shared key here"
+msgid "Paste the shared key here"
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:626
@@ -29444,7 +29714,7 @@ msgid "Hardware Crypto"
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:682
-#: src/usr/local/www/vpn_openvpn_csc.php:386
+#: src/usr/local/www/vpn_openvpn_csc.php:390
#: src/usr/local/www/vpn_openvpn_server.php:845
msgid "Tunnel Settings"
msgstr ""
@@ -29457,7 +29727,7 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:689
msgid ""
"This is the IPv4 virtual network used for private communications between "
-"this client and the server expressed using CIDR (eg. 10.0.8.0/24). The "
+"this client and the server expressed using CIDR (e.g. 10.0.8.0/24). The "
"second network address will be assigned to the client virtual interface."
msgstr ""
@@ -29469,7 +29739,7 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:698
msgid ""
"This is the IPv6 virtual network used for private communications between "
-"this client and the server expressed using CIDR (eg. fe80::/64). The second "
+"this client and the server expressed using CIDR (e.g. fe80::/64). The second "
"network address will be assigned to the client virtual interface."
msgstr ""
@@ -29484,8 +29754,8 @@ msgid ""
"IPv4 networks that will be routed through the tunnel, so that a site-to-site "
"VPN can be established without manually changing the routing tables. "
"Expressed as a comma-separated list of one or more CIDR ranges. If this is a "
-"site-to-site VPN, enter the remote LAN/s here. You may leave this blank if "
-"you don't want a site-to-site VPN."
+"site-to-site VPN, enter the remote LAN/s here. May be left blank for non "
+"site-to-site VPN."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:713
@@ -29499,8 +29769,8 @@ msgid ""
"These are the IPv6 networks that will be routed through the tunnel, so that "
"a site-to-site VPN can be established without manually changing the routing "
"tables. Expressed as a comma-separated list of one or more IP/PREFIX. If "
-"this is a site-to-site VPN, enter the remote LAN/s here. You may leave this "
-"blank if you don't want a site-to-site VPN."
+"this is a site-to-site VPN, enter the remote LAN/s here. May be left blank "
+"for non site-to-site VPN."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:722
@@ -29515,6 +29785,7 @@ msgid ""
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:733
+#: src/usr/local/www/vpn_openvpn_server.php:955
msgid ""
"Compress tunnel packets using the LZO algorithm. Adaptive compression will "
"dynamically disable compression for a period of time if OpenVPN detects that "
@@ -29555,34 +29826,32 @@ msgid "Don't add/remove routes"
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:768
-msgid "Pass routes to --route-upscript using environmental variables"
+msgid "Pass routes to --route-upscript using environmental variables."
msgstr ""
#: src/usr/local/www/vpn_openvpn_client.php:779
-#: src/usr/local/www/vpn_openvpn_server.php:1160
msgid ""
-"Enter any additional options you would like to add to the OpenVPN server "
-"configuration here, separated by semicolon<br />EXAMPLE: push \"route "
-"10.0.0.0 255.255.255.0\""
+"Enter any additional options to add to the OpenVPN client configuration "
+"here, separated by semicolon."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_client.php:784
-#: src/usr/local/www/vpn_openvpn_server.php:1165
+#: src/usr/local/www/vpn_openvpn_client.php:783
+#: src/usr/local/www/vpn_openvpn_server.php:1170
msgid "Verbosity level"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_client.php:787
-#: src/usr/local/www/vpn_openvpn_server.php:1168
+#: src/usr/local/www/vpn_openvpn_client.php:786
+#: src/usr/local/www/vpn_openvpn_server.php:1173
msgid ""
"Each level shows all info from the previous levels. Level 3 is recommended "
-"if you want a good summary of what's happening without being swamped by "
-"output<br /><br />None: Only fatal errors<br />Default: Normal usage "
+"for a good summary of what's happening without being swamped by output.<br /"
+"><br />None: Only fatal errors<br />Default through 4: Normal usage "
"range<br />5: Output R and W characters to the console for each packet read "
-"and write, uppercase is used for TCP/UDP packets and lowercase is used for "
-"TUN/TAP packets<br />6: Debug info range"
+"and write. Uppercase is used for TCP/UDP packets and lowercase is used for "
+"TUN/TAP packets.<br />6-11: Debug info range"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_client.php:814
+#: src/usr/local/www/vpn_openvpn_client.php:813
msgid "OpenVPN Clients"
msgstr ""
@@ -29647,174 +29916,174 @@ msgid ""
"address"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:342
+#: src/usr/local/www/vpn_openvpn_csc.php:346
#, php-format
msgid "OpenVPN Server %d: %s"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:353
+#: src/usr/local/www/vpn_openvpn_csc.php:357
msgid ""
"Select the servers for which the override will apply. Selecting no servers "
"will also apply the override to all servers."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:361
+#: src/usr/local/www/vpn_openvpn_csc.php:365
msgid ""
"Set this option to disable this client-specific override without removing it "
"from the list."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:365
+#: src/usr/local/www/vpn_openvpn_csc.php:369
msgid "Common name"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:368
+#: src/usr/local/www/vpn_openvpn_csc.php:372
msgid "Enter the client's X.509 common name."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:379
+#: src/usr/local/www/vpn_openvpn_csc.php:383
msgid "Connection blocking"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:382
+#: src/usr/local/www/vpn_openvpn_csc.php:386
msgid ""
"Don't use this option to permanently disable a client due to a compromised "
"key or password. Use a CRL (certificate revocation list) instead. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:390
-#: src/usr/local/www/vpn_openvpn_server.php:1202
+#: src/usr/local/www/vpn_openvpn_csc.php:394
+#: src/usr/local/www/vpn_openvpn_server.php:1207
msgid "Tunnel Network"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:393
+#: src/usr/local/www/vpn_openvpn_csc.php:397
msgid ""
"This is the virtual network used for private communications between this "
-"client and the server expressed using CIDR (eg. 10.0.8.0/24). The first "
+"client and the server expressed using CIDR (e.g. 10.0.8.0/24). The first "
"network address is assumed to be the server address and the second network "
"address will be assigned to the client virtual interface. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:398
+#: src/usr/local/www/vpn_openvpn_csc.php:402
msgid "IPv4 Local Network/s"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:401
+#: src/usr/local/www/vpn_openvpn_csc.php:405
msgid ""
"These are the IPv4 networks that will be accessible from this particular "
"client. Expressed as a comma-separated list of one or more CIDR ranges. <br /"
-">NOTE: You do not need to specify networks here if they have already been "
+">NOTE: Networks do not need to be specified here if they have already been "
"defined on the main server configuration."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:406
+#: src/usr/local/www/vpn_openvpn_csc.php:410
msgid "IPv6 Local Network/s"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:409
+#: src/usr/local/www/vpn_openvpn_csc.php:413
msgid ""
"These are the IPv4 networks that will be accessible from this particular "
"client. Expressed as a comma-separated list of one or more IP/PREFIX "
-"networks.<br />NOTE: You do not need to specify networks here if they have "
+"networks.<br />NOTE: Networks do not need to be specified here if they have "
"already been defined on the main server configuration."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:414
+#: src/usr/local/www/vpn_openvpn_csc.php:418
msgid "IPv4 Remote Network/s"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:417
+#: src/usr/local/www/vpn_openvpn_csc.php:421
msgid ""
"These are the IPv4 networks that will be routed to this client specifically "
"using iroute, so that a site-to-site VPN can be established. Expressed as a "
-"comma-separated list of one or more CIDR ranges. You may leave this blank if "
-"there are no client-side networks to be routed.<br />NOTE: Remember to add "
-"these subnets to the IPv4 Remote Networks list on the corresponding OpenVPN "
-"server settings."
+"comma-separated list of one or more CIDR ranges. May be left blank if there "
+"are no client-side networks to be routed.<br />NOTE: Remember to add these "
+"subnets to the IPv4 Remote Networks list on the corresponding OpenVPN server "
+"settings."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:423
+#: src/usr/local/www/vpn_openvpn_csc.php:427
msgid "IPv6 Remote Network/s"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:426
+#: src/usr/local/www/vpn_openvpn_csc.php:430
msgid ""
"These are the IPv4 networks that will be routed to this client specifically "
"using iroute, so that a site-to-site VPN can be established. Expressed as a "
-"comma-separated list of one or more IP/PREFIX networks. You may leave this "
-"blank if there are no client-side networks to be routed.<br />NOTE: Remember "
-"to add these subnets to the IPv6 Remote Networks list on the corresponding "
-"OpenVPN server settings."
+"comma-separated list of one or more IP/PREFIX networks. May be left blank if "
+"there are no client-side networks to be routed.<br />NOTE: Remember to add "
+"these subnets to the IPv6 Remote Networks list on the corresponding OpenVPN "
+"server settings."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:432
+#: src/usr/local/www/vpn_openvpn_csc.php:436
#: src/usr/local/www/vpn_openvpn_server.php:901
msgid "Redirect Gateway"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:439
+#: src/usr/local/www/vpn_openvpn_csc.php:443
#: src/usr/local/www/vpn_openvpn_server.php:989
msgid "Client Settings"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:444
+#: src/usr/local/www/vpn_openvpn_csc.php:448
msgid "Server Definitions"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:456
-#: src/usr/local/www/vpn_openvpn_csc.php:461
+#: src/usr/local/www/vpn_openvpn_csc.php:460
+#: src/usr/local/www/vpn_openvpn_csc.php:465
msgid "DNS Domain"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:505
+#: src/usr/local/www/vpn_openvpn_csc.php:509
msgid "Server 4"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:540
+#: src/usr/local/www/vpn_openvpn_csc.php:544
msgid "NetBIOS Options"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:543
+#: src/usr/local/www/vpn_openvpn_csc.php:547
msgid ""
"If this option is not set, all NetBIOS-over-TCP/IP options (including WINS) "
"will be disabled. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:547
-#: src/usr/local/www/vpn_openvpn_server.php:1101
+#: src/usr/local/www/vpn_openvpn_csc.php:551
+#: src/usr/local/www/vpn_openvpn_server.php:1106
msgid "Node Type"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:550
+#: src/usr/local/www/vpn_openvpn_csc.php:554
msgid ""
"Possible options: b-node (broadcasts), p-node (point-to-point name queries "
"to a WINS server), m-node (broadcast then query name server), and h-node "
"(query name server, then broadcast). "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:558
+#: src/usr/local/www/vpn_openvpn_csc.php:562
msgid ""
"A NetBIOS Scope ID provides an extended naming service for NetBIOS over TCP/"
"IP. The NetBIOS scope ID isolates NetBIOS traffic on a single network to "
"only those nodes with the same NetBIOS scope ID. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:592
+#: src/usr/local/www/vpn_openvpn_csc.php:596
msgid ""
-"Enter any additional options you would like to add for this client specific "
-"override, separated by a semicolon. <br />EXAMPLE: push \"route 10.0.0.0 "
+"Enter any additional options to add for this client specific override, "
+"separated by a semicolon. <br />EXAMPLE: push \"route 10.0.0.0 "
"255.255.255.0\"; "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:664
+#: src/usr/local/www/vpn_openvpn_csc.php:668
msgid "CSC Overrides"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:692
+#: src/usr/local/www/vpn_openvpn_csc.php:696
msgid "Edit CSC Override"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:693
+#: src/usr/local/www/vpn_openvpn_csc.php:697
msgid "Delete CSC Override"
msgstr ""
@@ -29824,7 +30093,7 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:305
msgid ""
-"You must select a Backend for Authentication if the server mode requires "
+"A Backend for Authentication must be selected if the server mode requires "
"User Auth."
msgstr ""
@@ -29863,7 +30132,7 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:633
msgid ""
-"Set this option to disable this server without removing it from the list"
+"Set this option to disable this server without removing it from the list."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:658
@@ -29871,14 +30140,14 @@ msgid "Backend for authentication"
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:766
-#: src/usr/local/www/vpn_openvpn_server.php:1589
+#: src/usr/local/www/vpn_openvpn_server.php:1607
msgid ""
"Warning: The selected server certificate was not created as an SSL Server "
"certificate and may not work as expected"
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:770
-msgid "No Certificates defined. You may create one here: "
+msgid "No Certificates defined. One may be created here: "
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:770
@@ -29921,19 +30190,19 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:852
msgid ""
"This is the IPv4 virtual network used for private communications between "
-"this server and client hosts expressed using CIDR (eg. 10.0.8.0/24). The "
+"this server and client hosts expressed using CIDR (e.g. 10.0.8.0/24). The "
"first network address will be assigned to the server virtual interface. The "
-"remaining network addresses can optionally be assigned to connecting "
-"clients. (see Address Pool)"
+"remaining network addresses can optionally be assigned to connecting clients "
+"(see Address Pool)."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:862
msgid ""
"This is the IPv6 virtual network used for private communications between "
-"this server and client hosts expressed using CIDR (eg. fe80::/64). The first "
-"network address will be assigned to the server virtual interface. The "
-"remaining network addresses can optionally be assigned to connecting "
-"clients. (see Address Pool)"
+"this server and client hosts expressed using CIDR (e.g. fe80::/64). The "
+"first network address will be assigned to the server virtual interface. The "
+"remaining network addresses can optionally be assigned to connecting clients "
+"(see Address Pool)."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:869
@@ -29946,8 +30215,8 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:879
msgid ""
-"The interface to which this tap instance will be bridged. This is not done "
-"automatically. You must assign this interface and create the bridge "
+"The interface to which this TAP instance will be bridged. This is not done "
+"automatically. This interface must be assigned and the bridge created "
"separately. This setting controls which existing IP address and subnet mask "
"are used by OpenVPN for the bridge. Setting this to \"none\" will cause the "
"Server Bridge DHCP settings below to be ignored."
@@ -29959,8 +30228,8 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:888
msgid ""
-"When using tap mode as a multi-point server, you may optionally supply a "
-"DHCP range to use on the interface to which this tap instance is bridged. If "
+"When using TAP mode as a multi-point server, a DHCP range may optionally be "
+"supplied to use on the interface to which this TAP instance is bridged. If "
"these settings are left blank, DHCP will be passed through to the LAN, and "
"the interface setting above will be ignored."
msgstr ""
@@ -29976,9 +30245,9 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:911
msgid ""
"IPv4 networks that will be accessible from the remote endpoint. Expressed as "
-"a comma-separated list of one or more CIDR ranges. You may leave this blank "
-"if you don't want to add a route to the local network through this tunnel on "
-"the remote machine. This is generally set to your LAN network."
+"a comma-separated list of one or more CIDR ranges. This may be left blank if "
+"not adding a route to the local network through this tunnel on the remote "
+"machine. This is generally set to the LAN network."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:918
@@ -29988,9 +30257,9 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:921
msgid ""
"IPv6 networks that will be accessible from the remote endpoint. Expressed as "
-"a comma-separated list of one or more IP/PREFIX. You may leave this blank if "
-"you don't want to add a route to the local network through this tunnel on "
-"the remote machine. This is generally set to your LAN network."
+"a comma-separated list of one or more IP/PREFIX. This may be left blank if "
+"not adding a route to the local network through this tunnel on the remote "
+"machine. This is generally set to the LAN network."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:945
@@ -30003,13 +30272,6 @@ msgid ""
"this server."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:955
-msgid ""
-"Compress tunnel packets using the LZO algorithm. Adaptive compression will "
-"dynamically disable compression for a period of time if OpenVPN detects that "
-"the data in the packets is not being compressed efficiently\""
-msgstr ""
-
#: src/usr/local/www/vpn_openvpn_server.php:968
msgid "Inter-client communication"
msgstr ""
@@ -30034,106 +30296,121 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:1011
msgid ""
"Specifies the method used to supply a virtual adapter IP address to clients "
-"when using tun mode on IPv4.\").<br />Some clients may require this be set "
-"to \"subnet\" even for IPv6, such as OpenVPN Connect (iOS/Android). Older "
+"when using TUN mode on IPv4.<br />Some clients may require this be set to "
+"\"subnet\" even for IPv6, such as OpenVPN Connect (iOS/Android). Older "
"versions of OpenVPN (before 2.0.9) or clients such as Yealink phones may "
"require \"net30\"."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1031
+#: src/usr/local/www/vpn_openvpn_server.php:1017
+msgid "Advanced Client Settings"
+msgstr ""
+
+#: src/usr/local/www/vpn_openvpn_server.php:1036
msgid "DNS Server enable"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1038
+#: src/usr/local/www/vpn_openvpn_server.php:1043
msgid "DNS Server 1"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1045
+#: src/usr/local/www/vpn_openvpn_server.php:1050
msgid "DNS Server 2"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1052
+#: src/usr/local/www/vpn_openvpn_server.php:1057
msgid "DNS Server 3"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1059
+#: src/usr/local/www/vpn_openvpn_server.php:1064
msgid "DNS Server 4"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1066
+#: src/usr/local/www/vpn_openvpn_server.php:1071
msgid "Force DNS cache update"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1069
+#: src/usr/local/www/vpn_openvpn_server.php:1074
msgid "This is known to kick Windows into recognizing pushed DNS servers."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1073
+#: src/usr/local/www/vpn_openvpn_server.php:1078
msgid "NTP Server enable"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1094
+#: src/usr/local/www/vpn_openvpn_server.php:1099
msgid "NetBIOS enable"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1097
+#: src/usr/local/www/vpn_openvpn_server.php:1102
msgid ""
"If this option is not set, all NetBIOS-over-TCP/IP options (including WINS) "
-"will be disabled"
+"will be disabled."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1104
+#: src/usr/local/www/vpn_openvpn_server.php:1109
msgid ""
"Possible options: b-node (broadcasts), p-node (point-to-point name queries "
"to a WINS server), m-node (broadcast then query name server), and h-node "
"(query name server, then broadcast)"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1109
+#: src/usr/local/www/vpn_openvpn_server.php:1114
msgid "Scope ID"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1112
+#: src/usr/local/www/vpn_openvpn_server.php:1117
msgid ""
"A NetBIOS Scope ID provides an extended naming service for NetBIOS over TCP/"
"IP. The NetBIOS scope ID isolates NetBIOS traffic on a single network to "
"only those nodes with the same NetBIOS scope ID"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1118
+#: src/usr/local/www/vpn_openvpn_server.php:1123
msgid "WINS server enable"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1125
+#: src/usr/local/www/vpn_openvpn_server.php:1130
msgid "WINS Server 1"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1132
+#: src/usr/local/www/vpn_openvpn_server.php:1137
msgid "WINS Server 2"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1139
+#: src/usr/local/www/vpn_openvpn_server.php:1144
msgid "Enable custom port "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1146
+#: src/usr/local/www/vpn_openvpn_server.php:1151
msgid "Management port"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1149
+#: src/usr/local/www/vpn_openvpn_server.php:1154
msgid ""
"The default port is 166. Specify a different port if the client machines "
"need to select from multiple OpenVPN links."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1196
-msgid "OpenVPN Servers"
+#: src/usr/local/www/vpn_openvpn_server.php:1165
+msgid ""
+"Enter any additional options to add to the OpenVPN server configuration "
+"here, separated by semicolon.<br />EXAMPLE: push \"route 10.0.0.0 "
+"255.255.255.0\""
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:1201
+msgid "OpenVPN Servers"
+msgstr ""
+
+#: src/usr/local/www/vpn_openvpn_server.php:1206
msgid "Protocol / Port"
msgstr ""
+#: src/usr/local/www/widgets/include/captiveportal.inc:2
+msgid "Captive Portal Status"
+msgstr ""
+
#: src/usr/local/www/widgets/include/carp_status.inc:4
msgid "CARP Status"
msgstr ""
@@ -30174,15 +30451,15 @@ msgstr ""
msgid "Wake-on-Lan"
msgstr ""
-#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:150
+#: src/usr/local/www/widgets/widgets/captive_portal_status.widget.php:151
msgid "delete"
msgstr ""
-#: src/usr/local/www/widgets/widgets/carp_status.widget.php:117
+#: src/usr/local/www/widgets/widgets/carp_status.widget.php:125
msgid "No CARP Interfaces Defined."
msgstr ""
-#: src/usr/local/www/widgets/widgets/carp_status.widget.php:117
+#: src/usr/local/www/widgets/widgets/carp_status.widget.php:125
#, php-format
msgid "Click %1$shere%2$s to configure CARP."
msgstr ""
@@ -30199,23 +30476,24 @@ msgstr ""
msgid "Updated gateways widget settings via dashboard."
msgstr ""
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:133
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:136
msgid "Gateway IP"
msgstr ""
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:137
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:145
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:147
msgid "Save Settings"
msgstr ""
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:241
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:253
msgid "Packetloss"
msgstr ""
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:244
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:256
msgid "Latency"
msgstr ""
-#: src/usr/local/www/widgets/widgets/gateways.widget.php:248
+#: src/usr/local/www/widgets/widgets/gateways.widget.php:260
msgid "Online <br/>(unmonitored)"
msgstr ""
@@ -30225,7 +30503,7 @@ msgstr ""
#: src/usr/local/www/widgets/widgets/installed_packages.widget.php:76
msgid ""
-"You can install packages <a href=\"pkg_mgr.php\" class=\"alert-link\">here</"
+"Packages can be installed <a href=\"pkg_mgr.php\" class=\"alert-link\">here</"
"a>."
msgstr ""
@@ -30302,7 +30580,7 @@ msgid "There are no configured IPsec Tunnels"
msgstr ""
#: src/usr/local/www/widgets/widgets/ipsec.widget.php:264
-msgid "You can configure your IPsec <a href=\"vpn_ipsec.php\">here</a>."
+msgid "IPsec can be configured <a href=\"vpn_ipsec.php\">here</a>."
msgstr ""
#: src/usr/local/www/widgets/widgets/log.widget.php:103
@@ -30389,16 +30667,6 @@ msgid "Remote/Virtual IP"
msgstr ""
#: src/usr/local/www/widgets/widgets/openvpn.widget.php:259
-msgid "NOTE"
-msgstr ""
-
-#: src/usr/local/www/widgets/widgets/openvpn.widget.php:259
-msgid ""
-"You need to bind each OpenVPN client to enable its management daemon: use "
-"'Local port' setting in the OpenVPN client screen"
-msgstr ""
-
-#: src/usr/local/www/widgets/widgets/openvpn.widget.php:263
msgid "No OpenVPN instances defined"
msgstr ""
@@ -30430,143 +30698,143 @@ msgstr ""
msgid "Saved Service Status Filter via Dashboard"
msgstr ""
-#: src/usr/local/www/widgets/widgets/services_status.widget.php:137
+#: src/usr/local/www/widgets/widgets/services_status.widget.php:140
msgid "No services found"
msgstr ""
-#: src/usr/local/www/widgets/widgets/services_status.widget.php:148
+#: src/usr/local/www/widgets/widgets/services_status.widget.php:151
msgid "Hidden services"
msgstr ""
-#: src/usr/local/www/widgets/widgets/smart_status.widget.php:70
+#: src/usr/local/www/widgets/widgets/smart_status.widget.php:71
msgid "Drive"
msgstr ""
-#: src/usr/local/www/widgets/widgets/smart_status.widget.php:71
+#: src/usr/local/www/widgets/widgets/smart_status.widget.php:72
msgid "Ident"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:69
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:73
msgid "<i>Unable to check for updates</i>"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:76
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:80
msgid "<i>Error in version information</i>"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:87
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:91
msgid "Version "
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:88
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:92
msgid "is available."
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:94
-msgid "You are on the latest version."
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:98
+msgid "The system is on the latest version."
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:97
-msgid "You are on a later version than<br />the official release."
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:101
+msgid "The system is on a later version than<br />the official release."
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:100
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:104
msgid "<i>Error comparing installed version<br />with latest available</i>"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:122
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:126
msgid "built on"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:129
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:133
msgid "Obtaining update status "
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:135
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:139
msgid "Platform"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:153
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:157
msgid "NanoBSD Boot Slice"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:157
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:161
msgid "Next Boot"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:164
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:168
msgid "CPU Type"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:171
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:175
msgid "CPUs"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:178
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:182
msgid "Hardware crypto"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:183
-msgid "Uptime"
-msgstr ""
-
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:187
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:191
msgid "Current date/time"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:191
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:195
msgid "DNS server(s)"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:205
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:209
msgid "Last config change"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:210
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:214
msgid "State table size"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:220
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:224
msgid "Show states"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:224
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:228
msgid "MBUF Usage"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:239
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:243
msgid "Temperature"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:248
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:255
msgid "Load average"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:250
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:257
msgid "Last 1, 5 and 15 minutes"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:254
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:261
msgid "CPU usage"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:260
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:267
msgid "(Updating in 10 seconds)"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:264
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:271
msgid "Memory usage"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:277
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:284
msgid "SWAP usage"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:289
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:298
msgid "Disk usage"
msgstr ""
-#: src/usr/local/www/widgets/widgets/system_information.widget.php:295
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:304
+msgid " of "
+msgstr ""
+
+#: src/usr/local/www/widgets/widgets/system_information.widget.php:304
msgid "in RAM"
msgstr ""
@@ -30614,11 +30882,11 @@ msgstr ""
msgid "Core Critical:"
msgstr ""
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:276
-msgid "* You can configure a proper Thermal Sensor / Module under"
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:279
+msgid "* A proper Thermal Sensor / Module can be configured under"
msgstr ""
-#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:277
+#: src/usr/local/www/widgets/widgets/thermal_sensors.widget.php:280
msgid "section"
msgstr ""
@@ -30654,15 +30922,15 @@ msgstr ""
msgid "Wake"
msgstr ""
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:101
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:105
msgid "Wake up!"
msgstr ""
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:105
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:111
msgid "No saved WoL addresses"
msgstr ""
-#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:110
+#: src/usr/local/www/widgets/widgets/wake_on_lan.widget.php:117
msgid "DHCP Leases Status"
msgstr ""
@@ -30697,7 +30965,7 @@ msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:83
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:86
-msgid "You need to specify the number of connections."
+msgid "The number of connections must be specified."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:88
@@ -30708,22 +30976,23 @@ msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:113
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:132
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:139
-msgid "You have less interfaces than number of connections!"
+msgid "There are less interfaces than number of connections!"
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:325
-msgid "You cannot specify bandwidth smaller than 1!"
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:356
+msgid "The specified bandwidth cannot be less than 1."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:336
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:369
-msgid "You cannot select the same interface for local and outside."
+msgid "The same interface cannot be selected for local and outside."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:515
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:619
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:568
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:685
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:686
msgid ""
"Address must be a valid IP address or Firewall Alias. Please correct this "
"value to continue."
@@ -30731,72 +31000,68 @@ msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:607
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:636
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:673
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:700
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:674
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:701
msgid "Only percentage bandwidth specification is allowed."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:790
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:855
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:856
msgid ""
"Custom Bandwidths are greater than 30%. Please lower them for the wizard to "
"continue."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1174
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1253
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1255
msgid ""
"Custom Bandwidths are greater than 40%. Please lower them for the wizard to "
"continue."
msgstr ""
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1476
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1561
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1479
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1566
msgid "Penalty Box"
msgstr ""
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1483
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1503
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1517
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1534
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1553
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1577
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1656
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1568
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1589
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1603
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1620
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1639
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1663
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1690
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1743
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1486
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1506
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1520
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1537
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1556
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1580
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1659
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1573
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1594
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1608
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1625
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1644
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1668
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1695
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1748
msgid "Traffic Shaper Wizard"
msgstr ""
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1495
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1581
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1498
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1586
msgid "Connections From Upstream SIP Server"
msgstr ""
-#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1509
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1595
+#: src/usr/local/www/wizards/traffic_shaper_wizard_dedicated.inc:1512
+#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:1600
msgid "Connections To Upstream SIP Server"
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:97
-msgid "You need to specify the number of LAN type interfaces."
+msgid "The number of LAN type interfaces must be specified."
msgstr ""
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:102
msgid "The number of LAN type interfaces should be greater than 1."
msgstr ""
-#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:356
-msgid "You cannot specify 0 bandwidth!"
-msgstr ""
-
#: src/usr/local/www/wizards/traffic_shaper_wizard_multi_all.inc:378
-msgid "You cannot select the same interface twice on local interfaces."
+msgid "The same interface cannot be selected twice on local interfaces."
msgstr ""
#: src/usr/local/www/xmlrpc.php:93
@@ -30875,31 +31140,31 @@ msgstr ""
msgid "Basic XMLRPC wrapper for rc.reboot."
msgstr ""
-#: src/etc/inc/shaper.inc:783 src/etc/inc/shaper.inc:1369
+#: src/etc/inc/shaper.inc:832 src/etc/inc/shaper.inc:1440
msgid "Enable/disable discipline and its children"
msgstr ""
-#: src/etc/inc/shaper.inc:2283
+#: src/etc/inc/shaper.inc:2326
msgid "Upper Limit"
msgstr ""
-#: src/etc/inc/shaper.inc:2316
+#: src/etc/inc/shaper.inc:2359
msgid "Real Time"
msgstr ""
-#: src/etc/inc/shaper.inc:2348
+#: src/etc/inc/shaper.inc:2391
msgid "Link Share"
msgstr ""
-#: src/etc/inc/shaper.inc:2839
+#: src/etc/inc/shaper.inc:2836
msgid "Borrow from other queues when available"
msgstr ""
-#: src/etc/inc/shaper.inc:3884
+#: src/etc/inc/shaper.inc:3852
msgid "Enable limiter and its children"
msgstr ""
-#: src/etc/inc/shaper.inc:4206
+#: src/etc/inc/shaper.inc:4174
msgid "Enable this queue"
msgstr ""
@@ -30917,25 +31182,21 @@ msgstr ""
msgid "Encrypt this configuration file."
msgstr ""
-#: src/usr/local/www/diag_backup.php:697
+#: src/usr/local/www/diag_backup.php:699
msgid "Configuration file is encrypted."
msgstr ""
-#: src/usr/local/www/diag_nanobsd.php:199
-msgid "Keep media mounted read/write at all times. "
-msgstr ""
-
-#: src/usr/local/www/diag_nanobsd.php:228
+#: src/usr/local/www/diag_nanobsd.php:255
msgid ""
"These options have been relocated to the <a href=\"system_advanced_misc.php"
"\">System > Advanced, Miscellaneous</a> tab."
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:309
-msgid "Packet capture will be performed using promiscuous mode"
+#: src/usr/local/www/diag_packet_capture.php:321
+msgid "Enable promiscuous mode"
msgstr ""
-#: src/usr/local/www/diag_packet_capture.php:381
+#: src/usr/local/www/diag_packet_capture.php:394
msgid "Do reverse DNS lookup"
msgstr ""
@@ -30943,43 +31204,43 @@ msgstr ""
msgid "Automatically refresh the output below"
msgstr ""
-#: src/usr/local/www/diag_resetstate.php:136
+#: src/usr/local/www/diag_resetstate.php:129
msgid "Reset the firewall state table"
msgstr ""
-#: src/usr/local/www/diag_resetstate.php:144
+#: src/usr/local/www/diag_resetstate.php:137
msgid "Reset firewall source tracking"
msgstr ""
-#: src/usr/local/www/diag_smart.php:322
+#: src/usr/local/www/diag_smart.php:345
msgid "Info"
msgstr ""
-#: src/usr/local/www/diag_smart.php:330
+#: src/usr/local/www/diag_smart.php:353
msgid "Health"
msgstr ""
-#: src/usr/local/www/diag_smart.php:338
+#: src/usr/local/www/diag_smart.php:361
msgid "S.M.A.R.T. Capabilities"
msgstr ""
-#: src/usr/local/www/diag_smart.php:346
+#: src/usr/local/www/diag_smart.php:369
msgid "Attributes"
msgstr ""
-#: src/usr/local/www/diag_smart.php:408
+#: src/usr/local/www/diag_smart.php:433
msgid "Short"
msgstr ""
-#: src/usr/local/www/diag_smart.php:416
+#: src/usr/local/www/diag_smart.php:441
msgid "Long"
msgstr ""
-#: src/usr/local/www/diag_smart.php:424
+#: src/usr/local/www/diag_smart.php:449
msgid "Conveyance"
msgstr ""
-#: src/usr/local/www/diag_smart.php:479
+#: src/usr/local/www/diag_smart.php:506
msgid "Self-test"
msgstr ""
@@ -30987,37 +31248,37 @@ msgstr ""
msgid "Show remote text"
msgstr ""
-#: src/usr/local/www/firewall_aliases_edit.php:700
+#: src/usr/local/www/firewall_aliases_edit.php:697
msgid "<span class=\"helptext\">"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:405
-msgid "This rule will be excluded from the NAT"
+#: src/usr/local/www/firewall_nat_1to1_edit.php:402
+#: src/usr/local/www/firewall_nat_edit.php:668
+#: src/usr/local/www/firewall_nat_npt_edit.php:226
+#: src/usr/local/www/firewall_nat_out_edit.php:452
+#: src/usr/local/www/firewall_rules_edit.php:1153
+msgid "Disable this rule"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:412
-#: src/usr/local/www/firewall_nat_edit.php:677
-msgid "Disable redirection for traffic matching this rule"
+#: src/usr/local/www/firewall_nat_1to1_edit.php:409
+msgid "Do not perform binat for the specified address"
msgstr ""
-#: src/usr/local/www/firewall_nat_1to1_edit.php:463
-#: src/usr/local/www/firewall_nat_1to1_edit.php:490
+#: src/usr/local/www/firewall_nat_1to1_edit.php:460
+#: src/usr/local/www/firewall_nat_1to1_edit.php:487
#: src/usr/local/www/firewall_nat_npt_edit.php:241
#: src/usr/local/www/firewall_nat_npt_edit.php:255
#: src/usr/local/www/firewall_nat_out_edit.php:558
msgid "Not"
msgstr ""
-#: src/usr/local/www/firewall_nat_edit.php:670
-#: src/usr/local/www/firewall_nat_npt_edit.php:226
-#: src/usr/local/www/firewall_nat_out_edit.php:452
-#: src/usr/local/www/firewall_rules_edit.php:1137
-msgid "Disable this rule"
+#: src/usr/local/www/firewall_nat_edit.php:675
+msgid "Disable redirection for traffic matching this rule"
msgstr ""
#: src/usr/local/www/firewall_nat_edit.php:743
#: src/usr/local/www/firewall_nat_edit.php:810
-#: src/usr/local/www/firewall_rules_edit.php:1284
+#: src/usr/local/www/firewall_rules_edit.php:1300
msgid "Invert match."
msgstr ""
@@ -31031,401 +31292,384 @@ msgid ""
"stop processing Outbound NAT rules"
msgstr ""
-#: src/usr/local/www/firewall_nat_out_edit.php:621
+#: src/usr/local/www/firewall_nat_out_edit.php:620
msgid "Static port"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1146
+#: src/usr/local/www/firewall_rules_edit.php:1162
msgid "Apply the action immediately on match."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1164
+#: src/usr/local/www/firewall_rules_edit.php:1180
msgid ""
-"<span class=\"help-block\">This is associated with a NAT rule.<br/>You "
-"cannot edit the interface, protocol, source, or destination of associated "
-"filter rules."
+"<span class=\"help-block\">This is associated with a NAT rule.<br/>Editing "
+"the interface, protocol, source, or destination of associated filter rules "
+"is not permitted."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1412
+#: src/usr/local/www/firewall_rules_edit.php:1430
msgid "Log packets that are handled by this rule"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1464
+#: src/usr/local/www/firewall_rules_edit.php:1480
msgid ""
"Allow packets with IP options to pass. Otherwise they are blocked by "
"default. This is usually only seen with multicast traffic."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1472
+#: src/usr/local/www/firewall_rules_edit.php:1488
msgid "Disable auto generated reply-to for this rule."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1550
+#: src/usr/local/www/firewall_rules_edit.php:1566
msgid "Prevent states created by this rule to be sync'ed over pfsync."
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1570
+#: src/usr/local/www/firewall_rules_edit.php:1586
msgid ""
"Prevent the rule on Master from automatically syncing to other CARP members"
msgstr ""
-#: src/usr/local/www/firewall_rules_edit.php:1704
-#: src/usr/local/www/firewall_rules_edit.php:1711
+#: src/usr/local/www/firewall_rules_edit.php:1720
+#: src/usr/local/www/firewall_rules_edit.php:1727
msgid "<b>"
msgstr ""
-#: src/usr/local/www/firewall_virtual_ip_edit.php:416
+#: src/usr/local/www/firewall_virtual_ip_edit.php:425
msgid ""
"Disable expansion of this entry into IPs on NAT lists (e.g. 192.168.1.0/24 "
"expands to 256 entries.) "
msgstr ""
-#: src/usr/local/www/interfaces.php:1715
+#: src/usr/local/www/interfaces.php:1721
msgid "Enable interface"
msgstr ""
-#: src/usr/local/www/interfaces.php:1857 src/usr/local/www/interfaces.php:3169
+#: src/usr/local/www/interfaces.php:1869 src/usr/local/www/interfaces.php:3176
msgid "Default gateway"
msgstr ""
-#: src/usr/local/www/interfaces.php:1918 src/usr/local/www/interfaces.php:2101
+#: src/usr/local/www/interfaces.php:1934 src/usr/local/www/interfaces.php:2117
msgid "Configuration Override"
msgstr ""
-#: src/usr/local/www/interfaces.php:1999
+#: src/usr/local/www/interfaces.php:2015
msgid "FreeBSD default"
msgstr ""
-#: src/usr/local/www/interfaces.php:2015
+#: src/usr/local/www/interfaces.php:2031
msgid "pfSense Default"
msgstr ""
-#: src/usr/local/www/interfaces.php:2023
+#: src/usr/local/www/interfaces.php:2039
msgid "Saved Cfg"
msgstr ""
-#: src/usr/local/www/interfaces.php:2110
+#: src/usr/local/www/interfaces.php:2126
msgid "Request a IPv6 prefix/information through the IPv4 connectivity link"
msgstr ""
-#: src/usr/local/www/interfaces.php:2117
+#: src/usr/local/www/interfaces.php:2133
msgid "Only request an IPv6 prefix, do not request an IPv6 address"
msgstr ""
-#: src/usr/local/www/interfaces.php:2131
+#: src/usr/local/www/interfaces.php:2147
msgid ""
"Send an IPv6 prefix hint to indicate the desired prefix size for delegation"
msgstr ""
-#: src/usr/local/www/interfaces.php:2138
+#: src/usr/local/www/interfaces.php:2154
msgid "Start DHCP6 client in debug mode"
msgstr ""
-#: src/usr/local/www/interfaces.php:2162
+#: src/usr/local/www/interfaces.php:2178
msgid "Exchange Information Only"
msgstr ""
-#: src/usr/local/www/interfaces.php:2198
+#: src/usr/local/www/interfaces.php:2214
msgid "Non-Temporary Address Allocation"
msgstr ""
-#: src/usr/local/www/interfaces.php:2238
+#: src/usr/local/www/interfaces.php:2254
msgid "Prefix Delegation "
msgstr ""
-#: src/usr/local/www/interfaces.php:2579 src/usr/local/www/interfaces.php:2715
+#: src/usr/local/www/interfaces.php:2596 src/usr/local/www/interfaces.php:2727
msgid "Enable Dial-On-Demand mode "
msgstr ""
-#: src/usr/local/www/interfaces.php:2637
+#: src/usr/local/www/interfaces.php:2654
msgid "Reset at each month (\"0 0 1 * *\")"
msgstr ""
-#: src/usr/local/www/interfaces.php:2645
+#: src/usr/local/www/interfaces.php:2662
msgid "Reset at each week (\"0 0 * * 0\")"
msgstr ""
-#: src/usr/local/www/interfaces.php:2653
+#: src/usr/local/www/interfaces.php:2670
msgid "Reset at each day (\"0 0 * * *\")"
msgstr ""
-#: src/usr/local/www/interfaces.php:2661
+#: src/usr/local/www/interfaces.php:2678
msgid "Reset at each hour (\"0 * * * *\")"
msgstr ""
-#: src/usr/local/www/interfaces.php:2671 src/usr/local/www/interfaces.php:2739
-msgid "<a href=\"/interfaces_ppps_edit.php?id="
-msgstr ""
-
-#: src/usr/local/www/interfaces.php:2676
-msgid ""
-"<a href=\"/interfaces_ppps_edit.php\" class=\"navlnk\">Click here for "
-"additional PPPoE configuration options and for MLPPP configuration.</a>"
-msgstr ""
-
-#: src/usr/local/www/interfaces.php:2744
-msgid ""
-"<a href=\"/interfaces_ppps_edit.php\" class=\"navlnk\">Click here for "
-"additional PPTP and L2TP configuration options.</a>"
-msgstr ""
-
-#: src/usr/local/www/interfaces.php:2758
+#: src/usr/local/www/interfaces.php:2765
msgid ""
"Preserve common wireless configuration through interface deletions and "
"reassignments."
msgstr ""
-#: src/usr/local/www/interfaces.php:2958
+#: src/usr/local/www/interfaces.php:2965
msgid ""
"Allow packets to pass between wireless clients directly when operating as an "
"access point"
msgstr ""
-#: src/usr/local/www/interfaces.php:2966
+#: src/usr/local/www/interfaces.php:2973
msgid "Force the card to use WME (wireless QoS)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2974
+#: src/usr/local/www/interfaces.php:2981
msgid ""
"Disable broadcasting of the SSID for this network (This may cause problems "
"for some clients, and the SSID may still be discovered by other means.)"
msgstr ""
-#: src/usr/local/www/interfaces.php:2987
+#: src/usr/local/www/interfaces.php:2994
msgid "Enable WPA"
msgstr ""
-#: src/usr/local/www/interfaces.php:3039
+#: src/usr/local/www/interfaces.php:3046
msgid "Force the AP to rekey whenever a client disassociates"
msgstr ""
-#: src/usr/local/www/interfaces.php:3051
+#: src/usr/local/www/interfaces.php:3058
msgid "Enable 802.1X authentication"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:242
-#: src/usr/local/www/interfaces_gre_edit.php:236
+#: src/usr/local/www/interfaces_gif_edit.php:246
+#: src/usr/local/www/interfaces_gre_edit.php:242
msgid ""
"Specify if route caching can be enabled. (Be careful with these settings on "
"dynamic networks.)"
msgstr ""
-#: src/usr/local/www/interfaces_gif_edit.php:249
-#: src/usr/local/www/interfaces_gre_edit.php:243
+#: src/usr/local/www/interfaces_gif_edit.php:253
+#: src/usr/local/www/interfaces_gre_edit.php:249
msgid ""
"ECN friendly behavior violates RFC2893. This should be used in mutual "
"agreement with the peer. "
msgstr ""
-#: src/usr/local/www/interfaces_gre_edit.php:250
+#: src/usr/local/www/interfaces_gre_edit.php:256
msgid ""
"Check this box for WCCP encapsulation version 2, or leave unchecked for "
"version 1."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:717
+#: src/usr/local/www/interfaces_ppps_edit.php:727
msgid "Enable persistent logging of connection uptime. "
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:734
+#: src/usr/local/www/interfaces_ppps_edit.php:744
msgid "Configure NULL service name"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:789
+#: src/usr/local/www/interfaces_ppps_edit.php:799
msgid "Monthly (0 0 1 * *)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:797
+#: src/usr/local/www/interfaces_ppps_edit.php:807
msgid "Weekly (0 0 * * 0)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:805
+#: src/usr/local/www/interfaces_ppps_edit.php:815
msgid "Daily (0 0 * * *)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:813
+#: src/usr/local/www/interfaces_ppps_edit.php:823
msgid "Hourly (0 * * * *)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:840
+#: src/usr/local/www/interfaces_ppps_edit.php:852
msgid "Enable Dial-on-Demand mode. "
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:857
+#: src/usr/local/www/interfaces_ppps_edit.php:869
msgid "Disable vjcomp (compression, auto-negotiated by default)."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:867
+#: src/usr/local/www/interfaces_ppps_edit.php:879
msgid "Disable tcpmssfix (enabled by default)."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:878
+#: src/usr/local/www/interfaces_ppps_edit.php:890
msgid "Disable shortseq (auto-negotiated by default)."
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:886
+#: src/usr/local/www/interfaces_ppps_edit.php:898
msgid "Disable ACF compression (auto-negotiated by default)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:893
+#: src/usr/local/www/interfaces_ppps_edit.php:905
msgid "Disable Protocol compression (auto-negotiated by default)"
msgstr ""
-#: src/usr/local/www/interfaces_ppps_edit.php:939
+#: src/usr/local/www/interfaces_ppps_edit.php:951
msgid "<span id=\"linkparamhelp\">"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:284
+#: src/usr/local/www/interfaces_qinq_edit.php:281
msgid "Adds interface to QinQ interface groups"
msgstr ""
-#: src/usr/local/www/interfaces_qinq_edit.php:297
+#: src/usr/local/www/interfaces_qinq_edit.php:294
msgid ""
-"You can specify ranges in the inputs below. Enter a range (2-3) or "
+"Ranges can be specified in the inputs below. Enter a range (2-3) or "
"individual numbers.<br />Click \"Duplicate\" as many times as needed to add "
-"new inputs"
+"new inputs."
msgstr ""
-#: src/usr/local/www/load_balancer_pool_edit.php:404
+#: src/usr/local/www/load_balancer_pool_edit.php:396
msgid ""
-"Please add a monitor IP address on the monitors tab if you wish to use this "
-"feature.\""
+"Please add a monitor IP address on the monitors tab to use this feature.\""
msgstr ""
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:241
-#: src/usr/local/www/load_balancer_virtual_server_edit.php:261
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:243
+#: src/usr/local/www/load_balancer_virtual_server_edit.php:263
msgid "Please add a pool on the \"Pools\" tab to use this feature. "
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:578
+#: src/usr/local/www/services_captiveportal.php:579
msgid "Enable Captive Portal"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:626
+#: src/usr/local/www/services_captiveportal.php:635
msgid "Enable waiting period reset on attempted access"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:633
+#: src/usr/local/www/services_captiveportal.php:642
msgid "Enable logout popup window"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:662
+#: src/usr/local/www/services_captiveportal.php:671
msgid "Disable Concurrent user logins"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:670
+#: src/usr/local/www/services_captiveportal.php:679
msgid "Disable MAC filtering"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:679
+#: src/usr/local/www/services_captiveportal.php:688
msgid "Enable Pass-through MAC automatic additions"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:689
+#: src/usr/local/www/services_captiveportal.php:698
msgid "Enable Pass-through MAC automatic addition with username"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:698
+#: src/usr/local/www/services_captiveportal.php:707
msgid "Enable per-user bandwidth restriction"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:727
+#: src/usr/local/www/services_captiveportal.php:736
msgid "No Authentication"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:735
+#: src/usr/local/www/services_captiveportal.php:744
msgid "Local User Manager / Vouchers"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:743
+#: src/usr/local/www/services_captiveportal.php:752
msgid "RADIUS Authentication"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:753
+#: src/usr/local/www/services_captiveportal.php:762
msgid "Allow only users/groups with \"Captive portal login\" privilege set"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:763
+#: src/usr/local/www/services_captiveportal.php:772
msgid "PAP"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:771
+#: src/usr/local/www/services_captiveportal.php:780
msgid "CHAP-MD5"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:779
+#: src/usr/local/www/services_captiveportal.php:788
msgid "MSCHAPv1"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:787
+#: src/usr/local/www/services_captiveportal.php:796
msgid "MSCHAPv2"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:907
+#: src/usr/local/www/services_captiveportal.php:916
msgid "Send RADIUS accounting packets to the primary RADIUS server."
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:923
+#: src/usr/local/www/services_captiveportal.php:932
msgid "No updates"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:931
+#: src/usr/local/www/services_captiveportal.php:940
msgid "Stop/Start"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:939
+#: src/usr/local/www/services_captiveportal.php:948
msgid "Stop/Start (FreeRADIUS)"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:947
+#: src/usr/local/www/services_captiveportal.php:956
msgid "Interim"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:962
+#: src/usr/local/www/services_captiveportal.php:971
msgid "Reauthenticate connected users every minute"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:970
+#: src/usr/local/www/services_captiveportal.php:979
msgid "Enable RADIUS MAC authentication"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:992
+#: src/usr/local/www/services_captiveportal.php:1001
msgid "Use RADIUS Session-Timeout attributes"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1008
+#: src/usr/local/www/services_captiveportal.php:1017
msgid "Invert Acct-Input-Octets and Acct-Output-Octets"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1041
+#: src/usr/local/www/services_captiveportal.php:1050
msgid "Enable HTTPS login"
msgstr ""
-#: src/usr/local/www/services_captiveportal.php:1065
+#: src/usr/local/www/services_captiveportal.php:1074
msgid "Disable HTTPS Forwards"
msgstr ""
-#: src/usr/local/www/services_captiveportal_vouchers.php:515
+#: src/usr/local/www/services_captiveportal_vouchers.php:516
msgid "Enable the creation, generation and activation of rolls with vouchers"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:805
+#: src/usr/local/www/services_dhcp.php:801
msgid "Only the clients defined below will get DHCP leases from this server."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:812
+#: src/usr/local/www/services_dhcp.php:808
msgid "Denied clients will be ignored rather than rejected."
msgstr ""
-#: src/usr/local/www/services_dhcp.php:982
+#: src/usr/local/www/services_dhcp.php:980
msgid "Enable Static ARP entries"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:989
+#: src/usr/local/www/services_dhcp.php:987
msgid "Change DHCP display lease time from UTC to local time"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:996
+#: src/usr/local/www/services_dhcp.php:994
msgid "Enable RRD statistics graphs"
msgstr ""
@@ -31433,34 +31677,20 @@ msgstr ""
msgid "Enable registration of DHCP client names in DNS"
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1160
+#: src/usr/local/www/services_dhcp.php:1170
msgid "<div class=\"alert alert-info\"> "
msgstr ""
-#: src/usr/local/www/services_dhcp.php:1236
+#: src/usr/local/www/services_dhcp.php:1250
msgid "Enables network booting"
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:495
+#: src/usr/local/www/services_dhcp_edit.php:497
msgid "Create an ARP Table Static Entry for this MAC & IP Address pair."
msgstr ""
-#: src/usr/local/www/services_dhcp_edit.php:600
-#: src/usr/local/www/services_dhcp_edit.php:646
-#: src/usr/local/www/services_dhcp_edit.php:680
-#: src/usr/local/www/services_dhcpv6.php:767
-#: src/usr/local/www/services_dhcpv6.php:833
-#: src/usr/local/www/services_dhcpv6.php:867
-#: src/usr/local/www/services_dhcpv6.php:886
-#: src/usr/local/www/services_dhcpv6.php:912
-#: src/usr/local/www/services_ntpd_gps.php:384
-#: src/usr/local/www/services_pppoe_edit.php:575
-#: src/usr/local/www/services_unbound.php:377
-msgid "&nbsp;"
-msgstr ""
-
-#: src/usr/local/www/services_dhcp_edit.php:606
-#: src/usr/local/www/services_dhcpv6.php:773
+#: src/usr/local/www/services_dhcp_edit.php:610
+#: src/usr/local/www/services_dhcpv6.php:775
msgid "Enable registration of DHCP client names in DNS."
msgstr ""
@@ -31489,11 +31719,11 @@ msgstr ""
msgid "Change DHCPv6 display lease time from UTC to local time"
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:820
+#: src/usr/local/www/services_dhcpv6.php:822
msgid "Add reverse dynamic DNS entries."
msgstr ""
-#: src/usr/local/www/services_dhcpv6.php:892
+#: src/usr/local/www/services_dhcpv6.php:900
msgid "Enable Network Booting"
msgstr ""
@@ -31550,27 +31780,27 @@ msgstr ""
msgid "Verify SSL peer"
msgstr ""
-#: src/usr/local/www/services_ntpd.php:312
+#: src/usr/local/www/services_ntpd.php:316
msgid "Enable RRD graphs of NTP statistics (default: disabled)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:319
+#: src/usr/local/www/services_ntpd.php:323
msgid "Log peer messages (default: disabled)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:326
+#: src/usr/local/www/services_ntpd.php:330
msgid "Log system messages (default: disabled)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:347
+#: src/usr/local/www/services_ntpd.php:353
msgid "Log reference clock statistics (default: disabled)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:354
+#: src/usr/local/www/services_ntpd.php:360
msgid "Log clock discipline statistics (default: disabled)."
msgstr ""
-#: src/usr/local/www/services_ntpd.php:361
+#: src/usr/local/www/services_ntpd.php:367
msgid "Log NTP peer statistics (default: disabled)."
msgstr ""
@@ -31685,6 +31915,10 @@ msgstr ""
msgid "Assign IP Addresses to users via RADIUS server reply attributes"
msgstr ""
+#: src/usr/local/www/services_pppoe_edit.php:579
+msgid "&nbsp;"
+msgstr ""
+
#: src/usr/local/www/services_rfc2136_edit.php:281
msgid "Use TCP instead of UDP"
msgstr ""
@@ -31703,7 +31937,7 @@ msgstr ""
msgid "AAAA (IPv6)"
msgstr ""
-#: src/usr/local/www/services_router_advertisements.php:398
+#: src/usr/local/www/services_router_advertisements.php:429
msgid "Use same settings as DHCPv6 server"
msgstr ""
@@ -31739,23 +31973,23 @@ msgstr ""
msgid "Regex"
msgstr ""
-#: src/usr/local/www/services_unbound.php:296
+#: src/usr/local/www/services_unbound.php:302
msgid "Enable DNS resolver"
msgstr ""
-#: src/usr/local/www/services_unbound.php:339
+#: src/usr/local/www/services_unbound.php:345
msgid "Enable DNSSEC Support"
msgstr ""
-#: src/usr/local/www/services_unbound.php:346
+#: src/usr/local/www/services_unbound.php:352
msgid "Enable Forwarding Mode"
msgstr ""
-#: src/usr/local/www/services_unbound.php:353
+#: src/usr/local/www/services_unbound.php:359
msgid "Register DHCP leases in the DNS Resolver"
msgstr ""
-#: src/usr/local/www/services_unbound.php:362
+#: src/usr/local/www/services_unbound.php:368
msgid "Register DHCP static mappings in the DNS Resolver"
msgstr ""
@@ -31784,7 +32018,7 @@ msgid "DNSSEC data is required for trust-anchored zones."
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:380
-msgid "disable the automatically-added access control entries"
+msgid "Disable the automatically-added access control entries"
msgstr ""
#: src/usr/local/www/services_unbound_advanced.php:388
@@ -31814,137 +32048,141 @@ msgid "Formatted"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:918
-#: src/usr/local/www/status_logs_settings.php:307
+#: src/usr/local/www/status_logs_settings.php:304
msgid "Log errors from the web server process"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:929
-#: src/usr/local/www/status_logs_settings.php:279
+#: src/usr/local/www/status_logs_settings.php:276
msgid "Log packets matched from the default block rules in the ruleset"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:936
-#: src/usr/local/www/status_logs_settings.php:286
+#: src/usr/local/www/status_logs_settings.php:283
msgid "Log packets matched from the default pass rules put in the ruleset"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:943
-#: src/usr/local/www/status_logs_settings.php:293
+#: src/usr/local/www/status_logs_settings.php:290
msgid "Log packets blocked by 'Block Bogon Networks' rules"
msgstr ""
#: src/usr/local/www/status_logs_common.inc:950
-#: src/usr/local/www/status_logs_settings.php:300
+#: src/usr/local/www/status_logs_settings.php:297
msgid "Log packets blocked by 'Block Private Networks' rules"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:256
+#: src/usr/local/www/status_logs_settings.php:253
msgid "Show log entries in reverse order (newest entries on top)"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:314
+#: src/usr/local/www/status_logs_settings.php:311
msgid "Show raw filter logs"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:333
+#: src/usr/local/www/status_logs_settings.php:330
msgid "Disable writing log files to the local disk"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:349
+#: src/usr/local/www/status_logs_settings.php:348
msgid "Send log messages to remote syslog server"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:404
+#: src/usr/local/www/status_logs_settings.php:403
msgid "Everything"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:411
+#: src/usr/local/www/status_logs_settings.php:410
msgid "System Events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:418
+#: src/usr/local/www/status_logs_settings.php:417
msgid "Firewall Events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:425
+#: src/usr/local/www/status_logs_settings.php:424
msgid "DHCP service events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:432
+#: src/usr/local/www/status_logs_settings.php:431
msgid "Portal Auth events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:439
+#: src/usr/local/www/status_logs_settings.php:438
msgid "VPN (PPTP, IPsec, OpenVPN) events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:446
+#: src/usr/local/www/status_logs_settings.php:445
msgid "Gateway Monitor events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:453
+#: src/usr/local/www/status_logs_settings.php:452
msgid "Server Load Balancer events"
msgstr ""
-#: src/usr/local/www/status_logs_settings.php:460
+#: src/usr/local/www/status_logs_settings.php:459
msgid "Wireless events"
msgstr ""
-#: src/usr/local/www/system.php:446
+#: src/usr/local/www/system.php:450
msgid "Allow DNS server list to be overridden by DHCP/PPP on WAN"
msgstr ""
-#: src/usr/local/www/system.php:456
+#: src/usr/local/www/system.php:460
msgid "Do not use the DNS Forwarder as a DNS server for the firewall"
msgstr ""
-#: src/usr/local/www/system.php:546
+#: src/usr/local/www/system.php:566
msgid "Manage Log"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:398
+#: src/usr/local/www/system.php:573
+msgid "Monitoring Settings"
+msgstr ""
+
+#: src/usr/local/www/system_advanced_admin.php:399
msgid "Disable webConfigurator redirect rule"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:407
+#: src/usr/local/www/system_advanced_admin.php:408
msgid "Enable webConfigurator login autocomplete"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:418
+#: src/usr/local/www/system_advanced_admin.php:419
msgid "Disable logging of webConfigurator successful logins"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:432
+#: src/usr/local/www/system_advanced_admin.php:433
msgid "Disable webConfigurator anti-lockout rule"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:445
+#: src/usr/local/www/system_advanced_admin.php:446
msgid "Disable DNS Rebinding Checks"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:465
+#: src/usr/local/www/system_advanced_admin.php:466
msgid "Disable HTTP_REFERER enforcement check"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:477
+#: src/usr/local/www/system_advanced_admin.php:478
msgid "Display page name first in browser tab"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:489
+#: src/usr/local/www/system_advanced_admin.php:490
msgid "Enable Secure Shell"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:496
+#: src/usr/local/www/system_advanced_admin.php:497
msgid "Disable password login for Secure Shell (RSA/DSA key only)"
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:518
+#: src/usr/local/www/system_advanced_admin.php:519
msgid ""
"Enables the first serial port with 115200/8/N/1 by default, or another speed "
"selectable below."
msgstr ""
-#: src/usr/local/www/system_advanced_admin.php:553
+#: src/usr/local/www/system_advanced_admin.php:554
msgid "Password protect the console menu"
msgstr ""
@@ -31983,47 +32221,47 @@ msgstr ""
msgid "Disable Negate rule on policy routing rules"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:583
+#: src/usr/local/www/system_advanced_firewall.php:582
msgid "Verify HTTPS certificates when downloading alias URLs"
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:653
+#: src/usr/local/www/system_advanced_firewall.php:652
msgid ""
-"Automatic creation of additional NAT redirect rules from within your "
-"internal networks."
+"Automatic creation of additional NAT redirect rules from within the internal "
+"networks."
msgstr ""
-#: src/usr/local/www/system_advanced_firewall.php:664
+#: src/usr/local/www/system_advanced_firewall.php:663
msgid ""
"Automatic create outbound NAT rules that direct traffic back out to the same "
"subnet it originated from."
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:391
+#: src/usr/local/www/system_advanced_misc.php:408
msgid "Enable default gateway switching"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:403
+#: src/usr/local/www/system_advanced_misc.php:420
msgid "Enable PowerD"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:484
+#: src/usr/local/www/system_advanced_misc.php:501
msgid "Do not kill connections when schedule expires"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:496
+#: src/usr/local/www/system_advanced_misc.php:513
msgid "Flush all states when a gateway goes down"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:504
+#: src/usr/local/www/system_advanced_misc.php:521
msgid "Do not create rules when gateway is down"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:516
+#: src/usr/local/www/system_advanced_misc.php:533
msgid "Use memory file system for /tmp and /var"
msgstr ""
-#: src/usr/local/www/system_advanced_misc.php:585
+#: src/usr/local/www/system_advanced_misc.php:602
msgid "Do NOT send HOST UUID with user agent"
msgstr ""
@@ -32036,94 +32274,94 @@ msgstr ""
msgid "Enable IPv4 NAT encapsulation of IPv6 packets"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:227
+#: src/usr/local/www/system_advanced_network.php:226
msgid "Prefer to use IPv4 even if IPv6 is available"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:238
+#: src/usr/local/www/system_advanced_network.php:237
msgid "Enable device polling"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:250
+#: src/usr/local/www/system_advanced_network.php:249
msgid "Disable hardware checksum offload"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:261
+#: src/usr/local/www/system_advanced_network.php:260
msgid "Disable hardware TCP segmentation offload"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:271
+#: src/usr/local/www/system_advanced_network.php:270
msgid "Disable hardware large receive offload"
msgstr ""
-#: src/usr/local/www/system_advanced_network.php:281
+#: src/usr/local/www/system_advanced_network.php:280
msgid "Suppress ARP messages"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:243
+#: src/usr/local/www/system_advanced_notifications.php:242
msgid "Disable Growl Notifications"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:294
+#: src/usr/local/www/system_advanced_notifications.php:292
msgid "Disable SMTP Notifications"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:320
+#: src/usr/local/www/system_advanced_notifications.php:318
msgid "Enable SMTP over SSL/TLS"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:327
+#: src/usr/local/www/system_advanced_notifications.php:325
msgid "Enable STARTTLS"
msgstr ""
-#: src/usr/local/www/system_advanced_notifications.php:386
+#: src/usr/local/www/system_advanced_notifications.php:383
msgid "Disable the startup/shutdown beep"
msgstr ""
-#: src/usr/local/www/system_authservers.php:507
+#: src/usr/local/www/system_authservers.php:573
msgid ""
"No Certificate Authorities defined.<br/>Create one under <a href="
"\"system_camanager.php\">System &gt; Cert. Manager</a>."
msgstr ""
-#: src/usr/local/www/system_authservers.php:559
+#: src/usr/local/www/system_authservers.php:625
msgid "Level "
msgstr ""
-#: src/usr/local/www/system_authservers.php:582
+#: src/usr/local/www/system_authservers.php:650
msgid "Enable extended query"
msgstr ""
-#: src/usr/local/www/system_authservers.php:601
+#: src/usr/local/www/system_authservers.php:669
msgid "Use anonymous binds to resolve distinguished names"
msgstr ""
-#: src/usr/local/www/system_authservers.php:662
+#: src/usr/local/www/system_authservers.php:730
msgid "LDAP Server uses RFC 2307 style group membership"
msgstr ""
-#: src/usr/local/www/system_authservers.php:680
+#: src/usr/local/www/system_authservers.php:748
msgid "UTF8 encode LDAP parameters before sending them to the server."
msgstr ""
-#: src/usr/local/www/system_authservers.php:688
+#: src/usr/local/www/system_authservers.php:756
msgid "Do not strip away parts of the username after the @ symbol"
msgstr ""
-#: src/usr/local/www/system_certmanager.php:697
+#: src/usr/local/www/system_certmanager.php:656
msgid "<a href=\"system_camanager.php?act=new&amp;method=internal\"> "
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:318
+#: src/usr/local/www/system_gateway_groups_edit.php:347
msgid ""
"The priority selected here defines in what order failover and balancing of "
"links will be done. Multiple links of the same priority will balance "
"connections until all links in the priority will be exhausted. If all links "
-"in a priority level are exhausted we will use the next available link(s) in "
-"the next priority level."
+"in a priority level are exhausted then the next available link(s) in the "
+"next priority level will be used."
msgstr ""
-#: src/usr/local/www/system_gateway_groups_edit.php:325
+#: src/usr/local/www/system_gateway_groups_edit.php:354
msgid ""
"The virtual IP field selects which (virtual) IP should be used when this "
"group applies to a local Dynamic DNS, IPsec or OpenVPN endpoint."
@@ -32134,7 +32372,7 @@ msgid "Disable this gateway"
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:661
-msgid "This will select the above gateway as the default gateway"
+msgid "This will select the above gateway as the default gateway."
msgstr ""
#: src/usr/local/www/system_gateways_edit.php:668
@@ -32145,11 +32383,11 @@ msgstr ""
msgid "Mark Gateway as Down"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:843
+#: src/usr/local/www/system_gateways_edit.php:827
msgid "<span class=\"help-block\">"
msgstr ""
-#: src/usr/local/www/system_gateways_edit.php:880
+#: src/usr/local/www/system_gateways_edit.php:864
msgid "Use non-local gateway through interface specific route."
msgstr ""
@@ -32235,22 +32473,31 @@ msgstr ""
msgid "Disable this static route"
msgstr ""
-#: src/usr/local/www/system_update_settings.php:147
+#: src/usr/local/www/system_update_settings.php:178
msgid "Disable the automatic dashboard auto-update check"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:621
+#: src/usr/local/www/system_update_settings.php:190
+msgid "Enable repository/branch sync before reboot"
+msgstr ""
+
+#: src/usr/local/www/system_usermanager.php:622
msgid "This user cannot login"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:734
+#: src/usr/local/www/system_usermanager.php:739
msgid "Click to create a user certificate"
msgstr ""
-#: src/usr/local/www/system_usermanager.php:825
+#: src/usr/local/www/system_usermanager.php:830
msgid "Click to paste an authorized key"
msgstr ""
+#: src/usr/local/www/system_usermanager_settings.php:249
+msgid ""
+"<span id=\"ldaptestop\">Testing pfSense LDAP settings... One moment please..."
+msgstr ""
+
#: src/usr/local/www/vpn_ipsec_mobile.php:507
msgid "Provide a virtual IP address to clients"
msgstr ""
@@ -32268,8 +32515,8 @@ msgid "Allow clients to save Xauth passwords (Cisco VPN client only)."
msgstr ""
#: src/usr/local/www/vpn_ipsec_mobile.php:595
-#: src/usr/local/www/vpn_openvpn_csc.php:452
-#: src/usr/local/www/vpn_openvpn_server.php:1018
+#: src/usr/local/www/vpn_openvpn_csc.php:456
+#: src/usr/local/www/vpn_openvpn_server.php:1023
msgid "Provide a default domain name to clients"
msgstr ""
@@ -32280,14 +32527,14 @@ msgid ""
msgstr ""
#: src/usr/local/www/vpn_ipsec_mobile.php:641
-#: src/usr/local/www/vpn_openvpn_csc.php:472
-#: src/usr/local/www/vpn_openvpn_server.php:1032
+#: src/usr/local/www/vpn_openvpn_csc.php:476
+#: src/usr/local/www/vpn_openvpn_server.php:1037
msgid "Provide a DNS server list to clients"
msgstr ""
#: src/usr/local/www/vpn_ipsec_mobile.php:666
-#: src/usr/local/www/vpn_openvpn_csc.php:564
-#: src/usr/local/www/vpn_openvpn_server.php:1119
+#: src/usr/local/www/vpn_openvpn_csc.php:568
+#: src/usr/local/www/vpn_openvpn_server.php:1124
msgid "Provide a WINS server list to clients"
msgstr ""
@@ -32301,35 +32548,35 @@ msgstr ""
msgid "Provide a login banner to clients"
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:693
+#: src/usr/local/www/vpn_ipsec_phase1.php:691
msgid ""
"Set this option to disable this phase1 without removing it from the list. "
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:864
+#: src/usr/local/www/vpn_ipsec_phase1.php:862
msgid "Disables renegotiation when a connection is about to expire."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:871
+#: src/usr/local/www/vpn_ipsec_phase1.php:869
msgid ""
"Whether rekeying of an IKE_SA should also reauthenticate the peer. In IKEv1, "
"reauthentication is always done."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:878
+#: src/usr/local/www/vpn_ipsec_phase1.php:876
msgid ""
"Enable this option to never initiate this connection from this side, only "
"respond to incoming requests."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:900
+#: src/usr/local/www/vpn_ipsec_phase1.php:898
msgid ""
"Enable this to split connection entries with multiple phase 2 "
"configurations. Required for remote endpoints that support only a single "
"traffic selector per child SA."
msgstr ""
-#: src/usr/local/www/vpn_ipsec_phase1.php:926
+#: src/usr/local/www/vpn_ipsec_phase1.php:924
msgid "Enable DPD"
msgstr ""
@@ -32369,19 +32616,19 @@ msgstr ""
msgid "Enable bypass for LAN interface IP"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:246
+#: src/usr/local/www/vpn_l2tp.php:243
msgid "Enable LT2P server"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:332
+#: src/usr/local/www/vpn_l2tp.php:329
msgid "Use a RADIUS server for authentication"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:339
+#: src/usr/local/www/vpn_l2tp.php:336
msgid "Enable RADIUS accounting"
msgstr ""
-#: src/usr/local/www/vpn_l2tp.php:359
+#: src/usr/local/www/vpn_l2tp.php:356
msgid "Issue IP Addresses via RADIUS server."
msgstr ""
@@ -32424,30 +32671,30 @@ msgstr ""
msgid "Don't add or remove routes automatically"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:359
+#: src/usr/local/www/vpn_openvpn_csc.php:363
msgid "Disable this override"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:380
+#: src/usr/local/www/vpn_openvpn_csc.php:384
msgid "Block this client connection based on its common name. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:433
+#: src/usr/local/www/vpn_openvpn_csc.php:437
#: src/usr/local/www/vpn_openvpn_server.php:902
msgid "Force all client generated traffic through the tunnel."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:445
+#: src/usr/local/www/vpn_openvpn_csc.php:449
msgid "Prevent this client from receiving any server-defined client settings. "
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:513
-#: src/usr/local/www/vpn_openvpn_server.php:1074
+#: src/usr/local/www/vpn_openvpn_csc.php:517
+#: src/usr/local/www/vpn_openvpn_server.php:1079
msgid "Provide an NTP server list to clients"
msgstr ""
-#: src/usr/local/www/vpn_openvpn_csc.php:541
-#: src/usr/local/www/vpn_openvpn_server.php:1095
+#: src/usr/local/www/vpn_openvpn_csc.php:545
+#: src/usr/local/www/vpn_openvpn_server.php:1100
msgid "Enable NetBIOS over TCP/IP"
msgstr ""
@@ -32476,19 +32723,19 @@ msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:995
msgid ""
"Allow connected clients to retain their connections if their IP address "
-"changes"
+"changes."
msgstr ""
#: src/usr/local/www/vpn_openvpn_server.php:1002
-msgid "Provide a virtual adapter IP address to clients (see Tunnel Network)"
+msgid "Provide a virtual adapter IP address to clients (see Tunnel Network)."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1067
+#: src/usr/local/www/vpn_openvpn_server.php:1072
msgid ""
"Run \"net stop dnscache\", \"net start dnscache\", \"ipconfig /flushdns\" "
"and \"ipconfig /registerdns\" on connection initiation."
msgstr ""
-#: src/usr/local/www/vpn_openvpn_server.php:1140
+#: src/usr/local/www/vpn_openvpn_server.php:1145
msgid "Use a different management port for clients."
msgstr ""
diff --git a/src/usr/local/share/pfSense/pre_upgrade_command b/src/usr/local/share/pfSense/pre_upgrade_command
index 8c141a4..e36a2e8 100644
--- a/src/usr/local/share/pfSense/pre_upgrade_command
+++ b/src/usr/local/share/pfSense/pre_upgrade_command
@@ -12,6 +12,55 @@ echo $PRIOR_VERSION > /tmp/pre_upgrade_version
# De-activate sync on the root slice only. This will not match NanoBSD since it already has sync,noatime
/usr/bin/sed -i '' 's/^\(\/.*[[:space:]]*\/[[:space:]]*ufs[[:space:]]*\)rw,sync\([[:space:]]*[[:digit:]][[:space:]]*[[:digit:]]\)$/\1rw\2/' /etc/fstab
+# Uninstall all packages before upgrade to 2.3
+PFSENSE_VERSION=$(cat /etc/version)
+
+if echo "$PFSENSE_VERSION" | grep -q '^1.2'; then
+ UNINSTALL="uninstall_package_from_name"
+else
+ UNINSTALL="uninstall_package"
+fi
+
+cat >/tmp/remove_all_packages.php <<EOD
+#!/usr/local/bin/php
+<?php
+
+require_once("pkg-utils.inc");
+
+global \$pkg_interface;
+\$pkg_interface = "console";
+
+if (!isset(\$config['installedpackages']['package'])) {
+ exit(0);
+}
+
+if (!is_array(\$config['installedpackages']['package'])) {
+ exit(0);
+}
+
+\$removed_packages = array();
+foreach (\$config['installedpackages']['package'] as \$package) {
+ if (isset(\$package['internal_name'])) {
+ \$removed_packages[] = \$package['internal_name'];
+ } else {
+ \$rename_arr = array("Quagga OSPF" => "Quagga_OSPF", "System Patches" => "System_Patches");
+ if (key_exists(\$package['name'], \$rename_arr)) {
+ \$removed_packages[] = \$rename_arr[\$package['name']];
+ } else {
+ \$removed_packages[] = \$package['name'];
+ }
+ }
+ ${UNINSTALL}(\$package['name']);
+}
+
+@file_put_contents("{\$g['cf_conf_path']}/packages_to_reinstall_after_upgrade.txt", implode("\\n",\$removed_packages));
+
+?>
+EOD
+
+/usr/local/bin/php /tmp/remove_all_packages.php
+rm -f /tmp/remove_all_packages.php
+
# Cleanup PBIs
if which pbi_info >/dev/null 2>&1; then
for pbi in $(pbi_info); do
diff --git a/src/usr/local/share/pfSense/ssl/openssl.cnf b/src/usr/local/share/pfSense/ssl/openssl.cnf
new file mode 100644
index 0000000..6119a73
--- /dev/null
+++ b/src/usr/local/share/pfSense/ssl/openssl.cnf
@@ -0,0 +1,398 @@
+# $FreeBSD$
+#
+# OpenSSL example configuration file.
+# This is mostly being used for generation of certificate requests.
+#
+
+# This definition stops the following lines choking if HOME isn't
+# defined.
+HOME = .
+RANDFILE = $ENV::HOME/.rnd
+
+# pfSense: default SAN value if $ENV::SAN is not defined
+#
+SAN =
+
+# Extra OBJECT IDENTIFIER info:
+#oid_file = $ENV::HOME/.oid
+oid_section = new_oids
+
+# To use this configuration file with the "-extfile" option of the
+# "openssl x509" utility, name here the section containing the
+# X.509v3 extensions to use:
+# extensions =
+# (Alternatively, use a configuration file that has only
+# X.509v3 extensions in its main [= default] section.)
+
+[ new_oids ]
+
+# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
+# Add a simple OID like this:
+# testoid1=1.2.3.4
+# Or use config file substitution like this:
+# testoid2=${testoid1}.5.6
+
+# Policies used by the TSA examples.
+tsa_policy1 = 1.2.3.4.1
+tsa_policy2 = 1.2.3.4.5.6
+tsa_policy3 = 1.2.3.4.5.7
+
+####################################################################
+[ ca ]
+default_ca = CA_default # The default ca section
+
+####################################################################
+[ CA_default ]
+
+dir = ./demoCA # Where everything is kept
+certs = $dir/certs # Where the issued certs are kept
+crl_dir = $dir/crl # Where the issued crl are kept
+database = $dir/index.txt # database index file.
+#unique_subject = no # Set to 'no' to allow creation of
+ # several ctificates with same subject.
+new_certs_dir = $dir/newcerts # default place for new certs.
+
+certificate = $dir/cacert.pem # The CA certificate
+serial = $dir/serial # The current serial number
+crlnumber = $dir/crlnumber # the current crl number
+ # must be commented out to leave a V1 CRL
+crl = $dir/crl.pem # The current CRL
+private_key = $dir/private/cakey.pem# The private key
+RANDFILE = $dir/private/.rand # private random number file
+
+x509_extensions = usr_cert # The extentions to add to the cert
+
+# Comment out the following two lines for the "traditional"
+# (and highly broken) format.
+name_opt = ca_default # Subject Name options
+cert_opt = ca_default # Certificate field options
+
+# Extension copying option: use with caution.
+# copy_extensions = copy
+
+# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
+# so this is commented out by default to leave a V1 CRL.
+# crlnumber must also be commented out to leave a V1 CRL.
+crl_extensions = crl_ext
+
+default_days = 365 # how long to certify for
+default_crl_days= 30 # how long before next CRL
+default_md = default # use public key default MD
+preserve = no # keep passed DN ordering
+
+# A few difference way of specifying how similar the request should look
+# For type CA, the listed attributes must be the same, and the optional
+# and supplied fields are just that :-)
+policy = policy_match
+
+# For the CA policy
+[ policy_match ]
+countryName = match
+stateOrProvinceName = match
+organizationName = match
+organizationalUnitName = optional
+commonName = supplied
+emailAddress = optional
+
+# For the 'anything' policy
+# At this point in time, you must list all acceptable 'object'
+# types.
+[ policy_anything ]
+countryName = optional
+stateOrProvinceName = optional
+localityName = optional
+organizationName = optional
+organizationalUnitName = optional
+commonName = supplied
+emailAddress = optional
+
+####################################################################
+[ req ]
+prompt = no
+default_bits = 2048
+default_keyfile = privkey.pem
+distinguished_name = req_distinguished_name
+attributes = req_attributes
+x509_extensions = v3_ca # The extentions to add to the self signed cert
+
+# Passwords for private keys if not present they will be prompted for
+# input_password = secret
+# output_password = secret
+
+# This sets a mask for permitted string types. There are several options.
+# default: PrintableString, T61String, BMPString.
+# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
+# utf8only: only UTF8Strings (PKIX recommendation after 2004).
+# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
+# MASK:XXXX a literal mask value.
+# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
+string_mask = nombstr
+
+req_extensions = v3_req # The extensions to add to a certificate request
+
+[ req_distinguished_name ]
+countryName = Country Name (2 letter code)
+countryName_default = AU
+countryName_min = 2
+countryName_max = 2
+
+stateOrProvinceName = State or Province Name (full name)
+stateOrProvinceName_default = Some-State
+
+localityName = Locality Name (eg, city)
+
+0.organizationName = Organization Name (eg, company)
+0.organizationName_default = Internet Widgits Pty Ltd
+
+# we can do this but it is not needed normally :-)
+#1.organizationName = Second Organization Name (eg, company)
+#1.organizationName_default = World Wide Web Pty Ltd
+
+organizationalUnitName = Organizational Unit Name (eg, section)
+#organizationalUnitName_default =
+
+commonName = Common Name (e.g. server FQDN or YOUR name)
+commonName_max = 64
+
+emailAddress = Email Address
+emailAddress_max = 64
+
+# SET-ex3 = SET extension number 3
+
+[ req_attributes ]
+challengePassword = A challenge password
+challengePassword_min = 4
+challengePassword_max = 20
+
+unstructuredName = An optional company name
+
+[ usr_cert ]
+
+# These extensions are added when 'ca' signs a request.
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:FALSE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType = server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment = "OpenSSL Generated User Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer:always
+extendedKeyUsage=clientAuth
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+# This is required for TSA certificates.
+# extendedKeyUsage = critical,timeStamping
+
+[ usr_cert_san ]
+
+# copy of [ usr_cert ] plus nonempty Subject Alternative Names
+basicConstraints = CA:FALSE
+nsComment = "OpenSSL Generated User Certificate"
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+extendedKeyUsage = clientAuth
+subjectAltName = $ENV::SAN
+
+[ server ]
+
+# Make a cert with nsCertType=server
+basicConstraints = CA:FALSE
+nsCertType = server
+nsComment = "OpenSSL Generated Server Certificate"
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+extendedKeyUsage = serverAuth,1.3.6.1.5.5.8.2.2
+keyUsage = digitalSignature, keyEncipherment
+
+[ server_san ]
+
+# copy of [ server ] plus nonempty Subject Alternative Names
+basicConstraints = CA:FALSE
+nsCertType = server
+nsComment = "OpenSSL Generated Server Certificate"
+subjectKeyIdentifier = hash
+authorityKeyIdentifier = keyid,issuer:always
+extendedKeyUsage = serverAuth,1.3.6.1.5.5.8.2.2
+keyUsage = digitalSignature, keyEncipherment
+subjectAltName = $ENV::SAN
+
+[ v3_req ]
+
+# Extensions to add to a certificate request
+
+basicConstraints = CA:FALSE
+keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+[ v3_ca ]
+
+
+# Extensions for a typical CA
+
+
+# PKIX recommendation.
+
+subjectKeyIdentifier=hash
+
+authorityKeyIdentifier=keyid:always,issuer:always
+
+# This is what PKIX recommends but some broken software chokes on critical
+# extensions.
+#basicConstraints = critical,CA:true
+# So we do this instead.
+basicConstraints = CA:true
+
+# Key usage: this is typical for a CA certificate. However since it will
+# prevent it being used as an test self-signed certificate it is best
+# left out by default.
+keyUsage = cRLSign, keyCertSign
+
+# Some might want this also
+# nsCertType = sslCA, emailCA
+
+# Include email address in subject alt name: another PKIX recommendation
+# subjectAltName=email:copy
+# Copy issuer details
+# issuerAltName=issuer:copy
+
+# DER hex encoding of an extension: beware experts only!
+# obj=DER:02:03
+# Where 'obj' is a standard or added object
+# You can even override a supported extension:
+# basicConstraints= critical, DER:30:03:01:01:FF
+
+[ v3_ca_san ]
+
+# copy of [ v3_ca ] plus nonempty Subject Alternative Names
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid:always,issuer:always
+basicConstraints=CA:true
+subjectAltName=$ENV::SAN
+
+[ crl_ext ]
+
+# CRL extensions.
+# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
+
+# issuerAltName=issuer:copy
+authorityKeyIdentifier=keyid:always,issuer:always
+
+[ proxy_cert_ext ]
+# These extensions should be added when creating a proxy certificate
+
+# This goes against PKIX guidelines but some CAs do it and some software
+# requires this to avoid interpreting an end user certificate as a CA.
+
+basicConstraints=CA:FALSE
+
+# Here are some examples of the usage of nsCertType. If it is omitted
+# the certificate can be used for anything *except* object signing.
+
+# This is OK for an SSL server.
+# nsCertType = server
+
+# For an object signing certificate this would be used.
+# nsCertType = objsign
+
+# For normal client use this is typical
+# nsCertType = client, email
+
+# and for everything including object signing:
+# nsCertType = client, email, objsign
+
+# This is typical in keyUsage for a client certificate.
+# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
+
+# This will be displayed in Netscape's comment listbox.
+nsComment = "OpenSSL Generated Certificate"
+
+# PKIX recommendations harmless if included in all certificates.
+subjectKeyIdentifier=hash
+authorityKeyIdentifier=keyid,issuer
+
+# This stuff is for subjectAltName and issuerAltname.
+# Import the email address.
+# subjectAltName=email:copy
+# An alternative to produce certificates that aren't
+# deprecated according to PKIX.
+# subjectAltName=email:move
+
+# Copy subject details
+# issuerAltName=issuer:copy
+
+#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem
+#nsBaseUrl
+#nsRevocationUrl
+#nsRenewalUrl
+#nsCaPolicyUrl
+#nsSslServerName
+
+# This really needs to be in place for it to be a proxy certificate.
+proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
+
+####################################################################
+[ tsa ]
+
+default_tsa = tsa_config1 # the default TSA section
+
+[ tsa_config1 ]
+
+# These are used by the TSA reply generation only.
+dir = ./demoCA # TSA root directory
+serial = $dir/tsaserial # The current serial number (mandatory)
+crypto_device = builtin # OpenSSL engine to use for signing
+signer_cert = $dir/tsacert.pem # The TSA signing certificate
+ # (optional)
+certs = $dir/cacert.pem # Certificate chain to include in reply
+ # (optional)
+signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
+
+default_policy = tsa_policy1 # Policy if request did not specify it
+ # (optional)
+other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
+digests = md5, sha1 # Acceptable message digests (mandatory)
+accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
+clock_precision_digits = 0 # number of digits after dot. (optional)
+ordering = yes # Is ordering defined for timestamps?
+ # (optional, default: no)
+tsa_name = yes # Must the TSA name be included in the reply?
+ # (optional, default: no)
+ess_cert_id_chain = no # Must the ESS cert id chain be included?
+ # (optional, default: no)
diff --git a/src/usr/local/www/classes/Form/Checkbox.class.php b/src/usr/local/www/classes/Form/Checkbox.class.php
index d94c210..0601779 100644
--- a/src/usr/local/www/classes/Form/Checkbox.class.php
+++ b/src/usr/local/www/classes/Form/Checkbox.class.php
@@ -66,6 +66,6 @@ class Form_Checkbox extends Form_Input
if (!isset($this->_description))
return $input;
- return '<label>'. $input .' '. htmlspecialchars(gettext($this->_description)) .'</label>';
+ return '<label class="chkboxlbl">'. $input .' '. htmlspecialchars(gettext($this->_description)) .'</label>';
}
} \ No newline at end of file
diff --git a/src/usr/local/www/classes/Form/Input.class.php b/src/usr/local/www/classes/Form/Input.class.php
index 4cdfb28..036a1df 100644
--- a/src/usr/local/www/classes/Form/Input.class.php
+++ b/src/usr/local/www/classes/Form/Input.class.php
@@ -246,7 +246,7 @@ class Form_Input extends Form_Element
if (isset($this->_help))
{
/* Strings longer than this will break gettext. */
- if (strlen($this->_help) < 7620) {
+ if (strlen($this->_help) < 4096) {
$help = gettext($this->_help);
} else {
$help = $this->_help;
diff --git a/src/usr/local/www/classes/Form/IpAddress.class.php b/src/usr/local/www/classes/Form/IpAddress.class.php
index be2f4c1..72f885f 100644
--- a/src/usr/local/www/classes/Form/IpAddress.class.php
+++ b/src/usr/local/www/classes/Form/IpAddress.class.php
@@ -31,11 +31,23 @@ class Form_IpAddress extends Form_Input
{
protected $_mask;
- public function __construct($name, $title, $value)
+ public function __construct($name, $title, $value, $type = "BOTH")
{
parent::__construct($name, $title, 'text', $value);
- $this->_attributes['pattern'] = '[a-f0-9:.]*';
+ switch ($type) {
+ case "BOTH":
+ $this->_attributes['pattern'] = '[a-f0-9:.]*';
+ break;
+
+ case "V4":
+ $this->_attributes['pattern'] = '[a-f0-9.]*';
+ break;
+
+ case "V6":
+ $this->_attributes['pattern'] = '[a-f0-9:]*';
+ break;
+ }
}
// $min is provided to allow for VPN masks in which '0' is valid
@@ -58,7 +70,7 @@ class Form_IpAddress extends Form_Input
return parent::setIsRepeated();
}
-
+
protected function _getInput()
{
$input = parent::_getInput();
diff --git a/src/usr/local/www/crash_reporter.php b/src/usr/local/www/crash_reporter.php
index 3542d96..e8918b3 100644
--- a/src/usr/local/www/crash_reporter.php
+++ b/src/usr/local/www/crash_reporter.php
@@ -96,7 +96,7 @@ $crash_report_header .= php_uname("r") . "\n";
$crash_report_header .= php_uname("v") . "\n";
$crash_report_header .= "\nCrash report details:\n";
-exec("/usr/bin/grep -vi warning /tmp/PHP_errors.log", $php_errors);
+exec("/bin/cat /tmp/PHP_errors.log", $php_errors);
if ($_POST['Submit'] == "Yes") {
echo gettext("Processing...");
diff --git a/src/usr/local/www/css/Compact-RED.css b/src/usr/local/www/css/Compact-RED.css
new file mode 100644
index 0000000..7c88722
--- /dev/null
+++ b/src/usr/local/www/css/Compact-RED.css
@@ -0,0 +1,139 @@
+
+/* Compact-RED theme for pfSense by PiBa-NL */
+
+@import url("/css/pfSense.css");
+
+body {
+ font-size: 12px;
+}
+
+.form-control {
+ font-size: 12px;
+}
+
+.container.fixed {
+ padding-top: 40px;
+}
+
+/* navigation */
+.navbar {
+ margin-bottom: 2px;
+ min-height:30px;
+}
+
+.navbar-inverse {
+ background-color: #600;
+}
+
+.navbar-brand > img {
+ max-height: 26px;
+}
+
+.navbar-brand {
+ padding: 2px 0 0 5px;
+ height: 30px;
+}
+
+.navbar-inverse .navbar-nav >li>a {
+ border-bottom: 5px solid #212121;
+ color: #fff;
+}
+.navbar-inverse .navbar-nav >li>a:hover{
+ color: #ccc;
+}
+.text-muted {
+ color: #BDBDBD;
+}
+.text-muted > a:hover {
+ color: #ccc;
+}
+
+.nav>li>a {
+ padding: 5px 19px 0px 19px;
+}
+.navbar-inverse .navbar-nav >li>a {
+ border-bottom: 5px solid #600;
+}
+
+.navbar-inverse .navbar-nav>.open>a,.navbar-inverse .navbar-nav>.open>a:focus,.navbar-inverse .navbar-nav>.open>a:hover {
+ color: #fff;
+ background-color: #600;
+}
+.nav-pills {
+ margin-bottom: 0px;
+}
+
+.dropdown-menu>li>a {
+ padding: 0px 20px;
+}
+
+.navbar-right>li>a {
+ padding: 2px 15px 1px 15px;
+}
+
+.navbar-toggle {
+ margin-top:0px;
+ margin-bottom:0px;
+}
+.panel-default>.panel-heading {
+ background-color: #900;
+}
+
+.form-control {
+ margin-bottom: 2px;
+}
+
+.form-group {
+ padding: 2px 5px 2px 5px;
+}
+.table>tbody>tr>td,.table>tbody>tr>th,.table>tfoot>tr>td,.table>tfoot>tr>th,.table>thead>tr>td,.table>thead>tr>th {
+ padding:2px;
+}
+
+.header .context-links {
+ top: 1px;
+}
+
+.breadcrumb {
+ margin-bottom: 2px;
+ padding: 0px 15px;
+ font-size: 14px;
+}
+
+/** Page footer */
+.footer {
+ height: 40px;
+ background-color: #600;
+}
+
+.btn
+{
+ padding: 2px 12px;
+}
+
+.dropdown-menu {
+ font-size:12px;
+}
+
+.form-horizontal .checkbox {
+ padding: 2px 16px;
+}
+
+.chkboxlbl {
+ padding-top: 0px;
+}
+
+.form-horizontal .checkbox,.form-horizontal .radio {
+ min-height:20px;
+}
+
+@media (min-width: 768px) {
+ .form-horizontal .control-label {
+ padding-top: 4px;
+ }
+}
+
+/* Experimental styles to correct vertical alignment in forms */
+.col-sm-10 {
+ padding-top: 0px;
+} \ No newline at end of file
diff --git a/src/usr/local/www/css/pfSense.css b/src/usr/local/www/css/pfSense.css
index 9f62caa..71ad28a 100644
--- a/src/usr/local/www/css/pfSense.css
+++ b/src/usr/local/www/css/pfSense.css
@@ -276,7 +276,7 @@ tr.disabled th {
margin: 10px 0 20px 0;
box-shadow: 0px 1px 10px rgba(0,0,0,.3);
margin-bottom: 10px;
- background-color: #E0E0E0;
+ background-color: #E0E0E0;
}
.header .context-links {
@@ -474,7 +474,7 @@ footer a {
.bg-info {
color: #01579B;
- background-color: #E1F5FE;
+ background-color: #B3E5FC;
}
.bg-danger {
@@ -489,7 +489,7 @@ footer a {
.bg-success {
color: #1B5E20;
- background-color: #E8F5E9;
+ background-color: #C8E6C9;
}
.btn-success {
@@ -792,8 +792,8 @@ ul.tree li .over{
width: 50%;
}
- .breadcrumb li:not(:last-child), .breadcrumb>li+li:before {
- display: none;
+ .breadcrumb li:not(:last-child), .breadcrumb>li+li:before {
+ display: none;
}
}
@@ -905,4 +905,13 @@ svg {
#chart .nvtooltip > h3 {
font-size: 14px;
-} \ No newline at end of file
+}
+
+/* Experimental styles to correct vertical alignment in forms */
+.col-sm-10 {
+ padding-top: 7px;
+}
+
+.chkboxlbl {
+ padding-top: 4px;
+}
diff --git a/src/usr/local/www/diag_arp.php b/src/usr/local/www/diag_arp.php
index 91c2063..69bc740 100644
--- a/src/usr/local/www/diag_arp.php
+++ b/src/usr/local/www/diag_arp.php
@@ -387,7 +387,7 @@ events.push(function() {
<div class="infoblock blockopen">
<?php
-print_info_box(gettext("Local IPv6 peers use ") . '<a href="diag_ndp.php">' . gettext("NDP") . '</a>' . gettext(" instead of ARP"), 'info', false);
+print_info_box(gettext("Local IPv6 peers use ") . '<a href="diag_ndp.php">' . gettext("NDP") . '</a>' . gettext(" instead of ARP."), 'info', false);
?>
</div>
diff --git a/src/usr/local/www/diag_authentication.php b/src/usr/local/www/diag_authentication.php
index 5e6813a..1cfe158 100644
--- a/src/usr/local/www/diag_authentication.php
+++ b/src/usr/local/www/diag_authentication.php
@@ -125,7 +125,7 @@ $section->addInput(new Form_Select(
'Authentication Server',
$pconfig['authmode'],
$serverlist
-))->setHelp('Select the authentication server to test against');
+))->setHelp('Select the authentication server to test against.');
$section->addInput(new Form_Input(
'username',
diff --git a/src/usr/local/www/diag_command.php b/src/usr/local/www/diag_command.php
index 660fab6..2562e9c 100644
--- a/src/usr/local/www/diag_command.php
+++ b/src/usr/local/www/diag_command.php
@@ -71,7 +71,7 @@ $allowautocomplete = true;
require("guiconfig.inc");
-if (($_POST['submit'] == "DOWNLOAD") && file_exists($_POST['dlPath'])) {
+if ($_POST['submit'] == "DOWNLOAD" && file_exists($_POST['dlPath'])) {
session_cache_limiter('public');
$fd = fopen($_POST['dlPath'], "rb");
header("Content-Type: application/octet-stream");
@@ -88,10 +88,9 @@ if (($_POST['submit'] == "DOWNLOAD") && file_exists($_POST['dlPath'])) {
fpassthru($fd);
exit;
-} else if (($_POST['submit'] == "UPLOAD") && is_uploaded_file($_FILES['ulfile']['tmp_name'])) {
+} else if ($_POST['submit'] == "UPLOAD" && is_uploaded_file($_FILES['ulfile']['tmp_name'])) {
move_uploaded_file($_FILES['ulfile']['tmp_name'], "/tmp/" . $_FILES['ulfile']['name']);
$ulmsg = sprintf(gettext('Uploaded file to /tmp/%s.'), htmlentities($_FILES['ulfile']['name']));
- unset($_POST['txtCommand']);
}
if ($_POST) {
@@ -221,7 +220,7 @@ if (isBlank($_POST['txtCommand']) && isBlank($_POST['txtPHPCommand']) && isBlank
print_callout(gettext("The capabilities offered here can be dangerous. No support is available. Use them at your own risk!"), 'danger', gettext('Advanced Users Only'));
}
-if (!isBlank($_POST['txtCommand'])):?>
+if ($_POST['submit'] == "EXEC" && !isBlank($_POST['txtCommand'])):?>
<div class="panel panel-success responsive">
<div class="panel-heading"><h2 class="panel-title"><?=sprintf(gettext('Shell Output - %s'), htmlspecialchars($_POST['txtCommand']))?></h2></div>
<div class="panel-body">
@@ -253,7 +252,7 @@ if (!isBlank($_POST['txtCommand'])):?>
<button type="button" class="btn btn-success btn-sm" name="btnRecallPrev" onclick="btnRecall_onClick( this.form, -1 );" title="<?=gettext("Recall Previous Command")?>">
<i class="fa fa-angle-double-left"></i>
</button>
- <button type="submit" class="btn btn-warning btn-sm" value="EXEC" title="<?=gettext("Execute the entered command")?>">
+ <button name="submit" type="submit" class="btn btn-warning btn-sm" value="EXEC" title="<?=gettext("Execute the entered command")?>">
<i class="fa fa-bolt"></i>
<?=gettext("Execute"); ?>
</button>
@@ -304,7 +303,7 @@ if (!isBlank($_POST['txtCommand'])):?>
<?php
// Experimental version. Writes the user's php code to a file and executes it via a new instance of PHP
// This is intended to prevent bad code from breaking the GUI
- if (!isBlank($_POST['txtPHPCommand'])) {
+ if ($_POST['submit'] == "EXECPHP" && !isBlank($_POST['txtPHPCommand'])) {
puts("<div class=\"panel panel-success responsive\"><div class=\"panel-heading\"><h2 class=\"panel-title\">PHP Response</h2></div>");
$tmpname = tempnam("/tmp", "");
@@ -344,7 +343,7 @@ if (!isBlank($_POST['txtCommand'])):?>
<div class="content">
<textarea id="txtPHPCommand" placeholder="Command" name="txtPHPCommand" rows="9" cols="80"><?=htmlspecialchars($_POST['txtPHPCommand'])?></textarea>
<br />
- <button type="submit" class="btn btn-warning btn-sm" value="<?=gettext("Execute")?>" title="<?=gettext("Execute this PHP Code")?>">
+ <button name="submit" type="submit" class="btn btn-warning btn-sm" value="EXECPHP" title="<?=gettext("Execute this PHP Code")?>">
<i class="fa fa-bolt"></i>
<?=gettext("Execute")?>
</button>
diff --git a/src/usr/local/www/diag_nanobsd.php b/src/usr/local/www/diag_nanobsd.php
index 921ed2f..4627e79 100644
--- a/src/usr/local/www/diag_nanobsd.php
+++ b/src/usr/local/www/diag_nanobsd.php
@@ -174,11 +174,13 @@ if ($mounted_rw) {
/* refcount_read returns -1 when shared memory section does not exist */
/* refcount can be zero here when the user has set nanobsd_force_rw */
/* refcount 1 is normal, so only display the count for abnormal values */
+ /*
if ($refcount == 1 || $refcount == 0 || $refcount == -1) {
$refdisplay = "";
} else {
$refdisplay = " ". sprintf(gettext("(Reference count %s)"), $refcount);
}
+ */
$lbl = gettext("Read/Write") . $refdisplay;
$btnlbl = gettext("Switch to Read-Only");
} else {
@@ -188,6 +190,7 @@ if ($mounted_rw) {
// Only show the changero button if force read/write is off, or the file system is not in writable state, or there is an unusual refcount.
// If force read/write is on, and the file system is in writable state, and refcount is normal then the user has no reason to mess about.
+/*
if (!isset($config['system']['nanobsd_force_rw']) || !$mounted_rw || ($refcount > 1)) {
$robtn = new Form_Button(
'changero',
@@ -198,12 +201,14 @@ if (!isset($config['system']['nanobsd_force_rw']) || !$mounted_rw || ($refcount
$robtn->addClass(($mounted_rw) ? 'btn-success' : 'btn-warning' . ' btn-sm');
$lbl .= ' ' . $robtn;
}
-
+*/
$section->addInput(new Form_StaticText(
'Read/Write status',
$lbl
-))->setHelp('This setting is only temporary, and can be switched dynamically in the background.');
+))->setHelp('NanoBSD is now always read-write to avoid read-write to read-only mount problems.');
+//))->setHelp('This setting is only temporary, and can be switched dynamically in the background.');
+/*
$section->addInput(new Form_Checkbox(
'nanobsd_force_rw',
'Permanent Read/Write',
@@ -223,6 +228,7 @@ $section->addInput(new Form_StaticText(
null,
$permbtn
));
+*/
$section->addInput(new Form_Input(
'destslice',
diff --git a/src/usr/local/www/diag_packet_capture.php b/src/usr/local/www/diag_packet_capture.php
index fa1b545..9659e84 100644
--- a/src/usr/local/www/diag_packet_capture.php
+++ b/src/usr/local/www/diag_packet_capture.php
@@ -318,9 +318,10 @@ $section->addInput(new Form_Select(
$section->addInput(new Form_Checkbox(
'promiscuous',
'Promiscuous',
- 'Packet capture will be performed using promiscuous mode',
+ 'Enable promiscuous mode',
$promiscuous
-))->setHelp('Note: Some network adapters do not support or work well in promiscuous mode.'. '<br />' .
+))->setHelp('The packet capture will be performed using promiscuous mode.<br />' .
+ 'Note: Some network adapters do not support or work well in promiscuous mode.'. '<br />' .
'More: ' . '<a target="_blank" href="http://www.freebsd.org/cgi/man.cgi?query=tcpdump&amp;apropos=0&amp;sektion=0&amp;manpath=FreeBSD+8.3-stable&amp;arch=default&amp;format=html">' .
'Packet capture' . '</a>');
@@ -332,7 +333,7 @@ $section->addInput(new Form_Select(
'ip' => gettext('IPv4 Only'),
'ip6' => gettext('IPv6 Only')
)
-))->setHelp('Select the type of traffic to be captured');
+))->setHelp('Select the type of traffic to be captured.');
$section->addInput(new Form_Select(
'proto',
@@ -392,7 +393,7 @@ $section->addInput(new Form_Checkbox(
'Reverse DNS Lookup',
'Do reverse DNS lookup',
$_POST['dnsquery']
-))->setHelp('This check box will cause the packet capture to perform a reverse DNS lookup associated with all IP addresses.' . '<br />' .
+))->setHelp('The packet capture will perform a reverse DNS lookup associated with all IP addresses.' . '<br />' .
'This option can cause delays for large packet captures.');
$form->add($section);
diff --git a/src/usr/local/www/diag_ping.php b/src/usr/local/www/diag_ping.php
index 7cf8301..e974a3d 100644
--- a/src/usr/local/www/diag_ping.php
+++ b/src/usr/local/www/diag_ping.php
@@ -179,14 +179,14 @@ $section->addInput(new Form_Select(
'Source address',
$sourceip,
array('' => gettext('Automatically selected (default)')) + get_possible_traffic_source_addresses(true)
-))->setHelp('Select source address for the ping');
+))->setHelp('Select source address for the ping.');
$section->addInput(new Form_Select(
'count',
'Maximum number of pings',
$count,
array_combine(range(1, MAX_COUNT), range(1, MAX_COUNT))
-))->setHelp('Select the maximum number of pings');
+))->setHelp('Select the maximum number of pings.');
$form->add($section);
diff --git a/src/usr/local/www/diag_resetstate.php b/src/usr/local/www/diag_resetstate.php
index eb2e98c..a62ef67 100644
--- a/src/usr/local/www/diag_resetstate.php
+++ b/src/usr/local/www/diag_resetstate.php
@@ -101,7 +101,7 @@ $statetablehelp = sprintf(gettext('Resetting the state tables will remove all en
'will be broken and will have to be re-established. This may be necessary after making substantial changes to the ' .
'firewall and/or NAT rules, especially if there are IP protocol mappings (e.g. for PPTP or IPv6) with open connections.%s' .
'The firewall will normally leave the state tables intact when changing rules.%s' .
- '%sNOTE:%s Resetting the firewall state table, may cause the browser session to appear hung after clicking &quot;Reset&quot;. ' .
+ '%sNOTE:%s Resetting the firewall state table may cause the browser session to appear hung after clicking &quot;Reset&quot;. ' .
'Simply refresh the page to continue.'), "<br /><br />", "<br /><br />", "<strong>", "</strong>");
$sourcetablehelp = sprintf(gettext('Resetting the source tracking table will remove all source/destination associations. ' .
diff --git a/src/usr/local/www/diag_routes.php b/src/usr/local/www/diag_routes.php
index 5ba3c2b..250c3f5 100644
--- a/src/usr/local/www/diag_routes.php
+++ b/src/usr/local/www/diag_routes.php
@@ -80,7 +80,7 @@ if (isset($_REQUEST['isAjax'])) {
}
if (!empty($_REQUEST['filter'])) {
- $netstat .= " | /usr/bin/sed -e '1,3d; 5,\$ { /" . escapeshellarg(htmlspecialchars($_REQUEST['filter'])) . "/!d; };'";
+ $netstat .= " | /usr/bin/sed -e " . escapeshellarg("1,3d; 5,\$ { /" . htmlspecialchars($_REQUEST['filter']) . "/!d; };");
} else {
$netstat .= " | /usr/bin/sed -e '1,3d'";
}
@@ -129,7 +129,7 @@ $section->addInput(new Form_Input(
'Filter',
'text',
$host
-))->setHelp('Use a regular expression to filter IP address or hostnames');
+))->setHelp('Use a regular expression to filter IP address or hostnames.');
$form->add($section);
diff --git a/src/usr/local/www/diag_smart.php b/src/usr/local/www/diag_smart.php
index baeef54..e7be8de 100644
--- a/src/usr/local/www/diag_smart.php
+++ b/src/usr/local/www/diag_smart.php
@@ -100,13 +100,21 @@ function add_colors($string) {
// Edits smartd.conf file, adds or removes email for failed disk reporting
function update_email($email) {
+ /* Bail if an e-mail address is invalid */
+ if (!empty($email) && (filter_var($email, FILTER_VALIDATE_EMAIL) === false)) {
+ return;
+ }
+
+ if (!file_exists("/usr/local/etc/smartd.conf") && file_exists("/usr/local/etc/smartd.conf.sample")) {
+ copy("/usr/local/etc/smartd.conf.sample", "/usr/local/etc/smartd.conf");
+ }
// Did they pass an email?
if (!empty($email)) {
// Put it in the smartd.conf file
- shell_exec("/usr/bin/sed -i old 's/^DEVICESCAN.*/DEVICESCAN -H -m " . escapeshellarg($email) . "/' /usr/local/etc/smartd.conf");
+ shell_exec("/usr/bin/sed -i .old " . escapeshellarg("s/^DEVICESCAN.*/DEVICESCAN -H -m {$email}/") . " /usr/local/etc/smartd.conf");
} else {
// Remove email flags in smartd.conf
- shell_exec("/usr/bin/sed -i old 's/^DEVICESCAN.*/DEVICESCAN/' /usr/local/etc/smartd.conf");
+ shell_exec("/usr/bin/sed -i .old 's/^DEVICESCAN.*/DEVICESCAN/' /usr/local/etc/smartd.conf");
}
}
@@ -254,27 +262,27 @@ switch ($action) {
smartmonctl("start");
$style = 'warning';
} else if (isset($_POST['save'])) {
- $config['system']['smartmonemail'] = $_POST['smartmonemail'];
- write_config();
-
- // Don't know what all this means, but it adds the config changed header when config is saved
- $retval = 0;
- config_lock();
- if (stristr($retval, "error") != true) {
- $savemsg = get_std_save_message($retval);
- $style = 'success';
+ if (!empty($_POST['smartmonemail']) && (filter_var($_POST['smartmonemail'], FILTER_VALIDATE_EMAIL) === false)) {
+ $savemsg = "The supplied e-mail address is invalid.";
+ $style = 'danger';
} else {
- $savemsg = $retval;
- $style='danger';
+ $config['system']['smartmonemail'] = $_POST['smartmonemail'];
+ write_config();
+ $retval = 0;
+ config_lock();
+ if (stristr($retval, "error") != true) {
+ $savemsg = get_std_save_message($retval);
+ $style = 'success';
+ } else {
+ $savemsg = $retval;
+ $style='danger';
+ }
+ config_unlock();
+ // Write the changes to the smartd.conf file
+ update_email($_POST['smartmonemail']);
+ // Send sig HUP to smartd, rereads the config file
+ shell_exec("/usr/bin/killall -HUP smartd");
}
-
- config_unlock();
-
- // Write the changes to the smartd.conf file
- update_email($_POST['smartmonemail']);
-
- // Send sig HUP to smartd, rereads the config file
- shell_exec("/usr/bin/killall -HUP smartd");
}
// Was the config changed? if so, print the message
@@ -451,7 +459,7 @@ switch ($action) {
'conveyance'
))->displayAsRadio();
- $group->setHelp('Select "Conveyance" for ATA disks only');
+ $group->setHelp('Select "Conveyance" for ATA disks only.');
$section->add($group);
$section->addInput(new Form_Select(
diff --git a/src/usr/local/www/diag_testport.php b/src/usr/local/www/diag_testport.php
index 58444c0..f247b4e 100644
--- a/src/usr/local/www/diag_testport.php
+++ b/src/usr/local/www/diag_testport.php
@@ -285,7 +285,7 @@ $section->addInput(new Form_Select(
'Source Address',
$sourceip,
['' => 'Any'] + get_possible_traffic_source_addresses(true)
-))->setHelp('Select source address for the trace');
+))->setHelp('Select source address for the trace.');
$section->addInput(new Form_Select(
'ipprotocol',
diff --git a/src/usr/local/www/diag_traceroute.php b/src/usr/local/www/diag_traceroute.php
index b130871..342a723 100644
--- a/src/usr/local/www/diag_traceroute.php
+++ b/src/usr/local/www/diag_traceroute.php
@@ -160,21 +160,21 @@ $section->addInput(new Form_Select(
'IP Protocol',
$ipproto,
array('ipv4' => 'IPv4', 'ipv6' => 'IPv6')
-))->setHelp('Select the protocol to use');
+))->setHelp('Select the protocol to use.');
$section->addInput(new Form_Select(
'sourceip',
'Source Address',
$sourceip,
array('any' => gettext('Any')) + get_possible_traffic_source_addresses(true)
-))->setHelp('Select source address for the trace');
+))->setHelp('Select source address for the trace.');
$section->addInput(new Form_Select(
'ttl',
- 'Maximum nuber of hops',
+ 'Maximum number of hops',
$ttl,
array_combine(range(1, MAX_TTL), range(1, MAX_TTL))
-))->setHelp('Select the maximum number of network hops to trace');
+))->setHelp('Select the maximum number of network hops to trace.');
$section->addInput(new Form_Checkbox(
'resolve',
diff --git a/src/usr/local/www/firewall_aliases_edit.php b/src/usr/local/www/firewall_aliases_edit.php
index 5d2ac60..ea60a73 100755
--- a/src/usr/local/www/firewall_aliases_edit.php
+++ b/src/usr/local/www/firewall_aliases_edit.php
@@ -175,16 +175,10 @@ if ($_POST) {
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
- $x = is_validaliasname($_POST['name']);
- if (!isset($x)) {
- $input_errors[] = gettext("Reserved word used for alias name.");
- } else if ($_POST['type'] == "port" && (getservbyname($_POST['name'], "tcp") || getservbyname($_POST['name'], "udp"))) {
- $input_errors[] = gettext("Reserved word used for alias name.");
- } else {
- if (is_validaliasname($_POST['name']) == false) {
- $input_errors[] = sprintf(gettext("The alias name must be less than 32 characters long, may not consist of only numbers, may not consist of only underscores, and may only contain the following characters: %s"), 'a-z, A-Z, 0-9, _');
- }
+ if (!is_validaliasname($_POST['name'])) {
+ $input_errors[] = invalidaliasnamemsg($_POST['name']);
}
+
/* check for name conflicts */
foreach ($a_aliases as $key => $alias) {
if (($alias['name'] == $_POST['name']) && (empty($a_aliases[$id]) || ($key != $id))) {
@@ -212,6 +206,7 @@ if ($_POST) {
$address = array();
$final_address_details = array();
$alias['name'] = $_POST['name'];
+ $alias['type'] = $_POST['type'];
if (preg_match("/urltable/i", $_POST['type'])) {
$address = "";
@@ -225,7 +220,7 @@ if ($_POST) {
$alias['updatefreq'] = $_POST['address_subnet0'] ? $_POST['address_subnet0'] : 7;
if (!is_URL($alias['url']) || empty($alias['url'])) {
$input_errors[] = gettext("A valid URL must be provided.");
- } elseif (!process_alias_urltable($alias['name'], $alias['url'], 0, true, true)) {
+ } elseif (!process_alias_urltable($alias['name'], $alias['type'], $alias['url'], 0, true, true)) {
$input_errors[] = gettext("Unable to fetch usable data from URL") . " " . htmlspecialchars($alias['url']);
}
if ($_POST["detail0"] <> "") {
@@ -607,10 +602,13 @@ $help = array(
// Tab type specific patterns.
// Intentionally loose (valid character check only, no pattern recognition).
-// Can be tightend up with pattern recognition as desired for each tab type.
+// Can be tightened up with pattern recognition as desired for each tab type.
+// Network and host types allow an optional CIDR following the address or an address range using dash separator,
+// and there may be multiple items separated by spaces - "192.168.1.0/24 192.168.2.4-192.168.2.19"
+// On submit, strings like that are parsed and expanded into the appropriate individual entries and then validated.
$pattern_str = array(
- 'network' => '[a-zA-Z0-9_:.-]+', // Alias Name, Host Name, IP Address, FQDN, Network or IP Address Range
- 'host' => '[a-zA-Z0-9_:.-]+', // Alias Name, Host Name, IP Address, FQDN
+ 'network' => '[a-zA-Z0-9_:.-]+(/[0-9]+)?( [a-zA-Z0-9_:.-]+(/[0-9]+)?)*', // Alias Name, Host Name, IP Address, FQDN, Network or IP Address Range
+ 'host' => '[a-zA-Z0-9_:.-]+(/[0-9]+)?( [a-zA-Z0-9_:.-]+(/[0-9]+)?)*', // Alias Name, Host Name, IP Address, FQDN
'port' => '[a-zA-Z0-9_:]+', // Alias Name, Port Number, or Port Number Range
'url' => '.*', // Alias Name or URL
'url_ports' => '.*', // Alias Name or URL
@@ -730,7 +728,7 @@ while ($counter < count($addresses)) {
$group->add(new Form_IpAddress(
'address' . $counter,
- 'Address',
+ $tab == 'port' ? 'Port':'Address',
$address
))->addMask('address_subnet' . $counter, $address_subnet)->setWidth(4)->setPattern($pattern_str[$tab]);
@@ -777,8 +775,12 @@ events.push(function() {
disable_subnets = (tab == 'host') || (tab == 'port') || (tab == 'url') || (tab == 'url_ports');
+ // Enable/disable address_subnet so its value gets POSTed or not, as appropriate.
$("[id^='address_subnet']").prop("disabled", disable_subnets);
+ // Show or hide the slash plus address_subnet field so the user does not even see it if it is not relevant.
+ hideMask('address_subnet', disable_subnets);
+
// Set the help text to match the tab
var helparray = <?=json_encode($help);?>;
$('.helptext').html(helparray[tab]);
diff --git a/src/usr/local/www/firewall_aliases_import.php b/src/usr/local/www/firewall_aliases_import.php
index 77b2adf..9912948 100755
--- a/src/usr/local/www/firewall_aliases_import.php
+++ b/src/usr/local/www/firewall_aliases_import.php
@@ -94,8 +94,8 @@ if ($_POST['aliasimport'] != "") {
do_input_validation($_POST, $reqdfields, $reqdfieldsn, $input_errors);
- if (is_validaliasname($_POST['name']) == false) {
- $input_errors[] = sprintf(gettext("The alias name may only consist of the characters %s"), "a-z, A-Z, 0-9, _.");
+ if (!is_validaliasname($_POST['name'])) {
+ $input_errors[] = invalidaliasnamemsg($_POST['name']);
}
/* check for name duplicates */
@@ -216,7 +216,7 @@ $section->addInput(new Form_Textarea(
$_POST["aliasimport"]
))->setHelp('Paste in the aliases to '.
'import separated by a carriage return. Common examples are lists of IPs, '.
- 'networks, blacklists, etc.The list may contain IP addresses, with or without '.
+ 'networks, blacklists, etc. The list may contain IP addresses, with or without '.
'CIDR prefix, IP ranges, blank lines (ignored) and an optional description after '.
'each IP. e.g.:</span><ul><li>172.16.1.2</li><li>172.16.0.0/24</li><li>10.11.12.100-'.
'10.11.12.200</li><li>192.168.1.254 Home router</li><li>10.20.0.0/16 Office '.
diff --git a/src/usr/local/www/firewall_nat.php b/src/usr/local/www/firewall_nat.php
index e7f370e..6158c02 100644
--- a/src/usr/local/www/firewall_nat.php
+++ b/src/usr/local/www/firewall_nat.php
@@ -264,11 +264,22 @@ foreach ($a_nat as $natent):
display_separator($separators, $nnats, $columns_in_table);
}
+ $localport = $natent['local-port'];
+
+ list($dstbeginport, $dstendport) = explode("-", $natent['destination']['port']);
+
+ if ($dstendport) {
+ $localendport = $natent['local-port'] + $dstendport - $dstbeginport;
+ $localport .= '-' . $localendport;
+ }
+
$alias = rule_columns_with_alias(
$natent['source']['address'],
pprint_port($natent['source']['port']),
$natent['destination']['address'],
- pprint_port($natent['destination']['port'])
+ pprint_port($natent['destination']['port']),
+ $natent['target'],
+ $localport
);
/* if user does not have access to edit an interface skip on to the next record */
@@ -397,22 +408,40 @@ foreach ($a_nat as $natent):
endif;
?>
</td>
+ <td>
+<?php
+ if (isset($alias['target'])):
+?>
+ <a href="/firewall_aliases_edit.php?id=<?=$alias['target']?>" data-toggle="popover" data-trigger="hover focus" title="<?=gettext('Alias details')?>" data-content="<?=alias_info_popup($alias['target'])?>" data-html="true">
+<?php
+ endif;
+?>
- <td >
<?=str_replace('_', ' ', htmlspecialchars($natent['target']))?>
+<?php
+ if (isset($alias['target'])):
+?>
+ </a>
+<?php
+ endif;
+?>
</td>
<td>
<?php
- $localport = $natent['local-port'];
-
- list($dstbeginport, $dstendport) = explode("-", $natent['destination']['port']);
-
- if ($dstendport) {
- $localendport = $natent['local-port'] + $dstendport - $dstbeginport;
- $localport .= '-' . $localendport;
- }
+ if (isset($alias['targetport'])):
+?>
+ <a href="/firewall_aliases_edit.php?id=<?=$alias['targetport']?>" data-toggle="popover" data-trigger="hover focus" title="<?=gettext('Alias details')?>" data-content="<?=alias_info_popup($alias['targetport'])?>" data-html="true">
+<?php
+ endif;
?>
<?=str_replace('_', ' ', htmlspecialchars(pprint_port($localport)))?>
+<?php
+ if (isset($alias['targetport'])):
+?>
+ </a>
+<?php
+ endif;
+?>
</td>
<td>
diff --git a/src/usr/local/www/firewall_nat_1to1.php b/src/usr/local/www/firewall_nat_1to1.php
index 22aae72..4ec0a24 100644
--- a/src/usr/local/www/firewall_nat_1to1.php
+++ b/src/usr/local/www/firewall_nat_1to1.php
@@ -286,7 +286,7 @@ display_top_tabs($tab_array);
<div class="infoblock">
<?php print_info_box(gettext('Depending on the way the WAN connection is setup, this may also need a ') . '<a href="firewall_virtual_ip.php">' .
- gettext("Virtual IP") . '</a>' . '<br />' .
+ gettext("Virtual IP") . '</a>.' . '<br />' .
gettext('If a 1:1 NAT entry is added for any of the interface IPs on this system, ' .
'it will make this system inaccessible on that IP address. i.e. if ' .
'the WAN IP address is used, any services on this system (IPsec, OpenVPN server, etc.) ' .
diff --git a/src/usr/local/www/firewall_nat_edit.php b/src/usr/local/www/firewall_nat_edit.php
index 3a77963..e36e33b 100644
--- a/src/usr/local/www/firewall_nat_edit.php
+++ b/src/usr/local/www/firewall_nat_edit.php
@@ -289,6 +289,10 @@ if ($_POST) {
$input_errors[] = sprintf(gettext("\"%s\" is not a valid redirect target IP address or host alias."), $_POST['localip']);
}
+ if ($_POST['localip'] && is_ipaddrv6($_POST['localip'])) {
+ $input_errors[] = sprintf(gettext("Redirect target IP must be IPv4."));
+ }
+
if ($_POST['srcbeginport'] && !is_portoralias($_POST['srcbeginport'])) {
$input_errors[] = sprintf(gettext("%s is not a valid start source port. It must be a port alias or integer between 1 and 65535."), $_POST['srcbeginport']);
}
@@ -316,6 +320,9 @@ if ($_POST) {
if (($_POST['src'] && !is_ipaddroralias($_POST['src']))) {
$input_errors[] = sprintf(gettext("%s is not a valid source IP address or alias."), $_POST['src']);
}
+ if ($_POST['src'] && is_ipaddrv6($_POST['src'])) {
+ $input_errors[] = sprintf(gettext("Source must be IPv4."));
+ }
if (($_POST['srcmask'] && !is_numericint($_POST['srcmask']))) {
$input_errors[] = gettext("A valid source bit count must be specified.");
}
@@ -325,6 +332,9 @@ if ($_POST) {
if (($_POST['dst'] && !is_ipaddroralias($_POST['dst']))) {
$input_errors[] = sprintf(gettext("%s is not a valid destination IP address or alias."), $_POST['dst']);
}
+ if ($_POST['dst'] && is_ipaddrv6($_POST['dst'])) {
+ $input_errors[] = sprintf(gettext("Destination must be IPv4."));
+ }
if (($_POST['dstmask'] && !is_numericint($_POST['dstmask']))) {
$input_errors[] = gettext("A valid destination bit count must be specified.");
}
@@ -597,6 +607,9 @@ function build_dsttype_list() {
if (is_array($config['virtualip']['vip'])) {
foreach ($config['virtualip']['vip'] as $sn) {
+ if (is_ipaddrv6($sn['subnet'])) {
+ continue;
+ }
if ($sn['mode'] == "proxyarp" && $sn['type'] == "network") {
if (isset($sn['noexpand'])) {
continue;
diff --git a/src/usr/local/www/firewall_nat_npt_edit.php b/src/usr/local/www/firewall_nat_npt_edit.php
index 907b55a..4ce89be 100644
--- a/src/usr/local/www/firewall_nat_npt_edit.php
+++ b/src/usr/local/www/firewall_nat_npt_edit.php
@@ -245,7 +245,8 @@ $section->addInput(new Form_Checkbox(
$section->addInput(new Form_IpAddress(
'src',
'Address',
- $pconfig['src']
+ $pconfig['src'],
+ 'V6'
))->addMask('srcmask', $pconfig['srcmask'])->setHelp('Internal (LAN) ULA IPv6 Prefix for the Network Prefix translation. ' .
'The prefix size specified for the internal IPv6 prefix will be applied to the external prefix.');
@@ -259,7 +260,8 @@ $section->addInput(new Form_Checkbox(
$section->addInput(new Form_IpAddress(
'dst',
'Address',
- $pconfig['dst']
+ $pconfig['dst'],
+ 'V6'
))->addMask('dstmask', $pconfig['dstmask'])->setHelp('Global Unicast routable IPv6 prefix');
$section->addInput(new Form_Input(
diff --git a/src/usr/local/www/firewall_nat_out_edit.php b/src/usr/local/www/firewall_nat_out_edit.php
index c713988..c0c448a 100644
--- a/src/usr/local/www/firewall_nat_out_edit.php
+++ b/src/usr/local/www/firewall_nat_out_edit.php
@@ -717,6 +717,9 @@ events.push(function() {
if ($('#destination_type').find(":selected").val() == "network") {
disableInput('destination', false);
disableInput('destination_subnet', false);
+ $('#destination, #source').autocomplete({
+ source: addressarray
+ });
} else {
$('#destination').val("");
disableInput('destination', true);
@@ -801,7 +804,7 @@ events.push(function() {
source: addressarray
});
- $('#dstbeginport_cust, #sourceport, #destination, #dstport').autocomplete({
+ $('#sourceport, #dstport').autocomplete({
source: customarray
});
});
diff --git a/src/usr/local/www/firewall_rules.php b/src/usr/local/www/firewall_rules.php
index 641e50d..4b24d6b 100644
--- a/src/usr/local/www/firewall_rules.php
+++ b/src/usr/local/www/firewall_rules.php
@@ -660,8 +660,8 @@ foreach ($a_filter as $filteri => $filterent):
$sched_caption_escaped . '" data-html="true">';
$schedule_span_end = "</a>";
}
+ $idx++;
}
- $idx++;
}
$printicon = false;
$alttext = "";
@@ -889,7 +889,7 @@ if ($seprows[$nrules]) {
}
printf(gettext("%sClick the anchor icon %s to move checked rules before the clicked row. Hold down " .
- "the shift key and click to move the rules after the clicked row"), '<br /><br />', '<i class="fa fa-anchor"></i>')
+ "the shift key and click to move the rules after the clicked row."), '<br /><br />', '<i class="fa fa-anchor"></i>')
?>
</div>
</div>
diff --git a/src/usr/local/www/firewall_rules_edit.php b/src/usr/local/www/firewall_rules_edit.php
index 49d93f6..39cc9f0 100644
--- a/src/usr/local/www/firewall_rules_edit.php
+++ b/src/usr/local/www/firewall_rules_edit.php
@@ -2065,7 +2065,7 @@ events.push(function() {
// ---------- Autocomplete --------------------------------------------------------------------
- var addressarray = <?= json_encode(get_alias_list(array("host", "network", "openvpn", "urltable"))) ?>;
+ var addressarray = <?= json_encode(get_alias_list(array("host", "network", "openvpn", "url", "urltable"))) ?>;
var customarray = <?= json_encode(get_alias_list(array("port", "url_ports", "urltable_ports"))) ?>;
$('#src, #dst').autocomplete({
diff --git a/src/usr/local/www/firewall_schedule_edit.php b/src/usr/local/www/firewall_schedule_edit.php
index 5ef540e..2a81be7 100644
--- a/src/usr/local/www/firewall_schedule_edit.php
+++ b/src/usr/local/www/firewall_schedule_edit.php
@@ -125,13 +125,8 @@ if ($_POST) {
$input_errors[] = gettext("Schedule name cannot be blank.");
}
- $x = is_validaliasname($_POST['name']);
- if (!isset($x)) {
- $input_errors[] = gettext("Reserved word used for schedule name.");
- } else {
- if (is_validaliasname($_POST['name']) == false) {
- $input_errors[] = sprintf(gettext("The schedule name must be less than 32 characters long, may not consist of only numbers, may not consist of only underscores, and may only contain the following characters: %s"), 'a-z, A-Z, 0-9, _');
- }
+ if (!is_validaliasname($_POST['name'])) {
+ $input_errors[] = invalidaliasnamemsg($_POST['name'], gettext("schedule"));
}
/* check for name conflicts */
@@ -629,21 +624,21 @@ if ($getSchedule) {
null,
'text',
$tempFriendlyTime
- ))->setWidth(2)->setHelp($counter == $maxrows ? 'Day(s)':'');
+ ))->setWidth(2)->setReadonly()->setHelp($counter == $maxrows ? 'Day(s)':'');
$group->add(new Form_Input(
'starttime' . $counter,
null,
'text',
$starttime
- ))->setWidth(2)->setHelp($counter == $maxrows ? 'Start time':'');
+ ))->setWidth(2)->setReadonly()->setHelp($counter == $maxrows ? 'Start time':'');
$group->add(new Form_Input(
'stoptime' . $counter,
null,
'text',
$stoptime
- ))->setWidth(2)->setHelp($counter == $maxrows ? 'Stop time':'');
+ ))->setWidth(2)->setReadonly()->setHelp($counter == $maxrows ? 'Stop time':'');
$group->add(new Form_Input(
'timedescr' . $counter,
@@ -1132,15 +1127,15 @@ function insertElements(tempFriendlyTime, starttimehour, starttimemin, stoptimeh
'<div class="form-group schedulegrp' + counter + '">' +
'<label for="tempFriendlyTime@" class="col-sm-2 control-label"></label>' +
'<div class="col-sm-2">' +
- '<input class="form-control" name="tempFriendlyTime@" id="tempFriendlyTime@" type="text" value="' + tempFriendlyTime + '"/>' +
+ '<input class="form-control" name="tempFriendlyTime@" id="tempFriendlyTime@" type="text" readonly="readonly" value="' + tempFriendlyTime + '"/>' +
'<span class="help-block">Day(s)</span>' +
'</div>' +
'<div class="col-sm-2">' +
- '<input class="form-control" name="starttime@" id="starttime@" type="text" value="' + starttimehour + ':' + starttimemin + '"/>' +
+ '<input class="form-control" name="starttime@" id="starttime@" type="text" readonly="readonly" value="' + starttimehour + ':' + starttimemin + '"/>' +
'<span class="help-block">Start time</span>' +
'</div>' +
'<div class="col-sm-2">' +
- '<input class="form-control" name="stoptime@" id="stoptime@" type="text" value="' + stoptimehour + ':' + stoptimemin + '"/>' +
+ '<input class="form-control" name="stoptime@" id="stoptime@" type="text" readonly="readonly" value="' + stoptimehour + ':' + stoptimemin + '"/>' +
'<span class="help-block">Stop time</span>' +
'</div>' +
'<div class="col-sm-2">' +
diff --git a/src/usr/local/www/firewall_shaper_queues.php b/src/usr/local/www/firewall_shaper_queues.php
index 283f776..1c6964b 100644
--- a/src/usr/local/www/firewall_shaper_queues.php
+++ b/src/usr/local/www/firewall_shaper_queues.php
@@ -91,6 +91,7 @@ foreach ($qlist as $queue => $qkey) {
}
}
$tree .= "</ul>";
+$output = "";
if ($_GET) {
if ($_GET['queue']) {
diff --git a/src/usr/local/www/firewall_shaper_vinterface.php b/src/usr/local/www/firewall_shaper_vinterface.php
index 0830382..6a87e75 100644
--- a/src/usr/local/www/firewall_shaper_vinterface.php
+++ b/src/usr/local/www/firewall_shaper_vinterface.php
@@ -257,7 +257,7 @@ if ($_POST) {
if ($addnewpipe) {
if (!empty($dummynet_pipe_list[$qname])) {
- $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter");
+ $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter.");
} else {
$dnpipe =& new dnpipe_class();
@@ -283,7 +283,7 @@ if ($_POST) {
}
} else if ($parentqueue) { /* Add a new queue */
if (!empty($dummynet_pipe_list[$qname])) {
- $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter");
+ $input_errors[] = gettext("A child queue cannot be named the same as a parent limiter.");
} else if ($dnpipe) {
$tmppath =& $dnpipe->GetLink();
array_push($tmppath, $qname);
@@ -432,9 +432,7 @@ display_top_tabs($tab_array);
<td>
<?php
-if ($dfltmsg) {
- print_info_box($dn_default_shaper_msg, 'info');
-} else {
+if (!$dfltmsg) {
// Add global buttons
if (!$dontshow || $newqueue) {
if ($can_add && ($action != "add")) {
@@ -481,7 +479,17 @@ if ($dfltmsg) {
</tbody>
</table>
</div>
-
+<?php
+if ($dfltmsg) {
+?>
+<div>
+ <div class="infoblock">
+ <?php print_info_box($dn_default_shaper_msg, 'info', false); ?>
+ </div>
+</div>
+<?php
+}
+?>
<script type="text/javascript">
//<![CDATA[
events.push(function() {
diff --git a/src/usr/local/www/guiconfig.inc b/src/usr/local/www/guiconfig.inc
index 7e1645a..578364b 100644
--- a/src/usr/local/www/guiconfig.inc
+++ b/src/usr/local/www/guiconfig.inc
@@ -1129,7 +1129,7 @@ function alias_info_popup($alias_id) {
return $content;
}
-function rule_columns_with_alias($src, $srcport, $dst, $dstport) {
+function rule_columns_with_alias($src, $srcport, $dst, $dstport, $target="", $targetport="") {
global $config;
if ($config['aliases']['alias'] == "" || !is_array($config['aliases']['alias'])) {
@@ -1150,6 +1150,12 @@ function rule_columns_with_alias($src, $srcport, $dst, $dstport) {
if ($alias_name['name'] == $dstport) {
$columns['dstport'] = $alias_id;
}
+ if ($alias_name['name'] == $target) {
+ $columns['target'] = $alias_id;
+ }
+ if ($alias_name['name'] == $targetport) {
+ $columns['targetport'] = $alias_id;
+ }
}
return $columns;
diff --git a/src/usr/local/www/head.inc b/src/usr/local/www/head.inc
index 4aa2963..8c3b980 100644
--- a/src/usr/local/www/head.inc
+++ b/src/usr/local/www/head.inc
@@ -74,7 +74,7 @@ if (isset($config['system']['webgui']['webguicss'])) {
}
}
-// set default colmns to two if unset
+// set default columns to two if unset
if (!isset($config['system']['webgui']['dashboardcolumns'])) {
$config['system']['webgui']['dashboardcolumns'] = 2;
}
@@ -285,6 +285,7 @@ $services_menu = array();
$services_menu[] = array(gettext("Captive Portal"), "/services_captiveportal.php");
$services_menu[] = array(gettext("DNS Forwarder"), "/services_dnsmasq.php");
$services_menu[] = array(gettext("DNS Resolver"), "/services_unbound.php");
+$services_menu[] = array(gettext("DNS Resolver Overrides"), "/services_unbound_overrides.php");
$services_menu[] = array(gettext("DHCP Relay"), "/services_dhcp_relay.php");
$services_menu[] = array(gettext("DHCPv6 Relay"), "/services_dhcpv6_relay.php");
@@ -444,7 +445,7 @@ if (($pagename === "index.php") && ($numColumns > 2)) {
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
- <a class="navbar-brand" href="/"><img src="/logo.png" alt="pfSense" /></a>
+ <a class="navbar-brand" href="/"><img src="/logo.png" alt="pfSense" title="<?=$config['system']['hostname'] . '.' . $config['system']['domain']?>"/></a>
</div>
<div class="collapse navbar-collapse" id="pf-navbar">
<ul class="nav navbar-nav">
@@ -665,10 +666,10 @@ if (are_notices_pending()):?>
<li>
<b>
<?php if (!empty($notice['url'])):?>
- <a href="<?=$notice['url']?>"><?=$notice['id']?></a> -
+ <a href="<?=htmlspecialchars($notice['url'])?>"><?=htmlspecialchars($notice['id'])?></a> -
<?php endif;?>
</b>
- <?=$notice['notice']?>
+ <?=htmlspecialchars($notice['notice'])?>
<i>@ <?=date('Y-m-d H:i:s', $notice['time'])?></i>
</li>
<?php endforeach;?>
diff --git a/src/usr/local/www/index.php b/src/usr/local/www/index.php
index f53769d..1f2eac0 100644
--- a/src/usr/local/www/index.php
+++ b/src/usr/local/www/index.php
@@ -90,7 +90,7 @@ if ($g['disablecrashreporter'] != true) {
// Check to see if we have a crash report
$x = 0;
if (file_exists("/tmp/PHP_errors.log")) {
- $total = `/usr/bin/grep -vi warning /tmp/PHP_errors.log | /usr/bin/wc -l | /usr/bin/awk '{ print $1 }'`;
+ $total = `/bin/cat /tmp/PHP_errors.log | /usr/bin/wc -l | /usr/bin/awk '{ print $1 }'`;
if ($total > 0) {
$x++;
}
diff --git a/src/usr/local/www/interfaces.php b/src/usr/local/www/interfaces.php
index dc7814f..9a76f94 100644
--- a/src/usr/local/www/interfaces.php
+++ b/src/usr/local/www/interfaces.php
@@ -456,7 +456,7 @@ if ($_POST['apply']) {
/* call interface_track6_configure with linkup true so
IPv6 IPs are added back. dhcp6c needs a HUP. Can't
just call interface_configure with linkup true as
- that skips bridge membership addition.
+ that skips bridge membership addition.
*/
$wancfg = $config['interfaces'][$ifapply];
interface_track6_configure($ifapply, $wancfg, true);
@@ -1788,7 +1788,7 @@ if (count($mediaopts_list) > 0) {
$section->addInput(new Form_Select(
'mediaopt',
'Speed and Duplex',
- rtrim($mediaopt_from_config),
+ rtrim($config['interfaces'][$if]['media'] . ' ' . $config['interfaces'][$if]['mediaopt']),
build_mediaopts_list()
))->setHelp('Explicitly set speed and duplex mode for this interface.' . '<br />' .
'WARNING: MUST be set to autoselect (automatically negotiate speed) unless the port this interface connects to has its speed and duplex forced.');
@@ -1822,7 +1822,7 @@ $group->add(new Form_Button(
))->setAttribute('type','button')->addClass('btn-success')->setAttribute('data-target', '#newgateway')->setAttribute('data-toggle', 'modal');
$group->setHelp('If this interface is an Internet connection, select an existing Gateway from the list or add a new one using the "Add" button.' . '<br />' .
- 'On local LANs the upstream gateway should be "none". ' .
+ 'On local area network interfaces the upstream gateway should be "none". ' .
gettext('Gateways can be managed by ') . '<a target="_blank" href="system_gateways.php">' . gettext(" clicking here") . '</a>.');
$section->add($group);
@@ -2454,7 +2454,7 @@ $section->addInput(new Form_Select(
'IPv6 Interface',
$pconfig['track6-interface'],
build_ipv6interface_list()
-))->setHelp('selects the dynamic IPv6 WAN interface to track for configuration');
+))->setHelp('Selects the dynamic IPv6 WAN interface to track for configuration.');
if ($pconfig['track6-prefix-id'] == "") {
$pconfig['track6-prefix-id'] = 0;
@@ -2521,7 +2521,7 @@ $section->addInput(new Form_Input(
'Phone number',
'text',
$pconfig['phone']
-))->setHelp('Typically *99# for GSM networks and #777 for CDMA networks');
+))->setHelp('Typically *99# for GSM networks and #777 for CDMA networks.');
$section->addInput(new Form_Input(
'apn',
@@ -2561,7 +2561,7 @@ $section->addInput(new Form_Button(
'Advanced PPP',
isset($pconfig['pppid']) ? 'interfaces_ppps_edit.php?id=' . htmlspecialchars($pconfig['pppid']) : 'interfaces_ppps_edit.php',
'fa-cog'
-))->setAttribute('type','button')->addClass('btn-info')->setAttribute('id')->setHelp('Create a new PPP configuration');
+))->setAttribute('type','button')->addClass('btn-info')->setAttribute('id')->setHelp('Create a new PPP configuration.');
$form->add($section);
@@ -2588,7 +2588,7 @@ $section->addInput(new Form_Input(
'Service name',
'text',
$pconfig['provider']
-))->setHelp('This field can usually be left empty');
+))->setHelp('This field can usually be left empty.');
$section->addInput(new Form_Checkbox(
'pppoe_dialondemand',
@@ -2612,7 +2612,7 @@ $section->addInput(new Form_Select(
'Periodic reset',
$pconfig['pppoe-reset-type'],
['' => gettext('Disabled'), 'custom' => gettext('Custom'), 'preset' => gettext('Pre-set')]
-))->setHelp('Select a reset timing type');
+))->setHelp('Select a reset timing type.');
$group = new Form_Group('Custom reset');
$group->addClass('pppoecustom');
@@ -2633,7 +2633,6 @@ $group->add(new Form_Input(
[min => 0, max => 59]
))->setHelp('Minutes (0-59)');
-// ToDo: Need a date-picker here
$group->add(new Form_Input(
'pppoe_resetdate',
null,
@@ -3671,6 +3670,8 @@ events.push(function() {
setPresets($('input[name=adv_dhcp_pt_values]:checked').val());
});
+ $('#pppoe_resetdate').datepicker();
+
});
//]]>
</script>
diff --git a/src/usr/local/www/interfaces_assign.php b/src/usr/local/www/interfaces_assign.php
index 3b82106..73d4839 100644
--- a/src/usr/local/www/interfaces_assign.php
+++ b/src/usr/local/www/interfaces_assign.php
@@ -500,11 +500,11 @@ if (file_exists("/var/run/interface_mismatch_reboot_needed")) {
$savemsg = gettext("The system is now rebooting. Please wait.");
$class = "success";
} else {
- $savemsg = gettext("Reboot is needed. Please apply the settings in order to reboot.");
+ $applymsg = gettext("Reboot is needed. Please apply the settings in order to reboot.");
$class = "warning";
}
} else {
- $savemsg = gettext("Interface mismatch detected. Please resolve the mismatch and click 'Apply Changes'. The firewall will reboot afterwards.");
+ $applymsg = gettext("Interface mismatch detected. Please resolve the mismatch and click 'Apply Changes'. The firewall will reboot afterwards.");
$class = "warning";
}
}
@@ -513,6 +513,8 @@ if (file_exists("/tmp/reload_interfaces")) {
echo "<p>\n";
print_apply_box(gettext("The interface configuration has been changed.") . "<br />" . gettext("The changes must be applied for them to take effect."));
echo "<br /></p>\n";
+} elseif ($applymsg) {
+ print_apply_box($applymsg);
} elseif ($savemsg) {
print_info_box($savemsg, $class);
}
diff --git a/src/usr/local/www/interfaces_bridge_edit.php b/src/usr/local/www/interfaces_bridge_edit.php
index 59e19c9..438c930 100644
--- a/src/usr/local/www/interfaces_bridge_edit.php
+++ b/src/usr/local/www/interfaces_bridge_edit.php
@@ -435,7 +435,7 @@ $section->addInput(new Form_Select(
$memberslist['selected'],
$memberslist['list'],
true // Allow multiples
-))->setHelp('Interfaces participating in the bridge');
+))->setHelp('Interfaces participating in the bridge.');
$section->addInput(new Form_Input(
'descr',
@@ -470,14 +470,14 @@ $section->addInput(new Form_Input(
'Cache Size',
'text',
$pconfig['maxaddr']
-))->setHelp('Set the size of the bridge address cache. The default is 2000 entries');
+))->setHelp('Set the size of the bridge address cache. The default is 2000 entries.');
$section->addInput(new Form_Input(
'timeout',
'Cache expire time',
'text',
$pconfig['timeout']
-))->setHelp('Set the timeout of address cache entries to this number of seconds. If seconds is zero, then address cache entries will not be expired. The default is 1200 seconds');
+))->setHelp('Set the timeout of address cache entries to this number of seconds. If seconds is zero, then address cache entries will not be expired. The default is 1200 seconds.');
$spanlist = build_port_list($pconfig['span']);
@@ -487,7 +487,7 @@ $section->addInput(new Form_Select(
$spanlist['selected'],
$spanlist['list'],
true
-))->setHelp('Add the interface named by interface as a span port on the bridge. Span ports transmit a copy of every frame received by the bridge.' .
+))->setHelp('Add the interface named by interface as a span port on the bridge. Span ports transmit a copy of every frame received by the bridge. ' .
'This is most useful for snooping a bridged network passively on another host connected to one of the span ports of the bridge. <br />' .
'%sThe span interface cannot be part of the bridge member interfaces.%s', ['<strong>', '</strong>']);
@@ -584,7 +584,7 @@ $section->addInput(new Form_Select(
$edgelist['selected'],
$edgelist['list'],
true
-))->setHelp('Enable Spanning Tree Protocol on interface. The if_bridge(4) driver has support for the IEEE 802.1D Spanning Tree Protocol (STP).' .
+))->setHelp('Enable Spanning Tree Protocol on interface. The if_bridge(4) driver has support for the IEEE 802.1D Spanning Tree Protocol (STP). ' .
'STP is used to detect and remove loops in a network topology.');
$section->addInput(new Form_Input(
@@ -609,7 +609,7 @@ $section->addInput(new Form_Input(
'number',
$pconfig['hellotime'],
['placeholder' => 2, 'min' => 1, 'max' => 2, 'step' => '0.1']
-))->setHelp('Set the time in seconds between broadcasting of Spanning Tree Protocol configuration messages. The hello time may only be changed when operating in legacy STP mode.' .
+))->setHelp('Set the time in seconds between broadcasting of Spanning Tree Protocol configuration messages. The hello time may only be changed when operating in legacy STP mode. ' .
'The default is 2 seconds. The minimum is 1 second and the maximum is 2 seconds.');
$section->addInput(new Form_Input(
diff --git a/src/usr/local/www/interfaces_gif_edit.php b/src/usr/local/www/interfaces_gif_edit.php
index e602070..43d3a4b 100644
--- a/src/usr/local/www/interfaces_gif_edit.php
+++ b/src/usr/local/www/interfaces_gif_edit.php
@@ -238,7 +238,7 @@ $section->addInput(new Form_Select(
'GIF tunnel subnet',
$pconfig['tunnel-remote-net'],
array_combine(range(128, 1, -1), range(128, 1, -1))
-))->setHelp('The subnet is used for determining the network that is tunnelled');
+))->setHelp('The subnet is used for determining the network that is tunnelled.');
$section->addInput(new Form_Checkbox(
'link0',
diff --git a/src/usr/local/www/interfaces_gre_edit.php b/src/usr/local/www/interfaces_gre_edit.php
index 3e379ab..637f806 100644
--- a/src/usr/local/www/interfaces_gre_edit.php
+++ b/src/usr/local/www/interfaces_gre_edit.php
@@ -234,7 +234,7 @@ $section->addInput(new Form_Select(
'GRE tunnel subnet',
$pconfig['tunnel-remote-net'],
array_combine(range(128, 1, -1), range(128, 1, -1))
-))->setHelp('The subnet is used for determining the network that is tunnelled');
+))->setHelp('The subnet is used for determining the network that is tunnelled.');
$section->addInput(new Form_Checkbox(
'link0',
diff --git a/src/usr/local/www/interfaces_groups_edit.php b/src/usr/local/www/interfaces_groups_edit.php
index 4fcaab6..cae5fb8 100644
--- a/src/usr/local/www/interfaces_groups_edit.php
+++ b/src/usr/local/www/interfaces_groups_edit.php
@@ -206,19 +206,6 @@ if ($input_errors) {
?>
<div id="inputerrors"></div>
<?php
-$tab_array = array();
-$tab_array[0] = array(gettext("Interface Assignments"), false, "interfaces_assign.php");
-$tab_array[1] = array(gettext("Interface Groups"), true, "interfaces_groups.php");
-$tab_array[2] = array(gettext("Wireless"), false, "interfaces_wireless.php");
-$tab_array[3] = array(gettext("VLANs"), false, "interfaces_vlan.php");
-$tab_array[4] = array(gettext("QinQs"), false, "interfaces_qinq.php");
-$tab_array[5] = array(gettext("PPPs"), false, "interfaces_ppps.php");
-$tab_array[7] = array(gettext("GRE"), false, "interfaces_gre.php");
-$tab_array[8] = array(gettext("GIF"), false, "interfaces_gif.php");
-$tab_array[9] = array(gettext("Bridges"), false, "interfaces_bridge.php");
-$tab_array[10] = array(gettext("LAGG"), false, "interfaces_lagg.php");
-display_top_tabs($tab_array);
-
$form = new Form;
$section = new Form_Section('Interface Group Configuration');
@@ -229,7 +216,7 @@ $section->addInput(new Form_Input(
$pconfig['ifname'],
['placeholder' => 'Group Name']
))->setWidth(6)->setHelp('No numbers or spaces are allowed. '.
- 'Only characters in a-zA-Z');
+ 'Only characters: a-zA-Z');
$section->addInput(new Form_Input(
'descr',
@@ -238,7 +225,7 @@ $section->addInput(new Form_Input(
$pconfig['descr'],
['placeholder' => 'Group Description']
))->setWidth(6)->setHelp('A group description may be entered '.
- 'here for administrative reference (not parsed)');
+ 'here for administrative reference (not parsed).');
$section->addInput(new Form_Select(
'members',
diff --git a/src/usr/local/www/interfaces_lagg_edit.php b/src/usr/local/www/interfaces_lagg_edit.php
index 926ef3e..f82d99f 100644
--- a/src/usr/local/www/interfaces_lagg_edit.php
+++ b/src/usr/local/www/interfaces_lagg_edit.php
@@ -77,7 +77,7 @@ $protohelp =
'<li>' .
'<strong>' . $laggprotosuc[0] . '</strong><br />' .
gettext('This protocol is intended to do nothing: it disables any ' .
- 'traffic without disabling the lagg interface itself') .
+ 'traffic without disabling the lagg interface itself.') .
'</li>' .
'<li>' .
'<strong>' . $laggprotosuc[1] . '</strong><br />' .
@@ -113,13 +113,13 @@ $protohelp =
'does not negotiate aggregation with the peer or exchange ' .
'frames to monitor the link. The hash includes the Ethernet ' .
'source and destination address, and, if available, the VLAN ' .
- 'tag, and the IP source and destination address') .
+ 'tag, and the IP source and destination address.') .
'</li>' .
'<li>' .
'<strong>' . $laggprotosuc[5] . '</strong><br />' .
gettext('Distributes outgoing traffic using a round-robin scheduler ' .
'through all active ports and accepts incoming traffic from ' .
- 'any active port') .
+ 'any active port.') .
'</li>' .
'</ul>';
@@ -288,7 +288,7 @@ $section->addInput(new Form_Input(
'Description',
'text',
$pconfig['descr']
-))->setHelp("Enter a description here for reference only. (Not parsed)");
+))->setHelp("Enter a description here for reference only (Not parsed).");
$section->addInput(new Form_Input(
'laggif',
diff --git a/src/usr/local/www/interfaces_ppps_edit.php b/src/usr/local/www/interfaces_ppps_edit.php
index 4d282bd..a451e80 100644
--- a/src/usr/local/www/interfaces_ppps_edit.php
+++ b/src/usr/local/www/interfaces_ppps_edit.php
@@ -97,7 +97,9 @@ if (isset($_POST['id']) && is_numericint($_POST['id'])) {
if (isset($id) && $a_ppps[$id]) {
$pconfig['ptpid'] = $a_ppps[$id]['ptpid'];
- $pconfig['type'] = $a_ppps[$id]['type'];
+ if (!isset($_REQUEST['type'])) {
+ $pconfig['type'] = $a_ppps[$id]['type'];
+ }
$pconfig['interfaces'] = explode(",", $a_ppps[$id]['ports']);
$pconfig['username'] = $a_ppps[$id]['username'];
$pconfig['password'] = base64_decode($a_ppps[$id]['password']);
@@ -396,8 +398,6 @@ if (isset($_POST) && is_array($_POST) && count($_POST) > 0) {
}
$ppp['phone'] = $_POST['phone'];
- $ppp['localip'] = implode(',', $port_data['localip']);
- $ppp['gateway'] = implode(',', $port_data['gateway']);
if (!empty($_POST['connect-timeout'])) {
$ppp['connect-timeout'] = $_POST['connect-timeout'];
} else {
@@ -861,7 +861,7 @@ $section->addInput(new Form_Input(
'Idle Timeout',
'text',
$pconfig['idletimeout']
-))->setHelp('If no incoming or outgoing packets are transmitted for the entered number of seconds the connection is brought down.' .
+))->setHelp('If no incoming or outgoing packets are transmitted for the entered number of seconds the connection is brought down.' . " " .
'When the idle timeout occurs, if the dial-on-demand option is enabled, mpd goes back into dial-on-demand mode. ' .
'Otherwise, the interface is brought down and all associated routes removed.');
@@ -871,7 +871,7 @@ $section->addInput(new Form_Checkbox(
'Disable vjcomp (compression, auto-negotiated by default).',
$pconfig['vjcomp']
))->setHelp('Disable vjcomp(compression) (auto-negotiated by default).' . '<br />' .
- 'This option enables Van Jacobson TCP header compression, which saves several bytes per TCP data packet.' .
+ 'This option enables Van Jacobson TCP header compression, which saves several bytes per TCP data packet.' . " " .
'This option is almost always required. Compression is not effective for TCP connections with enabled modern extensions like time ' .
'stamping or SACK, which modify TCP options between sequential packets.');
@@ -1202,6 +1202,8 @@ events.push(function() {
if ($('providerplan').size() == 0) {
hideInput('providerplan', true);
}
+
+ $('#pppoe_resetdate').datepicker();
});
//]]>
diff --git a/src/usr/local/www/interfaces_qinq_edit.php b/src/usr/local/www/interfaces_qinq_edit.php
index 6c4d04c..ae98a76 100644
--- a/src/usr/local/www/interfaces_qinq_edit.php
+++ b/src/usr/local/www/interfaces_qinq_edit.php
@@ -280,7 +280,7 @@ $section->addInput(new Form_Checkbox(
'Option(s)',
'Adds interface to QinQ interface groups',
$pconfig['autogroup']
-))->setHelp('Allows rules to be written more easily');
+))->setHelp('Allows rules to be written more easily.');
$section->addInput(new Form_Input(
'descr',
@@ -292,7 +292,7 @@ $section->addInput(new Form_Input(
$section->addInput(new Form_StaticText(
'Member(s)',
'Ranges can be specified in the inputs below. Enter a range (2-3) or individual numbers.' . '<br />' .
- 'Click "Duplicate" as many times as needed to add new inputs'
+ 'Click "Duplicate" as many times as needed to add new inputs.'
));
if (isset($id) && $a_qinqs[$id]) {
diff --git a/src/usr/local/www/js/pfSenseHelpers.js b/src/usr/local/www/js/pfSenseHelpers.js
index a675cc6..dadcf9f 100644
--- a/src/usr/local/www/js/pfSenseHelpers.js
+++ b/src/usr/local/www/js/pfSenseHelpers.js
@@ -138,6 +138,19 @@ function hideLabel(text, hide) {
element.parent('div').removeClass('hidden');
}
+// Hides the '/' and the subnet mask of an Ip_Address/subnet_mask group
+function hideMask(name, hide) {
+ if(hide) {
+ $('[id^=' + name + ']').hide();
+ $('[id^=' + name + ']').prev('span').hide();
+ $('[id^=' + name + ']').parent('div').removeClass('input-group');
+ } else {
+ $('[id^=' + name + ']').show();
+ $('[id^=' + name + ']').prev('span').show();
+ $('[id^=' + name + ']').parent('div').addClass('input-group');
+ }
+}
+
// Toggle table row checkboxes and background colors on the pages that use sortable tables:
// /usr/local/www/firewall_nat.php
// /usr/local/www/firewall_nat_1to1.php
diff --git a/src/usr/local/www/load_balancer_virtual_server_edit.php b/src/usr/local/www/load_balancer_virtual_server_edit.php
index 9e49154..97ea70b 100644
--- a/src/usr/local/www/load_balancer_virtual_server_edit.php
+++ b/src/usr/local/www/load_balancer_virtual_server_edit.php
@@ -234,7 +234,7 @@ $section->addInput(new Form_Input(
'number',
$pconfig['port']
))->setHelp('Port that the clients will connect to. All connections to this port will be forwarded to the pool cluster. ' .
- 'If left blank listening ports from the pool will be used.' .
+ 'If left blank listening ports from the pool will be used.' . " " .
'A port alias listed in Firewall -&gt; Aliases may also be specified here.');
if (count($config['load_balancer']['lbpool']) == 0) {
diff --git a/src/usr/local/www/pkg.php b/src/usr/local/www/pkg.php
index 2a34885..c06d613 100755
--- a/src/usr/local/www/pkg.php
+++ b/src/usr/local/www/pkg.php
@@ -515,18 +515,23 @@ if ($savemsg) {
} else if ($column['type'] == "interface") {
echo $column['prefix'] . $iflist[$fieldname] . $column['suffix'];
} else {
+ $display_text = "";
#Check if columnitem has an encoding field declared
if ($column['encoding'] == "base64") {
- echo $column['prefix'] . base64_decode($fieldname) . $column['suffix'];
+ $display_text = $column['prefix'] . base64_decode($fieldname) . $column['suffix'];
#Check if there is a custom info to show when $fieldname is not empty
} else if ($column['listmodeon'] && $fieldname != "") {
- echo $column['prefix'] . gettext($column['listmodeon']). $column['suffix'];
+ $display_text = $column['prefix'] . gettext($column['listmodeon']). $column['suffix'];
#Check if there is a custom info to show when $fieldname is empty
} else if ($column['listmodeoff'] && $fieldname == "") {
- echo $column['prefix'] .gettext($column['listmodeoff']). $column['suffix'];
+ $display_text = $column['prefix'] .gettext($column['listmodeoff']). $column['suffix'];
} else {
- echo $column['prefix'] . $fieldname ." ". $column['suffix'];
+ $display_text = $column['prefix'] . $fieldname ." ". $column['suffix'];
}
+ if (!isset($column['allow_html'])) {
+ $display_text = htmlspecialchars($display_text);
+ }
+ echo $display_text;
}
?>
</td>
diff --git a/src/usr/local/www/pkg_edit.php b/src/usr/local/www/pkg_edit.php
index 651f115..1048f34 100644
--- a/src/usr/local/www/pkg_edit.php
+++ b/src/usr/local/www/pkg_edit.php
@@ -301,7 +301,7 @@ function bootstrapTable($text) {
* the specified element to $group
*/
function display_row($trc, $value, $fieldname, $type, $rowhelper, $description, $ewidth = null) {
- global $text, $group;
+ global $text, $group, $config;
switch ($type) {
case "input":
diff --git a/src/usr/local/www/pkg_mgr.php b/src/usr/local/www/pkg_mgr.php
index 7ce9821..6eb6bc8 100644
--- a/src/usr/local/www/pkg_mgr.php
+++ b/src/usr/local/www/pkg_mgr.php
@@ -144,7 +144,7 @@ function get_pkg_table() {
$pkgtbl .= '</td>' . "\n";
$pkgtbl .= '<td>' . "\n";
- $pkgtbl .= '<a title="' . gettext("Click to install") . '" href="pkg_mgr_install.php?id=' . $index['name'] . '" class="btn btn-success btn-sm"><i class="fa fa-plus icon-embed-btn"></i>Install</a>' . "\n";
+ $pkgtbl .= '<a title="' . gettext("Click to install") . '" href="pkg_mgr_install.php?pkg=' . $index['name'] . '" class="btn btn-success btn-sm"><i class="fa fa-plus icon-embed-btn"></i>Install</a>' . "\n";
if (!$g['disablepackageinfo'] && $index['pkginfolink'] && $index['pkginfolink'] != $index['www']) {
$pkgtbl .= '<a target="_blank" title="' . gettext("View more information") . '" href="' . htmlspecialchars($index['pkginfolink']) . '" class="btn btn-default btn-sm">info</a>' . "\n";
diff --git a/src/usr/local/www/pkg_mgr_install.php b/src/usr/local/www/pkg_mgr_install.php
index 10d58f3..fe683b5 100644
--- a/src/usr/local/www/pkg_mgr_install.php
+++ b/src/usr/local/www/pkg_mgr_install.php
@@ -10,29 +10,29 @@
* are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
- * this list of conditions and the following disclaimer.
+ * this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in
- * the documentation and/or other materials provided with the
- * distribution.
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
*
* 3. All advertising materials mentioning features or use of this software
- * must display the following acknowledgment:
- * "This product includes software developed by the pfSense Project
- * for use in the pfSense software distribution. (http://www.pfsense.org/).
+ * must display the following acknowledgment:
+ * "This product includes software developed by the pfSense Project
+ * for use in the pfSense software distribution. (http://www.pfsense.org/).
*
* 4. The names "pfSense" and "pfSense Project" must not be used to
- * endorse or promote products derived from this software without
- * prior written permission. For written permission, please contact
- * coreteam@pfsense.org.
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * coreteam@pfsense.org.
*
* 5. Products derived from this software may not be called "pfSense"
- * nor may "pfSense" appear in their names without prior written
- * permission of the Electric Sheep Fencing, LLC.
+ * nor may "pfSense" appear in their names without prior written
+ * permission of the Electric Sheep Fencing, LLC.
*
* 6. Redistributions of any form whatsoever must retain the following
- * acknowledgment:
+ * acknowledgment:
*
* "This product includes software developed by the pfSense Project
* for use in the pfSense software distribution (http://www.pfsense.org/).
@@ -97,6 +97,14 @@ if ($_REQUEST['ajax']) {
$response = "";
$code = 0;
+ // If this is an ajax call to get the installed and newst versions, call that function,
+ // JSON encode the result, print it and exit
+ if ($_REQUEST['getversion']) {
+ $firmwareversions = get_system_pkg_version(true);
+ print(json_encode($firmwareversions));
+ exit;
+ }
+
// Check to see if our process is still running
$pidfile = $g['varrun_path'] . '/' . $g['product_name'] . '-upgrade.pid';
$running = "running";
@@ -169,7 +177,7 @@ if ($_REQUEST['ajax']) {
if ($JSONfile != FALSE) {
while (($logline = fgets($JSONfile)) !== false) {
- if (!feof($JSONfile) && (strpos($logline, 'INFO_PROGRESS_TICK') !== false)) {
+ if (!feof($JSONfile) && (strpos($logline, 'INFO_PROGRESS_TICK') !== false)) {
if (strpos($logline, '}}') !== false) {
$progress = $logline;
}
@@ -212,31 +220,50 @@ function waitfor_string_in_file($filename, $string, $timeout) {
return(false);
}
-if ($_POST) {
- if (empty($_POST['id']) && $_POST['mode'] != 'reinstallall') {
+$pkgmode = '';
+if (!empty($_REQUEST['mode'])) {
+ $valid_modes = array(
+ 'reinstallall',
+ 'reinstallpkg',
+ 'delete',
+ 'installed'
+ );
+
+ if (!in_array($_REQUEST['mode'], $valid_modes)) {
header("Location: pkg_mgr_installed.php");
return;
}
- if (isset($_POST['pkgcancel']) || (empty($_POST['id']) && $_POST['mode'] != 'reinstallall')) {
+ $pkgmode = $_REQUEST['mode'];
+}
+
+$confirmed = isset($_POST['confirmed']) && $_POST['confirmed'] == 'true';
+$completed = isset($_POST['completed']) && $_POST['completed'] == 'true';
+
+if (!empty($_REQUEST['id'])) {
+ if ($_REQUEST['id'] != "firmware") {
header("Location: pkg_mgr_installed.php");
return;
}
-} else if ($_GET && !$_GET['id']) {
- if (empty($_GET['pkg']) && ($_GET['mode'] != 'reinstallall')) {
+ $firmwareupdate = true;
+} elseif (!$completed && empty($_REQUEST['pkg']) && $pkgmode != 'reinstallall') {
+ header("Location: pkg_mgr_installed.php");
+ return;
+}
+
+$pkgname = '';
+if (!empty($_REQUEST['pkg'])) {
+ $pkgname = $_REQUEST['pkg'];
+
+ if (!pkg_valid_name($pkgname)) {
header("Location: pkg_mgr_installed.php");
return;
}
}
-if ($_GET && $_GET['id'] == "firmware") {
- $firmwareupdate = true;
- $firmwareversion = get_system_pkg_version();
-}
-
$tab_array = array();
-if ($firmwareupdate || ($_POST['id'] == "firmware")) {
+if ($firmwareupdate) {
$pgtitle = array(gettext("System"), gettext("Update"), gettext("System Update"));
$tab_array[] = array(gettext("System Update"), true, "");
$tab_array[] = array(gettext("Update Settings"), false, "system_update_settings.php");
@@ -248,12 +275,11 @@ if ($firmwareupdate || ($_POST['id'] == "firmware")) {
}
include("head.inc");
+?>
+
+<div id="final" class="alert" role="alert" style="display: none;"></div>
-if (!empty($_POST['id']) || $_POST['mode'] == "reinstallall") {
- ?>
- <div id="final" class="alert" role="alert" style=":display: none;"></div>
<?php
-}
display_top_tabs($tab_array);
if ($input_errors) {
@@ -262,17 +288,10 @@ if ($input_errors) {
?>
<form action="pkg_mgr_install.php" method="post" class="form-horizontal">
-<?php if (($POST['complete'] != "true") && (empty($_GET['mode']) && $_GET['id']) || (!empty($_GET['mode']) && (!empty($_GET['pkg']) || $_GET['mode'] == 'reinstallall'))):
- if (empty($_GET['mode']) && $_GET['id']) {
- $pkgname = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['id'], ENT_QUOTES | ENT_HTML401));
- $pkgmode = 'installed';
- } else if (!empty($_GET['mode']) && !empty($_GET['pkg'])) {
- $pkgname = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['pkg'], ENT_QUOTES | ENT_HTML401));
- $pkgmode = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_GET['mode'], ENT_QUOTES | ENT_HTML401));
- } else if ($_GET['mode'] == 'reinstallall') {
- $pkgmode = 'reinstallall';
- }
+<?php
+if (!$confirmed && !$completed &&
+ ($firmwareupdate || $pkgmode == 'reinstallall' || !empty($pkgname))):
switch ($pkgmode) {
case 'reinstallpkg':
$pkgtxt = sprintf(gettext('Confirmation Required to reinstall package %s.'), $pkgname);
@@ -290,132 +309,127 @@ if ($input_errors) {
<div class="panel-heading">
<h2 class="panel-title">
<?php
- if ($pkgmode == 'reinstallall') {
+ if ($pkgmode == 'reinstallall'):
?>
<?=gettext("Confirmation Required to reinstall all packages.");?>
<?php
- } else if ($_GET['from'] && $_GET['to']) {
+ elseif ($_GET['from'] && $_GET['to']):
?>
<?=sprintf(gettext('Confirmation Required to upgrade package %1$s from %2$s to %3$s.'), $pkgname, $_GET['from'], $_GET['to'])?>
<?php
- } else if ($firmwareupdate) {
+ elseif ($firmwareupdate):
?>
<?=sprintf(gettext('Confirmation Required to update %s system.'), $g['product_name'])?>
<?php
- } else {
+ else:
?>
<?=$pkgtxt;?>
<?php
- }
+ endif;
?>
</h2>
</div>
<div class="panel-body">
<div class="content">
- <input type="hidden" name="mode" value="<?=$pkgmode;?>" />
+ <input type="hidden" name="mode" value="<?=$pkgmode;?>" />
<?php
- if ($firmwareupdate) {
+ if ($firmwareupdate):
?>
- <div class="form-group">
- <label class="col-sm-2 control-label">
- <?=gettext("Current Base System")?>
- </label>
- <div class="col-sm-10">
- <?=$firmwareversion['installed_version']?>
- </div>
- </div>
-
- <div class="form-group">
- <label class="col-sm-2 control-label">
- <?=gettext("Latest Base System")?>
- </label>
- <div class="col-sm-10">
- <?=$firmwareversion['version']?>
- </div>
- </div>
+ <div class="form-group">
+ <label class="col-sm-2 control-label">
+ <?=gettext("Current Base System")?>
+ </label>
+ <div class="col-sm-10" id="installed_version">
+ </div>
+ </div>
+
+ <div class="form-group">
+ <label class="col-sm-2 control-label">
+ <?=gettext("Latest Base System")?>
+ </label>
+ <div class="col-sm-10" id="version">
+ </div>
+ </div>
+
+ <div class="form-group" id="confirm">
+ <label class="col-sm-2 control-label" id="confirmlabel">
+ <?=gettext("Retrieving")?>
+ </label>
+ <div class="col-sm-10">
+ <input type="hidden" name="id" value="firmware" />
+ <input type="hidden" name="confirmed" value="true" />
+ <button type="submit" class="btn btn-success" name="pkgconfirm" id="pkgconfirm" value="<?=gettext("Confirm")?>" style="display: none">
+ <i class="fa fa-check icon-embed-btn"></i>
+ <?=gettext("Confirm")?>
+ </button>
+ <span id="uptodate"><i class="fa fa-cog fa-spin fa-lg text-warning"></i></span>
+ </div>
+ </div>
<?php
- if ($firmwareversion['version'] != $firmwareversion['installed_version']) {
+ else:
?>
- <div class="form-group">
- <label class="col-sm-2 control-label">
- <?=gettext("Confirm Update")?>
- </label>
- <div class="col-sm-10">
- <input type="hidden" name="id" value="firmware" />
+ <input type="hidden" name="pkg" value="<?=$pkgname;?>" />
+ <input type="hidden" name="confirmed" value="true" />
<button type="submit" class="btn btn-success" name="pkgconfirm" id="pkgconfirm" value="<?=gettext("Confirm")?>">
<i class="fa fa-check icon-embed-btn"></i>
<?=gettext("Confirm")?>
</button>
- </div>
- </div>
<?php
- } else {
+ endif;
?>
- <div class="form-group">
- <label class="col-sm-2 control-label">
- </label>
- <div class="col-sm-10">
- <?=($firmwareversion) ? gettext("System is up to date") : ""?>
</div>
</div>
+ </div>
<?php
- }
- } else {
+endif;
?>
- <input type="hidden" name="id" value="<?=$pkgname;?>" />
- <button type="submit" class="btn btn-success" name="pkgconfirm" id="pkgconfirm" value="<?=gettext("Confirm")?>">
- <i class="fa fa-check icon-embed-btn"></i>
- <?=gettext("Confirm")?>
- </button>
-<?php
- }
- ?>
- </div>
- </div>
+ <div id="unable" style="display: none">
+ <?=print_info_box(gettext("Unable to retrieve system versions."), 'danger')?>
</div>
-<?php endif;
-
-if ($firmwareupdate && !$firmwareversion) {
- print_info_box(gettext("Unable to retrieve system versions."), 'danger');
-}
+<?php
if ($_POST) {
- $pkgid = str_replace(array("<", ">", ";", "&", "'", '"', '.', '/'), "", htmlspecialchars_decode($_POST['id'], ENT_QUOTES | ENT_HTML401));
- if ($pkgid == "firmware") {
+ if ($firmwareupdate) {
$logfilename = $g['cf_conf_path'] . '/upgrade_log';
} else {
- $logfilename = $g['cf_conf_path'] . '/pkg_log_' . $pkgid;
+ $logfilename = $g['cf_conf_path'] . '/pkg_log_' . $pkgname;
}
}
-if ($_POST['mode'] == 'delete') {
+if ($pkgmode == 'delete') {
$panel_heading_txt = gettext("Package Removal");
- $pkg_success_txt = sprintf(gettext('<b>%1$s</b> removal successfully completed.'), $pkgid);
- $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> removal failed!'), $pkgid);
- $pkg_wait_txt = sprintf(gettext('Please wait while the removal of <b>%1$s</b> completes.'), $pkgid);
-} else if (($_POST['mode'] == 'reinstallpkg') || ($_POST['mode'] == 'reinstallall')) {
+ $pkg_success_txt = sprintf(gettext('<b>%1$s</b> removal successfully completed.'), $pkgname);
+ $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> removal failed!'), $pkgname);
+ $pkg_wait_txt = sprintf(gettext('Please wait while the removal of <b>%1$s</b> completes.'), $pkgname);
+} else if ($pkgmode == 'reinstallall') {
+ $panel_heading_txt = gettext("Packages Reinstallation");
+ $pkg_success_txt = gettext('All packages reinstallation successfully completed.');
+ $pkg_fail_txt = gettext('All packages reinstallation failed!');
+ $pkg_wait_txt = gettext('Please wait while the reinstallation of all packages completes.');
+} else if ($pkgmode == 'reinstallpkg') {
$panel_heading_txt = gettext("Package Reinstallation");
- $pkg_success_txt = sprintf(gettext('<b>%1$s</b> reinstallation successfully completed.'), $pkgid);
- $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> reinstallation failed!'), $pkgid);
- $pkg_wait_txt = sprintf(gettext('Please wait while the reinstallation of <b>%1$s</b> completes.'), $pkgid);
+ $pkg_success_txt = sprintf(gettext('<b>%1$s</b> reinstallation successfully completed.'), $pkgname);
+ $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> reinstallation failed!'), $pkgname);
+ $pkg_wait_txt = sprintf(gettext('Please wait while the reinstallation of <b>%1$s</b> completes.'), $pkgname);
} else {
$panel_heading_txt = gettext("Package Installation");
- $pkg_success_txt = sprintf(gettext('<b>%1$s</b> installation successfully completed.'), $pkgid);
- $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> installation failed!'), $pkgid);
- $pkg_wait_txt = sprintf(gettext('Please wait while the installation of <b>%1$s</b> completes.'), $pkgid);
+ $pkg_success_txt = sprintf(gettext('<b>%1$s</b> installation successfully completed.'), $pkgname);
+ $pkg_fail_txt = sprintf(gettext('<b>%1$s</b> installation failed!'), $pkgname);
+ $pkg_wait_txt = sprintf(gettext('Please wait while the installation of <b>%1$s</b> completes.'), $pkgname);
}
-if (!empty($_POST['id']) || $_POST['mode'] == "reinstallall"):
- // What if the user navigates away from this page and then come back via his/her "Back" button?
+if ($confirmed):
+ // XXX: What if the user navigates away from this page and then comes back via his/her "Back" button?
$pidfile = $g['varrun_path'] . '/' . $g['product_name'] . '-upgrade.pid';
if (isvalidpid($pidfile)) {
$start_polling = true;
}
?>
- <input type="hidden" name="id" value="<?=htmlspecialchars($_POST['id'])?>" />
- <input type="hidden" name="mode" value="<?=htmlspecialchars($_POST['mode'])?>" />
+ <input type="hidden" name="id" value="<?=$_REQUEST['id']?>" />
+ <input type="hidden" name="mode" value="<?=$pkgmode?>" />
<input type="hidden" name="completed" value="true" />
+ <input type="hidden" name="confirmed" value="true" />
<input type="hidden" id="reboot_needed" name="reboot_needed" value="no" />
<div id="countdown" class="text-center"></div>
@@ -426,36 +440,42 @@ if (!empty($_POST['id']) || $_POST['mode'] == "reinstallall"):
<br />
<div class="panel panel-default">
<div class="panel-heading">
-<?php if ($firmwareupdate) {
+<?php
+ if ($firmwareupdate):
?>
<h2 class="panel-title" id="status"><?=gettext("Updating System")?></h2>
-<?php } else {
+<?php
+ else:
?>
<h2 class="panel-title" id="status"><?=$panel_heading_txt?></h2>
- <?php } ?>
+<?php
+ endif;
+?>
</div>
<div class="panel-body">
<textarea rows="15" class="form-control" id="output" name="output"><?=$_POST['output']?></textarea>
</div>
</div>
-<?php endif?>
+<?php
+endif;
+?>
</form>
<?php
ob_flush();
-if ($_POST && ($_POST['completed'] != "true")) {
+if ($confirmed && !$completed) {
/* Write out configuration to create a backup prior to pkg install. */
write_config(gettext("Creating restore point before package installation."));
$progbar = true;
$upgrade_script = "/usr/local/sbin/{$g['product_name']}-upgrade -y -l {$logfilename}.txt -p {$g['tmp_path']}/{$g['product_name']}-upgrade.sock";
- switch ($_POST['mode']) {
+ switch ($pkgmode) {
case 'delete':
- mwexec_bg("{$upgrade_script} -r {$pkgid}");
+ mwexec_bg("{$upgrade_script} -r {$pkgname}");
$start_polling = true;
break;
@@ -468,27 +488,32 @@ if ($_POST && ($_POST['completed'] != "true")) {
break;
case 'reinstallpkg':
- mwexec_bg("{$upgrade_script} -i {$pkgid} -f");
+ mwexec_bg("{$upgrade_script} -i {$pkgname} -f");
$start_polling = true;
break;
case 'installed':
default:
- if ($pkgid == 'firmware') {
+ if ($firmwareupdate) {
mwexec_bg("{$upgrade_script}");
} else {
- mwexec_bg("{$upgrade_script} -i {$pkgid}");
+ mwexec_bg("{$upgrade_script} -i {$pkgname}");
}
$start_polling = true;
break;
}
}
-// $_POST['completed'] just means that we are refreshing the page to update any new menu items
+$uptodatemsg = gettext("Up to date.");
+$confirmlabel = gettext("Confirm Update");
+$sysmessage = gettext("Status");
+
+// $completed just means that we are refreshing the page to update any new menu items
// that were installed
-if ($_POST && $_POST['completed'] == "true"):
+if ($completed):
unlink_if_exists($logfilename . ".json");
- if (($pkgid == 'firmware') && ($_POST['reboot_needed'] == "yes")):
+ if (($firmwareupdate) && ($_POST['reboot_needed'] == "yes")):
+
?>
<script>
//<![CDATA[
@@ -520,8 +545,8 @@ function setProgress(barName, percent, transition) {
// Display a success banner
function show_success() {
$('#final').removeClass("alert-info").addClass("alert-success");
- if ("<?=$_POST['mode']?>" != "reinstallall") {
- if ("<?=$pkgid?>" == "firmware") {
+ if ("<?=$pkgmode?>" != "reinstallall") {
+ if ("<?=$firmwareupdate?>") {
$('#final').html("<?=gettext('System update successfully completed.')?>");
} else {
$('#final').html("<?=$pkg_success_txt?>");
@@ -537,7 +562,7 @@ function show_success() {
function show_failure() {
$('#final').removeClass("alert-info");
$('#final').addClass("alert-danger");
- if ("<?=$_POST['mode']?>" != "reinstallall") {
+ if ("<?=$pkgmode?>" != "reinstallall") {
$('#final').html("<?=$pkg_fail_txt?>");
} else {
$('#final').html("<?=gettext('Reinstallation of all packages failed.')?>");
@@ -548,7 +573,7 @@ function show_failure() {
// Ask the user to wait a bit
function show_info() {
$('#final').addClass("alert-info");
- if ("<?=$_POST['mode']?>" != "reinstallall") {
+ if ("<?=$pkgmode?>" != "reinstallall") {
$('#final').html("<p><?=$pkg_wait_txt?>" + "</p><p>" +
"<?=gettext("This may take several minutes!")?>" + "</p>");
} else {
@@ -558,6 +583,43 @@ function show_info() {
$('#final').show();
}
+function get_firmware_versions()
+{
+ var ajaxVersionRequest;
+
+ // Retrieve the version information
+ ajaxVersionRequest = $.ajax({
+ url: "pkg_mgr_install.php",
+ type: "post",
+ data: {
+ ajax: "ajax",
+ getversion: "yes"
+ }
+ });
+
+ // Deal with the results of the above ajax call
+ ajaxVersionRequest.done(function (response, textStatus, jqXHR) {
+ var json = new Object;
+
+ json = jQuery.parseJSON(response);
+
+ if(json) {
+ $('#installed_version').text(json.installed_version);
+ $('#version').text(json.version);
+
+ // If the installed and latest versions are the same, print an "Up to date" message
+ if (json.installed_version == json.version) {
+ $('#confirmlabel').text("<?=$sysmessage?>");
+ $('#uptodate').html('<span class="text-success">' + '<?=$uptodatemsg?>' + "</span>");
+ } else { // If they differ display the "Confirm" button
+ $('#uptodate').hide();
+ $('#confirmlabel').text( "<?=$confirmlabel?>");
+ $('#pkgconfirm').show();
+ }
+ }
+ });
+}
+
function getLogsStatus() {
var ajaxRequest;
var repeat;
@@ -571,7 +633,7 @@ function getLogsStatus() {
data: { ajax: "ajax",
logfilename: "<?=$logfilename?>",
next_log_line: "0"
- }
+ }
});
// Deal with the results of the above ajax call
@@ -618,7 +680,10 @@ function getLogsStatus() {
$('#reboot_needed').val("yes");
}
- $('form').submit();
+ setProgress('progressbar', 100, false);
+ $('#progressbar').addClass("progress-bar-success");
+ show_success();
+ setTimeout(scrollToBottom, 200);
}
if ((json.pid == "stopped") && ((progress != 0) || (json.exitstatus != 0))) {
@@ -642,7 +707,7 @@ var time = 0;
function checkonline() {
$.ajax({
- url : "/index.php", // or other resource
+ url : "/index.php", // or other resource
type : "HEAD"
})
.done(function() {
@@ -675,13 +740,8 @@ events.push(function() {
show_info();
}
- // If we are just re-drawing the page after a successful install/remove/reinstall,
- // we only meed to re-populate the progress indicator and the status banner
- if ("<?=$_POST['completed']?>" == "true") {
- setProgress('progressbar', 100, false);
- $('#progressbar').addClass("progress-bar-success");
- show_success();
- setTimeout(scrollToBottom, 200);
+ if ("<?=$firmwareupdate?>") {
+ get_firmware_versions();
}
});
diff --git a/src/usr/local/www/services_captiveportal.php b/src/usr/local/www/services_captiveportal.php
index ed2d52b..02672b3 100644
--- a/src/usr/local/www/services_captiveportal.php
+++ b/src/usr/local/www/services_captiveportal.php
@@ -82,6 +82,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
@@ -620,6 +621,14 @@ $section->addInput(new Form_Input(
'the client can only log in with valid credentials until the waiting period specified below has expired. Recommended to set ' .
'a hard timeout and/or idle timeout when using this for it to be effective.');
+$section->addInput(new Form_Input(
+ 'freelogins_resettimeout',
+ 'Waiting period to restore pass-through credits. (Hours)',
+ 'number',
+ $pconfig['freelogins_resettimeout']
+))->setHelp('Clients will have their available pass-through credits restored to the original count after this amount of time since using the first one. ' .
+ 'This must be above 0 hours if pass-through credits are enabled.');
+
$section->addInput(new Form_Checkbox(
'freelogins_updatetimeouts',
'Reset waiting period',
@@ -647,7 +656,7 @@ $section->addInput(new Form_Input(
'After authentication Redirection URL',
'text',
$pconfig['redirurl']
-))->setHelp('Clients will be redirected to this URL instead of the one they initially tried to access after they\'ve authenticated');
+))->setHelp('Clients will be redirected to this URL instead of the one they initially tried to access after they\'ve authenticated.');
$section->addInput(new Form_Input(
'blockedmacsurl',
@@ -680,7 +689,7 @@ $section->addInput(new Form_Checkbox(
$pconfig['passthrumacadd']
))->setHelp(sprintf('When enabled, a MAC passthrough entry is automatically added after the user has successfully authenticated. Users of that MAC address will ' .
'never have to authenticate again. To remove the passthrough MAC entry either log in and remove it manually from the ' .
- '%s or send a POST from another system.' .
+ '%s or send a POST from another system. ' .
'If this is enabled, RADIUS MAC authentication cannot be used. Also, the logout window will not be shown.', '<a href="services_captiveportal_mac.php">MAC tab</a>'));
$section->addInput(new Form_Checkbox(
@@ -958,7 +967,7 @@ $section->addClass('Radius');
$section->addInput(new Form_Checkbox(
'reauthenticate',
- 'Reathentication',
+ 'Reauthentication',
'Reauthenticate connected users every minute',
$pconfig['reauthenticate']
))->setHelp('If reauthentication is enabled, Access-Requests will be sent to the RADIUS server for each user that is logged in every minute. ' .
@@ -1249,6 +1258,7 @@ events.push(function() {
hideInput('idletimeout', hide);
hideInput('timeout', hide);
hideInput('freelogins_count', hide);
+ hideInput('freelogins_resettimeout', hide);
hideCheckbox('freelogins_updatetimeouts', hide);
hideCheckbox('logoutwin_enable', hide);
hideInput('preauthurl', hide);
diff --git a/src/usr/local/www/services_captiveportal_filemanager.php b/src/usr/local/www/services_captiveportal_filemanager.php
index 39a839a..7e9737d 100644
--- a/src/usr/local/www/services_captiveportal_filemanager.php
+++ b/src/usr/local/www/services_captiveportal_filemanager.php
@@ -85,6 +85,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone)) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/services_captiveportal_hostname.php b/src/usr/local/www/services_captiveportal_hostname.php
index a9b2b50..1834f03 100644
--- a/src/usr/local/www/services_captiveportal_hostname.php
+++ b/src/usr/local/www/services_captiveportal_hostname.php
@@ -63,7 +63,7 @@
$directionicons = array('to' => '&#x2192;', 'from' => '&#x2190;', 'both' => '&#x21c4;');
$notestr =
- gettext('Adding new hostnames will allow a DNS hostname access to/from the captive portal without being taken to the portal page.' .
+ gettext('Adding new hostnames will allow a DNS hostname access to/from the captive portal without being taken to the portal page. ' .
'This can be used for a web server serving images for the portal page, or a DNS server on another network, for example. ' .
'By specifying <em>from</em> addresses, it may be used to always allow pass-through access from a client behind the captive portal.');
@@ -77,6 +77,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/services_captiveportal_hostname_edit.php b/src/usr/local/www/services_captiveportal_hostname_edit.php
index 9ab00e5..1e623a0 100644
--- a/src/usr/local/www/services_captiveportal_hostname_edit.php
+++ b/src/usr/local/www/services_captiveportal_hostname_edit.php
@@ -81,6 +81,8 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
+
$cpzoneid = $config['captiveportal'][$cpzone]['zoneid'];
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
diff --git a/src/usr/local/www/services_captiveportal_ip.php b/src/usr/local/www/services_captiveportal_ip.php
index c844347..b3f8198 100644
--- a/src/usr/local/www/services_captiveportal_ip.php
+++ b/src/usr/local/www/services_captiveportal_ip.php
@@ -76,6 +76,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/services_captiveportal_ip_edit.php b/src/usr/local/www/services_captiveportal_ip_edit.php
index 5a7b48d..e32b82b 100644
--- a/src/usr/local/www/services_captiveportal_ip_edit.php
+++ b/src/usr/local/www/services_captiveportal_ip_edit.php
@@ -84,6 +84,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
@@ -113,6 +114,7 @@ $a_allowedips =& $config['captiveportal'][$cpzone]['allowedip'];
if (isset($id) && $a_allowedips[$id]) {
$pconfig['ip'] = $a_allowedips[$id]['ip'];
$pconfig['sn'] = $a_allowedips[$id]['sn'];
+ $pconfig['dir'] = $a_allowedips[$id]['dir'];
$pconfig['bw_up'] = $a_allowedips[$id]['bw_up'];
$pconfig['bw_down'] = $a_allowedips[$id]['bw_down'];
$pconfig['descr'] = $a_allowedips[$id]['descr'];
diff --git a/src/usr/local/www/services_captiveportal_mac.php b/src/usr/local/www/services_captiveportal_mac.php
index d80600b..aee5d72 100644
--- a/src/usr/local/www/services_captiveportal_mac.php
+++ b/src/usr/local/www/services_captiveportal_mac.php
@@ -77,6 +77,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
@@ -91,8 +92,8 @@ $a_cp =& $config['captiveportal'];
$pgtitle = array(gettext("Services"), gettext("Captive Portal"), $a_cp[$cpzone]['zone'], gettext("MACs"));
$shortcut_section = "captiveportal";
-$actsmbl = array('pass' => '<font color="green" size="4">&#x2714;</font>&nbsp;' . gettext("Pass"),
- 'block' => '<font color="red" size="4">&#x2718;</font>&nbsp;' . gettext("Block"));
+$actsmbl = array('pass' => '<i class="fa fa-check text-success"></i>&nbsp;' . gettext("Pass"),
+ 'block' => '<i class="fa fa-times text-danger"></i>&nbsp;' . gettext("Block"));
if ($_POST) {
$pconfig = $_POST;
@@ -236,7 +237,7 @@ foreach ($a_cp[$cpzone]['passthrumac'] as $mac): ?>
<?php
$i++;
endforeach; ?>
- <tbody>
+ </tbody>
</table>
<?php
else:
diff --git a/src/usr/local/www/services_captiveportal_mac_edit.php b/src/usr/local/www/services_captiveportal_mac_edit.php
index a838292..20ad744 100644
--- a/src/usr/local/www/services_captiveportal_mac_edit.php
+++ b/src/usr/local/www/services_captiveportal_mac_edit.php
@@ -87,6 +87,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/services_captiveportal_vouchers.php b/src/usr/local/www/services_captiveportal_vouchers.php
index 2fd9f83..237c527 100644
--- a/src/usr/local/www/services_captiveportal_vouchers.php
+++ b/src/usr/local/www/services_captiveportal_vouchers.php
@@ -77,6 +77,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if ($_REQUEST['generatekey']) {
exec("/usr/bin/openssl genrsa 64 > /tmp/key64.private");
@@ -251,7 +252,7 @@ if ($_POST) {
if (!$_POST['vouchersyncusername']) {
// Check for form errors
- if ($_POST['charset'] && (strlen($_POST['charset'] < 2))) {
+ if ($_POST['charset'] && (strlen($_POST['charset']) < 2)) {
$input_errors[] = gettext("Need at least 2 characters to create vouchers.");
}
if ($_POST['charset'] && (strpos($_POST['charset'], "\"") > 0)) {
diff --git a/src/usr/local/www/services_captiveportal_vouchers_edit.php b/src/usr/local/www/services_captiveportal_vouchers_edit.php
index 698d7e5..de96c32 100644
--- a/src/usr/local/www/services_captiveportal_vouchers_edit.php
+++ b/src/usr/local/www/services_captiveportal_vouchers_edit.php
@@ -72,6 +72,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone) || empty($config['captiveportal'][$cpzone])) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/services_captiveportal_zones_edit.php b/src/usr/local/www/services_captiveportal_zones_edit.php
index 12fbc0e..8f19000 100644
--- a/src/usr/local/www/services_captiveportal_zones_edit.php
+++ b/src/usr/local/www/services_captiveportal_zones_edit.php
@@ -121,7 +121,7 @@ $section = new Form_Section('Add Captive Portal Zone');
$section->addInput(new Form_Input(
'zone',
'Zone name'
-))->setPattern('[0-9A-Za-z_]+')->setHelp('Zone name. Can only contain letters, digits, and underscores (_).');
+))->setPattern('^[A-Za-z_][0-9A-Za-z_]+')->setHelp('Zone name. Can only contain letters, digits, and underscores (_) and may not start with a digit.');
$section->addInput(new Form_Input(
'descr',
diff --git a/src/usr/local/www/services_dhcp.php b/src/usr/local/www/services_dhcp.php
index 031b62c..401f2f5 100644
--- a/src/usr/local/www/services_dhcp.php
+++ b/src/usr/local/www/services_dhcp.php
@@ -679,7 +679,7 @@ if ($act == "del") {
// Build an HTML table that can be inserted into a Form_StaticText element
function build_pooltable() {
- global $a_pools;
+ global $a_pools, $if;
$pooltbl = '<div class="table-responsive">';
$pooltbl .= '<table class="table table-striped table-hover table-condensed">';
@@ -1030,21 +1030,21 @@ $section->addInput(new Form_IpAddress(
'ddnsdomainprimary',
'Primary DDNS address',
$pconfig['ddnsdomainprimary']
-))->setHelp('Primary domain name server IP address for the dynamic domain name');
+))->setHelp('Primary domain name server IP address for the dynamic domain name.');
$section->addInput(new Form_Input(
'ddnsdomainkeyname',
'DNS Domain key',
'text',
$pconfig['ddnsdomainkeyname']
-))->setHelp('Dynamic DNS domain key name which will be used to register client names in the DNS server');
+))->setHelp('Dynamic DNS domain key name which will be used to register client names in the DNS server.');
$section->addInput(new Form_Input(
'ddnsdomainkey',
'DNS Domain key secret',
'text',
$pconfig['ddnsdomainkey']
-))->setHelp('Dynamic DNS domain key secret which will be used to register client names in the DNS server');
+))->setHelp('Dynamic DNS domain key secret which will be used to register client names in the DNS server.');
// Advanced MAC
$btnadv = new Form_Button(
@@ -1121,7 +1121,7 @@ $section->addInput(new Form_IpAddress(
'tftp',
'TFTP Server',
$pconfig['tftp']
-))->setHelp('Leave blank to disable. Enter a full hostname or IP for the TFTP server.')->setPattern('[.a-zA-Z0-9_]+');
+))->setHelp('Leave blank to disable. Enter a full hostname or IP for the TFTP server.')->setPattern('[.a-zA-Z0-9_-]+');
// Advanced LDAP
$btnadv = new Form_Button(
@@ -1323,7 +1323,7 @@ if (!is_numeric($pool) && !($act == "newpool")) {
<div class="panel panel-default">
<div class="panel-heading"><h2 class="panel-title"><?=gettext("DHCP Static Mappings for this Interface")?></h2></div>
<div class="table-responsive">
- <table class="table table-striped table-hover table-condensed">
+ <table class="table table-striped table-hover table-condensed sortable-theme-bootstrap" data-sortable>
<thead>
<tr>
<th><?=gettext("Static ARP")?></th>
diff --git a/src/usr/local/www/services_dhcpv6.php b/src/usr/local/www/services_dhcpv6.php
index 4cbc02b..f63fcf7 100644
--- a/src/usr/local/www/services_dhcpv6.php
+++ b/src/usr/local/www/services_dhcpv6.php
@@ -718,7 +718,7 @@ $section->add($group);
$section->addInput(new Form_Input(
'domain',
- 'Domain Name',
+ 'Domain name',
'text',
$pconfig['domain']
))->setHelp('The default is to use the domain name of this system as the default domain name provided by DHCP. An alternate domain name may be specified here. ');
@@ -728,7 +728,7 @@ $section->addInput(new Form_Input(
'Domain search list',
'text',
$pconfig['domainsearchlist']
-))->setHelp('The DHCP server can optionally provide a domain search list. Use the semicolon character as separator');
+))->setHelp('The DHCP server can optionally provide a domain search list. Use the semicolon character as separator.');
$section->addInput(new Form_Input(
'deftime',
@@ -994,7 +994,7 @@ print($form);
<?php
print_info_box(
sprintf(
- gettext('The DNS servers entered in %1$sSystem: General setup%3$s (or the %2$sDNS forwarder%3$s if enabled) will be assigned to clients by the DHCP server.'),
+ gettext('The DNS servers entered in %1$sSystem: General Setup%3$s (or the %2$sDNS forwarder%3$s if enabled) will be assigned to clients by the DHCP server.'),
'<a href="system.php">',
'<a href="services_dnsmasq.php"/>',
'</a>') .
diff --git a/src/usr/local/www/services_dnsmasq.php b/src/usr/local/www/services_dnsmasq.php
index 8b0b555..f850023 100644
--- a/src/usr/local/www/services_dnsmasq.php
+++ b/src/usr/local/www/services_dnsmasq.php
@@ -247,7 +247,7 @@ $section->addInput(new Form_Checkbox(
))->setHelp(sprintf("If this option is set, then machines that specify".
" their hostname when requesting a DHCP lease will be registered".
" in the DNS forwarder, so that their name can be resolved.".
- " The domain in %sSystem: General setup%s should also".
+ " The domain in %sSystem: General Setup%s should also".
" be set to the proper value.",'<a href="system.php">','</a>'))
->addClass('toggle-dhcp');
@@ -258,7 +258,7 @@ $section->addInput(new Form_Checkbox(
$pconfig['regdhcpstatic']
))->setHelp(sprintf("If this option is set, then DHCP static mappings will ".
"be registered in the DNS forwarder, so that their name can be ".
- "resolved. The domain in %sSystem: General setup%s should also ".
+ "resolved. The domain in %sSystem: General Setup%s should also ".
"be set to the proper value.",'<a href="system.php">','</a>'))
->addClass('toggle-dhcp');
diff --git a/src/usr/local/www/services_dnsmasq_domainoverride_edit.php b/src/usr/local/www/services_dnsmasq_domainoverride_edit.php
index 806a0f0..9e4670a 100644
--- a/src/usr/local/www/services_dnsmasq_domainoverride_edit.php
+++ b/src/usr/local/www/services_dnsmasq_domainoverride_edit.php
@@ -174,7 +174,8 @@ $section->addInput(new Form_IpAddress(
'ip',
'IP Address',
$pconfig['ip']
-))->setHelp('IP address of the authoritative DNS server for this domain' . '<br />' .
+))->setPattern('[a-f0-9:.#!]*')
+ ->setHelp('IP address of the authoritative DNS server for this domain' . '<br />' .
'e.g.: 192.168.100.100' . '<br />' .
'Or enter # for an exclusion to pass through this host/subdomain to standard nameservers instead of a previous override.' . '<br />' .
'Or enter ! for lookups for this host/subdomain to NOT be forwarded anywhere.');
diff --git a/src/usr/local/www/services_dyndns_edit.php b/src/usr/local/www/services_dyndns_edit.php
index d7e26d0..03130ec 100644
--- a/src/usr/local/www/services_dyndns_edit.php
+++ b/src/usr/local/www/services_dyndns_edit.php
@@ -132,7 +132,7 @@ if ($_POST) {
$reqdfieldsn[] = gettext("Username");
if ($pconfig['type'] == "namecheap") {
$reqdfields[] = "domainname";
- $reqdfieldsn[] = gettext("Domain Name");
+ $reqdfieldsn[] = gettext("Domain name");
}
} else {
$reqdfields[] = "updateurl";
@@ -327,7 +327,7 @@ $group->add(new Form_Input(
));
$group->add(new Form_Input(
'domainname',
- 'Domain Name',
+ 'Domain name',
'text',
$pconfig['domainname']
));
diff --git a/src/usr/local/www/services_igmpproxy_edit.php b/src/usr/local/www/services_igmpproxy_edit.php
index c26cd9f..a6770ab 100644
--- a/src/usr/local/www/services_igmpproxy_edit.php
+++ b/src/usr/local/www/services_igmpproxy_edit.php
@@ -202,7 +202,7 @@ $section->addInput(new Form_Select(
'Type',
$pconfig['type'],
['upstream' => gettext('Upstream Interface'), 'downstream' => gettext('Downstream Interface')]
-))->setHelp('The upstream network interface is the outgoing interface which is responsible for communicating to available multicast data sources .' .
+))->setHelp('The upstream network interface is the outgoing interface which is responsible for communicating to available multicast data sources. ' .
'There can only be one upstream interface.' . '<br />' .
'Downstream network interfaces are the distribution interfaces to the destination networks, where multicast clients can join groups and '.
'receive multicast data. One or more downstream interfaces must be configured.');
diff --git a/src/usr/local/www/services_ntpd.php b/src/usr/local/www/services_ntpd.php
index e335992..fc790f1 100644
--- a/src/usr/local/www/services_ntpd.php
+++ b/src/usr/local/www/services_ntpd.php
@@ -299,7 +299,7 @@ $section->addInput(new Form_StaticText(
$btnaddrow
))->setHelp('For best results three to five servers should be configured here.' . '<br />' .
'The prefer option indicates that NTP should favor the use of this server more than all others.' . '<br />' .
- 'The noselect option indicates that NTP should not use this server for time, but stats for this server will be collected and displayed.');
+ 'The no select option indicates that NTP should not use this server for time, but stats for this server will be collected and displayed.');
$section->addInput(new Form_Input(
'ntporphan',
@@ -308,7 +308,7 @@ $section->addInput(new Form_Input(
$pconfig['ntporphan']
))->setHelp('Orphan mode allows the system clock to be used when no other clocks are available. ' .
'The number here specifies the stratum reported during orphan mode and should normally be set to a number high enough ' .
- 'to insure that any other servers available to clients are preferred over this server. (default: 12).');
+ 'to insure that any other servers available to clients are preferred over this server (default: 12).');
$section->addInput(new Form_Checkbox(
'statsgraph',
@@ -381,7 +381,7 @@ $btnadv->setAttribute('type','button')->addClass('btn-info btn-sm');
$section->addInput(new Form_StaticText(
'Leap seconds',
$btnadv
-))->setHelp('A leap second file allows NTP to advertize an upcoming leap second addition or subtraction. ' .
+))->setHelp('A leap second file allows NTP to advertise an upcoming leap second addition or subtraction. ' .
'Normally this is only useful if this server is a stratum 1 time server. ');
$section->addInput(new Form_Textarea(
diff --git a/src/usr/local/www/services_ntpd_gps.php b/src/usr/local/www/services_ntpd_gps.php
index c776ff9..2ea87f6 100644
--- a/src/usr/local/www/services_ntpd_gps.php
+++ b/src/usr/local/www/services_ntpd_gps.php
@@ -278,7 +278,7 @@ if (!empty($serialports)) {
'gpsspeed',
null,
$pconfig['speed'],
- [0 => '4800', 15 => '9600', 32 => '19200', 48 => '38400', 64 => '57600', 80 => '115200']
+ [0 => '4800', 16 => '9600', 32 => '19200', 48 => '38400', 64 => '57600', 80 => '115200']
))->setHelp('A higher baud rate is generally only helpful if the GPS is sending too many sentences. ' .
'It is recommended to configure the GPS to send only one sentence at a baud rate of 4800 or 9600.');
diff --git a/src/usr/local/www/services_ntpd_pps.php b/src/usr/local/www/services_ntpd_pps.php
index 8858ea9..0f53e27 100644
--- a/src/usr/local/www/services_ntpd_pps.php
+++ b/src/usr/local/www/services_ntpd_pps.php
@@ -188,7 +188,7 @@ $section->addInput(new Form_Input(
'Fudge Time',
'text',
$pconfig['fudge1']
-))->setHelp('Fudge time is used to specify the PPS signal offset from the actual second such as the transmission delay between the transmitter and the receiver. (default: 0.0).');
+))->setHelp('Fudge time is used to specify the PPS signal offset from the actual second such as the transmission delay between the transmitter and the receiver (default: 0.0).');
$section->addInput(new Form_Input(
'ppsstratum',
diff --git a/src/usr/local/www/services_rfc2136_edit.php b/src/usr/local/www/services_rfc2136_edit.php
index a8ef2d0..2699d37 100644
--- a/src/usr/local/www/services_rfc2136_edit.php
+++ b/src/usr/local/www/services_rfc2136_edit.php
@@ -146,7 +146,7 @@ if ($_POST) {
write_config(gettext("New/Edited RFC2136 dnsupdate entry was posted."));
- if ($_POST['Submit'] == gettext("Save & Force Update")) {
+ if ($_POST['force']) {
$retval = services_dnsupdate_process("", $rfc2136['host'], true);
} else {
$retval = services_dnsupdate_process();
@@ -217,7 +217,7 @@ $section->addInput(new Form_Input(
'Hostname',
'text',
$pconfig['host']
-))->setHelp('Fully qualified hostname of the host to be updated');
+))->setHelp('Fully qualified hostname of the host to be updated.');
$section->addInput(new Form_Input(
'ttl',
@@ -344,7 +344,7 @@ $form->add($section);
print($form);
print_info_box(sprintf(gettext('A DNS server must be configured in %1$sSystem: ' .
- 'General setup %2$sor allow the DNS server list to be overridden ' .
+ 'General Setup %2$sor allow the DNS server list to be overridden ' .
'by DHCP/PPP on WAN for dynamic DNS updates to work.'), '<a href="system.php">', '</a>'));
include("foot.inc");
diff --git a/src/usr/local/www/services_router_advertisements.php b/src/usr/local/www/services_router_advertisements.php
index 6852d13..921b299 100644
--- a/src/usr/local/www/services_router_advertisements.php
+++ b/src/usr/local/www/services_router_advertisements.php
@@ -304,7 +304,7 @@ $section->addInput(new Form_Select(
'&nbsp;<strong>Router Only</strong> to only advertise this router' . '<br />' .
'&nbsp;<strong>Unmanaged</strong> for Router Advertising with Stateless Autoconfig' . '<br />' .
'&nbsp;<strong>Managed</strong> for assignment through a DHCPv6 Server' . '<br />' .
- '&nbsp;<strong>Assisted</strong> for DHCPv6 Server assignment combined with Stateless Autoconfig.' .
+ '&nbsp;<strong>Assisted</strong> for DHCPv6 Server assignment combined with Stateless Autoconfig. ' .
'It is not required to activate this DHCPv6 server when set to "Managed", this can be another host on the network');
$section->addInput(new Form_Select(
@@ -421,7 +421,7 @@ $section->addInput(new Form_Input(
'Domain search list',
'text',
$pconfig['radomainsearchlist']
-))->setHelp('The RA server can optionally provide a domain search list. Use the semicolon character as separator ');
+))->setHelp('The RA server can optionally provide a domain search list. Use the semicolon character as separator.');
$section->addInput(new Form_Checkbox(
'rasamednsasdhcp6',
diff --git a/src/usr/local/www/services_unbound.php b/src/usr/local/www/services_unbound.php
index 7e40e87..5dfbb64 100644
--- a/src/usr/local/www/services_unbound.php
+++ b/src/usr/local/www/services_unbound.php
@@ -360,7 +360,7 @@ $section->addInput(new Form_Checkbox(
$pconfig['regdhcp']
))->setHelp(sprintf('If this option is set, then machines that specify their hostname when requesting a DHCP lease will be registered'.
' in the DNS Resolver, so that their name can be resolved.'.
- ' The domain in %sSystem: General setup%s should also be set to the proper value.','<a href="system.php">','</a>'));
+ ' The domain in %sSystem: General Setup%s should also be set to the proper value.','<a href="system.php">','</a>'));
$section->addInput(new Form_Checkbox(
'regdhcpstatic',
@@ -368,7 +368,7 @@ $section->addInput(new Form_Checkbox(
'Register DHCP static mappings in the DNS Resolver',
$pconfig['regdhcpstatic']
))->setHelp(sprintf('If this option is set, then DHCP static mappings will be registered in the DNS Resolver, so that their name can be resolved. '.
- 'The domain in %sSystem: General setup%s should also be set to the proper value.','<a href="system.php">','</a>'));
+ 'The domain in %sSystem: General Setup%s should also be set to the proper value.','<a href="system.php">','</a>'));
$btnadv = new Form_Button(
'btnadvcustom',
@@ -589,7 +589,7 @@ endforeach;
" service (if enabled) will automatically serve the LAN IP".
" address as a DNS server to DHCP clients so they will use".
" the DNS Resolver. If Forwarding is enabled, the DNS Resolver will use the DNS servers".
- " entered in %sSystem: General setup%s".
+ " entered in %sSystem: General Setup%s".
" or those obtained via DHCP or PPP on WAN if &quot;Allow".
" DNS server list to be overridden by DHCP/PPP on WAN&quot;".
" is checked."), '<a href="system.php">', '</a>'), 'info', false); ?>
diff --git a/src/usr/local/www/services_unbound_advanced.php b/src/usr/local/www/services_unbound_advanced.php
index 7d976cc..3b6c57f 100644
--- a/src/usr/local/www/services_unbound_advanced.php
+++ b/src/usr/local/www/services_unbound_advanced.php
@@ -377,7 +377,7 @@ $section->addInput(new Form_Select(
$section->addInput(new Form_Checkbox(
'disable_auto_added_access_control',
'Disable Auto-added Access Control',
- 'disable the automatically-added access control entries',
+ 'Disable the automatically-added access control entries',
$pconfig['disable_auto_added_access_control']
))->setHelp('By default, IPv4 and IPv6 networks residing on internal interfaces of this system are permitted. ' .
'Allowed networks must be manually configured on the Access Lists tab if the auto-added entries are disabled.');
diff --git a/src/usr/local/www/services_unbound_domainoverride_edit.php b/src/usr/local/www/services_unbound_domainoverride_edit.php
index 360f319..cb01888 100644
--- a/src/usr/local/www/services_unbound_domainoverride_edit.php
+++ b/src/usr/local/www/services_unbound_domainoverride_edit.php
@@ -86,6 +86,8 @@ if (isset($id) && $a_domainOverrides[$id]) {
$pconfig['descr'] = $a_domainOverrides[$id]['descr'];
}
+$referer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '/services_unbound.php');
+
if ($_POST) {
unset($input_errors);
@@ -120,6 +122,10 @@ if ($_POST) {
$input_errors[] = gettext("A valid IP address must be specified, for example 192.168.100.10.");
}
}
+
+ if ($_POST['referer']) {
+ $referer = $_POST['referer'];
+ }
if (!$input_errors) {
$doment = array();
@@ -136,8 +142,12 @@ if ($_POST) {
mark_subsystem_dirty('unbound');
write_config();
-
- header("Location: services_unbound.php");
+
+ if ($referer == '/services_unbound_overrides.php') {
+ header("Location: services_unbound_overrides.php");
+ } else {
+ header("Location: services_unbound.php");
+ }
exit;
}
}
@@ -146,6 +156,10 @@ $pgtitle = array(gettext("Services"), gettext("DNS Resolver"), gettext("General
$shortcut_section = "resolver";
include("head.inc");
+if ($input_errors) {
+ print_input_errors($input_errors);
+}
+
$form = new Form();
$section = new Form_Section('Domain Override');
@@ -155,14 +169,14 @@ $section->addInput(new Form_Input(
'Domain',
'text',
$pconfig['domain']
-))->setHelp('Domain to override (NOTE: this does not have to be a valid TLD!) e.g.: testormycompany.localdomainor1.168.192.in-addr.arpa');
+))->setHelp('Domain to override (NOTE: this does not have to be a valid TLD!) e.g.: test or mycompany.localdomain or 1.168.192.in-addr.arpa');
$section->addInput(new Form_IpAddress(
'ip',
'IP Address',
$pconfig['ip']
))->setHelp('IP address of the authoritative DNS server for this domain. e.g.: 192.168.100.100' . '<br />' .
- 'To use a nondefault port for communication, append an \'@\' with the port number.');
+ 'To use a non-default port for communication, append an \'@\' with the port number.')->setPattern('[a-zA-Z0-9\@\.\:]+');
$section->addInput(new Form_Input(
'descr',
@@ -180,6 +194,13 @@ if (isset($id) && $a_domainOverrides[$id]) {
));
}
+$section->addInput(new Form_Input(
+ 'referer',
+ null,
+ 'hidden',
+ $referer
+));
+
$form->add($section);
print $form;
diff --git a/src/usr/local/www/services_unbound_host_edit.php b/src/usr/local/www/services_unbound_host_edit.php
index fadc451..4fd5c50 100644
--- a/src/usr/local/www/services_unbound_host_edit.php
+++ b/src/usr/local/www/services_unbound_host_edit.php
@@ -102,6 +102,8 @@ if (isset($id) && $a_hosts[$id]) {
$pconfig['aliases'] = $a_hosts[$id]['aliases'];
}
+$referer = (isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : '/services_unbound.php');
+
if ($_POST) {
unset($input_errors);
$pconfig = $_POST;
@@ -187,6 +189,10 @@ if ($_POST) {
break;
}
}
+
+ if ($_POST['referer']) {
+ $referer = $_POST['referer'];
+ }
if (!$input_errors) {
$hostent = array();
@@ -207,7 +213,11 @@ if ($_POST) {
write_config();
- header("Location: services_unbound.php");
+ if ($referer == '/services_unbound_overrides.php') {
+ header("Location: services_unbound_overrides.php");
+ } else {
+ header("Location: services_unbound.php");
+ }
exit;
}
}
@@ -337,6 +347,13 @@ $form->addGlobal(new Form_Button(
'fa-plus'
))->removeClass('btn-primary')->addClass('btn-success addbtn');
+$section->addInput(new Form_Input(
+ 'referer',
+ null,
+ 'hidden',
+ $referer
+));
+
$form->add($section);
print($form);
diff --git a/src/usr/local/www/services_unbound_overrides.php b/src/usr/local/www/services_unbound_overrides.php
new file mode 100644
index 0000000..d5cb111
--- /dev/null
+++ b/src/usr/local/www/services_unbound_overrides.php
@@ -0,0 +1,277 @@
+<?php
+/*
+ services_unbound.php
+*/
+/* ====================================================================
+ * Copyright (c) 2004-2015 Electric Sheep Fencing, LLC. All rights reserved.
+ * Copyright (c) 2014 Warren Baker (warren@pfsense.org)
+ *
+ * Redistribution and use in source and binary forms, with or without modification,
+ * are permitted provided that the following conditions are met:
+ *
+ * 1. Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in
+ * the documentation and/or other materials provided with the
+ * distribution.
+ *
+ * 3. All advertising materials mentioning features or use of this software
+ * must display the following acknowledgment:
+ * "This product includes software developed by the pfSense Project
+ * for use in the pfSense software distribution. (http://www.pfsense.org/).
+ *
+ * 4. The names "pfSense" and "pfSense Project" must not be used to
+ * endorse or promote products derived from this software without
+ * prior written permission. For written permission, please contact
+ * coreteam@pfsense.org.
+ *
+ * 5. Products derived from this software may not be called "pfSense"
+ * nor may "pfSense" appear in their names without prior written
+ * permission of the Electric Sheep Fencing, LLC.
+ *
+ * 6. Redistributions of any form whatsoever must retain the following
+ * acknowledgment:
+ *
+ * "This product includes software developed by the pfSense Project
+ * for use in the pfSense software distribution (http://www.pfsense.org/).
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE pfSense PROJECT ``AS IS'' AND ANY
+ * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE pfSense PROJECT OR
+ * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+ * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+ * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
+ * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
+ * OF THE POSSIBILITY OF SUCH DAMAGE.
+ *
+ * ====================================================================
+ *
+ */
+
+##|+PRIV
+##|*IDENT=page-services-dnsresolver-overrides
+##|*NAME=Services: DNS Resolver Overrides
+##|*DESCR=Allow access to the 'Services: DNS Resolver' Overrides page.
+##|*MATCH=services_unbound_overrides.php*
+##|-PRIV
+
+require_once("guiconfig.inc");
+require_once("unbound.inc");
+require_once("system.inc");
+
+if (!is_array($config['unbound'])) {
+ $config['unbound'] = array();
+}
+
+$a_unboundcfg =& $config['unbound'];
+
+if (!is_array($a_unboundcfg['hosts'])) {
+ $a_unboundcfg['hosts'] = array();
+}
+
+$a_hosts =& $a_unboundcfg['hosts'];
+
+if (!is_array($a_unboundcfg['domainoverrides'])) {
+ $a_unboundcfg['domainoverrides'] = array();
+}
+
+$a_domainOverrides = &$a_unboundcfg['domainoverrides'];
+
+if ($_POST) {
+ if ($_POST['apply']) {
+ $retval = services_unbound_configure();
+ $savemsg = get_std_save_message($retval);
+ if ($retval == 0) {
+ clear_subsystem_dirty('unbound');
+ }
+ /* Update resolv.conf in case the interface bindings exclude localhost. */
+ system_resolvconf_generate();
+ /* Start or restart dhcpleases when it's necessary */
+ system_dhcpleases_configure();
+ }
+}
+
+if ($_GET['act'] == "del") {
+ if ($_GET['type'] == 'host') {
+ if ($a_hosts[$_GET['id']]) {
+ unset($a_hosts[$_GET['id']]);
+ write_config();
+ mark_subsystem_dirty('unbound');
+ header("Location: services_unbound_overrides.php");
+ exit;
+ }
+ } elseif ($_GET['type'] == 'doverride') {
+ if ($a_domainOverrides[$_GET['id']]) {
+ unset($a_domainOverrides[$_GET['id']]);
+ write_config();
+ mark_subsystem_dirty('unbound');
+ header("Location: services_unbound_overrides.php");
+ exit;
+ }
+ }
+}
+
+$pgtitle = array(gettext("Services"), gettext("DNS Resolver"), gettext("Overrides"));
+$shortcut_section = "resolver";
+
+include_once("head.inc");
+
+if ($input_errors) {
+ print_input_errors($input_errors);
+}
+
+if ($savemsg) {
+ print_info_box($savemsg, 'success');
+}
+
+if (is_subsystem_dirty('unbound')) {
+ print_apply_box(gettext("The DNS resolver configuration has been changed.") . "<br />" . gettext("The changes must be applied for them to take effect."));
+}
+
+
+?>
+
+<div class="panel panel-default">
+ <div class="panel-heading"><h2 class="panel-title"><?=gettext("Host Overrides")?></h2></div>
+ <div class="panel-body table-responsive">
+ <table class="table table-striped table-hover table-condensed sortable-theme-bootstrap" data-sortable>
+ <thead>
+ <tr>
+ <th><?=gettext("Host")?></th>
+ <th><?=gettext("Domain")?></th>
+ <th><?=gettext("IP")?></th>
+ <th><?=gettext("Description")?></th>
+ <th><?=gettext("Actions")?></th>
+ </tr>
+ </thead>
+ <tbody>
+<?php
+$i = 0;
+foreach ($a_hosts as $hostent):
+?>
+ <tr>
+ <td>
+ <?=$hostent['host']?>
+ </td>
+ <td>
+ <?=$hostent['domain']?>
+ </td>
+ <td>
+ <?=$hostent['ip']?>
+ </td>
+ <td>
+ <?=htmlspecialchars($hostent['descr'])?>
+ </td>
+ <td>
+ <a class="fa fa-pencil" title="<?=gettext('Edit host override')?>" href="services_unbound_host_edit.php?id=<?=$i?>"></a>
+ <a class="fa fa-trash" title="<?=gettext('Delete host override')?>" href="services_unbound_overrides.php?type=host&amp;act=del&amp;id=<?=$i?>"></a>
+ </td>
+ </tr>
+
+<?php
+ if ($hostent['aliases']['item'] && is_array($hostent['aliases']['item'])):
+ foreach ($hostent['aliases']['item'] as $alias):
+?>
+ <tr>
+ <td>
+ <?=$alias['host']?>
+ </td>
+ <td>
+ <?=$alias['domain']?>
+ </td>
+ <td>
+ <?=gettext("Alias for ");?><?=$hostent['host'] ? $hostent['host'] . '.' . $hostent['domain'] : $hostent['domain']?>
+ </td>
+ <td>
+ <i class="fa fa-angle-double-right text-info"></i>
+ <?=htmlspecialchars($alias['description'])?>
+ </td>
+ <td>
+ <a a class="fa fa-pencil" title="<?=gettext('Edit host override')?>" href="services_unbound_host_edit.php?id=<?=$i?>"></a>
+ </td>
+ </tr>
+<?php
+ endforeach;
+ endif;
+ $i++;
+endforeach;
+?>
+ </tbody>
+ </table>
+ </div>
+</div>
+
+<nav class="action-buttons">
+ <a href="services_unbound_host_edit.php" class="btn btn-sm btn-success">
+ <i class="fa fa-plus icon-embed-btn"></i>
+ <?=gettext('Add')?>
+ </a>
+</nav>
+
+<div class="panel panel-default">
+ <div class="panel-heading"><h2 class="panel-title"><?=gettext("Domain Overrides")?></h2></div>
+ <div class="panel-body table-responsive">
+ <table class="table table-striped table-hover table-condensed sortable-theme-bootstrap" data-sortable>
+ <thead>
+ <tr>
+ <th><?=gettext("Domain")?></th>
+ <th><?=gettext("IP")?></th>
+ <th><?=gettext("Description")?></th>
+ <th><?=gettext("Actions")?></th>
+ </tr>
+ </thead>
+
+ <tbody>
+<?php
+$i = 0;
+foreach ($a_domainOverrides as $doment):
+?>
+ <tr>
+ <td>
+ <?=$doment['domain']?>&nbsp;
+ </td>
+ <td>
+ <?=$doment['ip']?>&nbsp;
+ </td>
+ <td>
+ <?=htmlspecialchars($doment['descr'])?>&nbsp;
+ </td>
+ <td>
+ <a class="fa fa-pencil" title="<?=gettext('Edit domain override')?>" href="services_unbound_domainoverride_edit.php?id=<?=$i?>"></a>
+ <a class="fa fa-trash" title="<?=gettext('Delete domain override')?>" href="services_unbound_overrides.php?act=del&amp;type=doverride&amp;id=<?=$i?>"></a>
+ </td>
+ </tr>
+<?php
+ $i++;
+endforeach;
+?>
+ </tbody>
+ </table>
+ </div>
+</div>
+
+<nav class="action-buttons">
+ <a href="services_unbound_domainoverride_edit.php" class="btn btn-sm btn-success">
+ <i class="fa fa-plus icon-embed-btn"></i>
+ <?=gettext('Add')?>
+ </a>
+</nav>
+
+<div class="infoblock">
+ <?php print_info_box(sprintf(gettext("If the DNS Resolver is enabled, the DHCP".
+ " service (if enabled) will automatically serve the LAN IP".
+ " address as a DNS server to DHCP clients so they will use".
+ " the DNS Resolver. If Forwarding is enabled, the DNS Resolver will use the DNS servers".
+ " entered in %sSystem: General setup%s".
+ " or those obtained via DHCP or PPP on WAN if &quot;Allow".
+ " DNS server list to be overridden by DHCP/PPP on WAN&quot;".
+ " is checked."), '<a href="system.php">', '</a>'), 'info', false); ?>
+</div>
+
+<?php include("foot.inc");
diff --git a/src/usr/local/www/status.php b/src/usr/local/www/status.php
index 0f1790c..5431e54 100755
--- a/src/usr/local/www/status.php
+++ b/src/usr/local/www/status.php
@@ -106,7 +106,15 @@ function doCmdT($title, $command) {
while (!feof($fd)) {
$line = fgets($fd);
/* remove sensitive contents */
+ $line = preg_replace("/<authorizedkeys>.*?<\\/authorizedkeys>/", "<authorizedkeys>xxxxx</authorizedkeys>", $line);
+ $line = preg_replace("/<bcrypt-hash>.*?<\\/bcrypt-hash>/", "<bcrypt-hash>xxxxx</bcrypt-hash>", $line);
$line = preg_replace("/<password>.*?<\\/password>/", "<password>xxxxx</password>", $line);
+ $line = preg_replace("/<auth_user>.*?<\\/auth_user>/", "<auth_user>xxxxx</auth_user>", $line);
+ $line = preg_replace("/<auth_pass>.*?<\\/auth_pass>/", "<auth_pass>xxxxx</auth_pass>", $line);
+ $line = preg_replace("/<proxy_user>.*?<\\/proxy_user>/", "<proxy_user>xxxxx</proxy_user>", $line);
+ $line = preg_replace("/<proxy_passwd>.*?<\\/proxy_passwd>/", "<proxy_passwd>xxxxx</proxy_passwd>", $line);
+ $line = preg_replace("/<proxyuser>.*?<\\/proxyuser>/", "<proxyuser>xxxxx</proxyuser>", $line);
+ $line = preg_replace("/<proxypass>.*?<\\/proxypass>/", "<proxypass>xxxxx</proxypass>", $line);
$line = preg_replace("/<pre-shared-key>.*?<\\/pre-shared-key>/", "<pre-shared-key>xxxxx</pre-shared-key>", $line);
$line = preg_replace("/<rocommunity>.*?<\\/rocommunity>/", "<rocommunity>xxxxx</rocommunity>", $line);
$line = preg_replace("/<prv>.*?<\\/prv>/", "<prv>xxxxx</prv>", $line);
diff --git a/src/usr/local/www/status_captiveportal.php b/src/usr/local/www/status_captiveportal.php
index 36abe13..f1e0b94 100644
--- a/src/usr/local/www/status_captiveportal.php
+++ b/src/usr/local/www/status_captiveportal.php
@@ -73,7 +73,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
-
+$cpzone = strtolower($cpzone);
if (!is_array($config['captiveportal'])) {
$config['captiveportal'] = array();
diff --git a/src/usr/local/www/status_captiveportal_expire.php b/src/usr/local/www/status_captiveportal_expire.php
index 7d7bc7c..ba57a93 100644
--- a/src/usr/local/www/status_captiveportal_expire.php
+++ b/src/usr/local/www/status_captiveportal_expire.php
@@ -72,6 +72,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone)) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/status_captiveportal_test.php b/src/usr/local/www/status_captiveportal_test.php
index 8d447cd..9fb614b 100644
--- a/src/usr/local/www/status_captiveportal_test.php
+++ b/src/usr/local/www/status_captiveportal_test.php
@@ -72,6 +72,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone)) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/status_captiveportal_voucher_rolls.php b/src/usr/local/www/status_captiveportal_voucher_rolls.php
index ca2b60d..d1c869d 100644
--- a/src/usr/local/www/status_captiveportal_voucher_rolls.php
+++ b/src/usr/local/www/status_captiveportal_voucher_rolls.php
@@ -72,6 +72,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone)) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/status_captiveportal_vouchers.php b/src/usr/local/www/status_captiveportal_vouchers.php
index 4a18d46..cf311d1 100644
--- a/src/usr/local/www/status_captiveportal_vouchers.php
+++ b/src/usr/local/www/status_captiveportal_vouchers.php
@@ -72,6 +72,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (empty($cpzone)) {
header("Location: services_captiveportal_zones.php");
diff --git a/src/usr/local/www/status_interfaces.php b/src/usr/local/www/status_interfaces.php
index 5131c54..0fe706f 100644
--- a/src/usr/local/www/status_interfaces.php
+++ b/src/usr/local/www/status_interfaces.php
@@ -130,7 +130,7 @@ foreach ($ifdescrs as $ifdescr => $ifname):
showDefBtn($ifinfo['pppoelink'], 'PPPoE', $ifinfo['pppoelink'], $ifdescr, $ifinfo['pppoelink'] == "up" ? gettext("Disconnect") : gettext("Connect"));
showDefBtn($ifinfo['pptplink'], 'PPTP', $ifinfo['pptplink'], $ifdescr, $ifinfo['pptplink'] == "up" ? gettext("Disconnect") : gettext("Connect"));
showDefBtn($ifinfo['l2tplink'], 'L2TP', $ifinfo['l2tplink'], $ifdescr, $ifinfo['l2tplink'] == "up" ? gettext("Disconnect") : gettext("Connect"));
- showDefBtn($ifinfo['ppplink'], 'L2TP', $ifinfo['ppplink'], $ifdescr, ($ifinfo['ppplink'] == "up" && !$ifinfo['nodevice']) ? gettext("Disconnect") : gettext("Connect"));
+ showDefBtn($ifinfo['ppplink'], 'PPP', $ifinfo['ppplink'], $ifdescr, ($ifinfo['ppplink'] == "up" && !$ifinfo['nodevice']) ? gettext("Disconnect") : gettext("Connect"));
showDef($ifinfo['ppp_uptime'] || $ifinfo['ppp_uptime_accumulated'], gettext("Uptime") . ' ' . ($ifinfo['ppp_uptime_accumulated'] ? '(historical)':''), $ifinfo['ppp_uptime'] . $ifinfo['ppp_uptime_accumulated']);
showDef($ifinfo['cell_rssi'], gettext("Cell Signal (RSSI)"), $ifinfo['cell_rssi']);
showDef($ifinfo['cell_mode'], gettext("Cell Mode"), $ifinfo['cell_mode']);
@@ -161,7 +161,7 @@ foreach ($ifdescrs as $ifdescr => $ifname):
$dns_servers = get_dns_servers();
$dnscnt = 0;
foreach ($dns_servers as $dns) {
- showDef(true, $dnscnt == 0 ? gettext('ISP DNS servers'):'', $dns);
+ showDef(true, $dnscnt == 0 ? gettext('DNS servers'):'', $dns);
$dnscnt++;
}
}
diff --git a/src/usr/local/www/status_ipsec.php b/src/usr/local/www/status_ipsec.php
index 4ca13d7..4968d31 100644
--- a/src/usr/local/www/status_ipsec.php
+++ b/src/usr/local/www/status_ipsec.php
@@ -520,8 +520,8 @@ display_top_tabs($tab_array);
</thead>
<tbody id="ipsec-body">
<tr>
- <td colspan="9">
- <?=print_info_box(gettext("Collecting IPsec status information"), warning, "")?>
+ <td colspan="10">
+ <?=print_info_box(gettext("Collecting IPsec status information."), warning, "")?>
</td>
</tr>
</tbody>
@@ -569,6 +569,11 @@ events.push(function() {
// Deal with the results of the above ajax call
ajaxRequest.done(function (response, textStatus, jqXHR) {
+
+ if (!response) {
+ response = '<tr><td colspan="10"><?=print_info_box(gettext("No IPsec status information available."), warning, "")?></td></tr>';
+ }
+
$('#ipsec-body').html(response);
ajax_lock = false;
diff --git a/src/usr/local/www/status_lb_pool.php b/src/usr/local/www/status_lb_pool.php
index 5de3cbf..2fb2593 100644
--- a/src/usr/local/www/status_lb_pool.php
+++ b/src/usr/local/www/status_lb_pool.php
@@ -265,23 +265,26 @@ endforeach;
</table>
</div>
</div>
-</form>
<?php
if ($rowsprinted > 0) {
?>
- <nav class="action-buttons">
- <button name="Submit" type="submit" class="btn btn-primary btn-sm" value="<?= gettext("Save"); ?>" >
- <i class="fa fa-save icon-embed-btn"></i>
- <?=gettext("Save")?>
- </button>
+ <nav class="action-buttons">
+ <button name="Submit" type="submit" class="btn btn-primary btn-sm" value="<?= gettext("Save"); ?>" >
+ <i class="fa fa-save icon-embed-btn"></i>
+ <?=gettext("Save")?>
+ </button>
- <button name="Reset" type="reset" class="btn btn-danger btn-sm" value="<?= gettext("Reset"); ?>">
- <i class="fa fa-undo icon-embed-btn"></i>
- <?=gettext("Reset")?>
- </button>
- </nav>
+ <button name="Reset" type="reset" class="btn btn-danger btn-sm" value="<?= gettext("Reset"); ?>">
+ <i class="fa fa-undo icon-embed-btn"></i>
+ <?=gettext("Reset")?>
+ </button>
+ </nav>
<?php
}
+?>
+</form>
+
+<?php
include("foot.inc");
diff --git a/src/usr/local/www/status_logs_common.inc b/src/usr/local/www/status_logs_common.inc
index 1a23c9c..75422ba 100644
--- a/src/usr/local/www/status_logs_common.inc
+++ b/src/usr/local/www/status_logs_common.inc
@@ -960,8 +960,8 @@ function manage_log_section() {
'1' => gettext('Display as column'),
'2' => gettext('Display as second row')
)
- ))->setHelp('Show the applied rule description below or in the firewall log rows' . '<br />' .
- 'Displaying rule descriptions for all lines in the log might affect performance with large rule sets');
+ ))->setHelp('Show the applied rule description below or in the firewall log rows.' . '<br />' .
+ 'Displaying rule descriptions for all lines in the log might affect performance with large rule sets.');
}
diff --git a/src/usr/local/www/status_logs_settings.php b/src/usr/local/www/status_logs_settings.php
index 0e97ff0..155f527 100644
--- a/src/usr/local/www/status_logs_settings.php
+++ b/src/usr/local/www/status_logs_settings.php
@@ -94,6 +94,7 @@ $pconfig['rawfilter'] = isset($config['syslog']['rawfilter']);
$pconfig['filterdescriptions'] = $config['syslog']['filterdescriptions'];
$pconfig['disablelocallogging'] = isset($config['syslog']['disablelocallogging']);
$pconfig['logfilesize'] = $config['syslog']['logfilesize'];
+$pconfig['igmpxverbose'] = isset($config['syslog']['igmpxverbose']);
if (!$pconfig['nentries']) {
$pconfig['nentries'] = 50;
@@ -170,11 +171,14 @@ if ($_POST['resetlogs'] == gettext("Reset Log Files")) {
$config['syslog']['nologprivatenets'] = $_POST['logprivatenets'] ? false : true;
$config['syslog']['nolognginx'] = $_POST['lognginx'] ? false : true;
$config['syslog']['rawfilter'] = $_POST['rawfilter'] ? true : false;
+ $config['syslog']['igmpxverbose'] = $_POST['igmpxverbose'] ? true : false;
+
if (is_numeric($_POST['filterdescriptions']) && $_POST['filterdescriptions'] > 0) {
$config['syslog']['filterdescriptions'] = $_POST['filterdescriptions'];
} else {
unset($config['syslog']['filterdescriptions']);
}
+
if ($config['syslog']['enable'] == false) {
unset($config['syslog']['remoteserver']);
unset($config['syslog']['remoteserver2']);
@@ -216,7 +220,7 @@ $logfilesizeHelp = gettext("Logs are held in constant-size circular log files. T
gettext("Disk space currently used by log files is: ") . exec("/usr/bin/du -sh /var/log | /usr/bin/awk '{print $1;}'") .
gettext(" Remaining disk space for log files: ") . exec("/bin/df -h /var/log | /usr/bin/awk '{print $4;}'");
-$remoteloghelp = gettext("This option will allow the logging daemon to bind to a single IP address, rather than all IP addresses.") .
+$remoteloghelp = gettext("This option will allow the logging daemon to bind to a single IP address, rather than all IP addresses.") . " " .
gettext("If a single IP is picked, remote syslog servers must all be of that IP type. To mix IPv4 and IPv6 remote syslog servers, bind to all interfaces.") .
"<br /><br />" .
gettext("NOTE: If an IP address cannot be located on the chosen interface, the daemon will bind to all addresses.");
@@ -303,14 +307,21 @@ $section->addInput(new Form_Checkbox(
'Web Server Log',
'Log errors from the web server process',
$pconfig['lognginx']
-))->setHelp('If this is checked, errors from the web server process for the GUI or Captive Portal will appear in the main system log');
+))->setHelp('If this is checked, errors from the web server process for the GUI or Captive Portal will appear in the main system log.');
$section->addInput(new Form_Checkbox(
'rawfilter',
'Raw Logs',
'Show raw filter logs',
$pconfig['rawfilter']
-))->setHelp(gettext('If this is checked, filter logs are shown as generated by the packet filter, without any formatting. This will reveal more detailed information, but it is more difficult to read'));
+))->setHelp(gettext('If this is checked, filter logs are shown as generated by the packet filter, without any formatting. This will reveal more detailed information, but it is more difficult to read.'));
+
+$section->addINput(new Form_Checkbox(
+ 'igmpxverbose',
+ 'IGMP Proxy',
+ 'Enable verbose logging (Default is terse logging)',
+ $pconfig['igmpxverbose']
+));
$section->addInput(new Form_Select(
'filterdescriptions',
@@ -321,8 +332,8 @@ $section->addInput(new Form_Select(
'1' => gettext('Display as column'),
'2' => gettext('Display as second row')
)
-))->setHelp('Show the applied rule description below or in the firewall log rows' . '<br />' .
- 'Displaying rule descriptions for all lines in the log might affect performance with large rule sets');
+))->setHelp('Show the applied rule description below or in the firewall log rows.' . '<br />' .
+ 'Displaying rule descriptions for all lines in the log might affect performance with large rule sets.');
$section->addInput(new Form_Checkbox(
'disablelocallogging',
diff --git a/src/usr/local/www/status_queues.php b/src/usr/local/www/status_queues.php
index 15baf2d..52d6773 100644
--- a/src/usr/local/www/status_queues.php
+++ b/src/usr/local/www/status_queues.php
@@ -121,12 +121,11 @@ if ($_REQUEST['getactivity']) {
}
$finscript = "";
foreach ($statistics as $q) {
- if ($stat_type == "0") {
+ if ($stat_type == "0" && $bigger_stat != "0") {
$packet_s = round(100 * ($q->pps / $bigger_stat), 0);
- } else {
+ } else if ($bigger_stat != "0") {
$packet_s = round(100 * ($q->bandwidth / $bigger_stat), 0);
- }
- if ($packet_s < 0) {
+ } else {
$packet_s = 0;
}
$finscript .= "$('#queue{$q->queuename}width').css('width','{$packet_s}%');";
diff --git a/src/usr/local/www/system.php b/src/usr/local/www/system.php
index da791dc..8105d07 100644
--- a/src/usr/local/www/system.php
+++ b/src/usr/local/www/system.php
@@ -75,7 +75,7 @@ list($pconfig['dns1'], $pconfig['dns2'], $pconfig['dns3'], $pconfig['dns4']) = $
$arr_gateways = return_gateways_array();
-// set default colmns to two if unset
+// set default columns to two if unset
if (!isset($config['system']['webgui']['dashboardcolumns'])) {
$config['system']['webgui']['dashboardcolumns'] = 2;
}
@@ -490,13 +490,31 @@ $section->addInput(new Form_Select(
$form->add($section);
$csslist = array();
-$css = glob("/usr/local/www/css/*.css");
-foreach ($css as $file) {
- $file = basename($file);
- $csslist[$file] = pathinfo($file, PATHINFO_FILENAME);
-}
-asort($csslist);
+// List pfSense files, then any BETA files followed by any user-contributed files
+$cssfiles = glob("/usr/local/www/css/*.css");
+
+if(is_array($cssfiles)) {
+ arsort($cssfiles);
+ $usrcss = $pfscss = $betacss = array();
+
+ foreach ($cssfiles as $css) {
+ if (strpos($css, "BETA") != 0) {
+ array_push($betacss, $css);
+ } else if (strpos($css, "pfSense") != 0) {
+ array_push($pfscss, $css);
+ } else {
+ array_push($usrcss, $css);
+ }
+ }
+
+ $css = array_merge($pfscss, $betacss, $usrcss);
+
+ foreach ($css as $file) {
+ $file = basename($file);
+ $csslist[$file] = pathinfo($file, PATHINFO_FILENAME);
+ }
+}
if (!isset($pconfig['webguicss']) || !isset($csslist[$pconfig['webguicss']])) {
$pconfig['webguicss'] = "pfSense.css";
diff --git a/src/usr/local/www/system_advanced_admin.php b/src/usr/local/www/system_advanced_admin.php
index 7bc8b4c..820fa47 100644
--- a/src/usr/local/www/system_advanced_admin.php
+++ b/src/usr/local/www/system_advanced_admin.php
@@ -437,7 +437,7 @@ $section->addInput(new Form_Checkbox(
'permitted, regardless of the user-defined firewall rule set. Check this box to '.
'disable this automatically added rule, so access to the webConfigurator is '.
'controlled by the user-defined firewall rules (ensure a firewall rule is '.
- 'in place that allows access, to avoid being locked out!)<em>Hint: the &quot;Set interface(s) IP address&quot; '.
+ 'in place that allows access, to avoid being locked out!) <em>Hint: the &quot;Set interface(s) IP address&quot; '.
'option in the console menu resets this setting as well.</em>', [$lockout_interface]);
$section->addInput(new Form_Checkbox(
diff --git a/src/usr/local/www/system_advanced_firewall.php b/src/usr/local/www/system_advanced_firewall.php
index 168ac93..67ceed5 100644
--- a/src/usr/local/www/system_advanced_firewall.php
+++ b/src/usr/local/www/system_advanced_firewall.php
@@ -573,7 +573,7 @@ $section->addInput(new Form_Input(
$pconfig['aliasesresolveinterval'],
['placeholder' => '300']
))->setHelp('Interval, in seconds, that will be used to resolve hostnames '.
- 'configured on aliases.. <br/>Note: Leave this blank for the default '.
+ 'configured on aliases. <br/>Note: Leave this blank for the default '.
'(300s).');
$section->addInput(new Form_Checkbox(
@@ -678,7 +678,7 @@ if (count($config['interfaces']) > 1) {
$form->add($section);
}
-$section = new Form_Section('State Timeouts in Seconds. (Leave blank for default)');
+$section = new Form_Section('State Timeouts (seconds - blank for default)');
$tcpTimeouts = array('First', 'Opening', 'Established', 'Closing', 'FIN Wait', 'Closed');
foreach ($tcpTimeouts as $name) {
diff --git a/src/usr/local/www/system_advanced_misc.php b/src/usr/local/www/system_advanced_misc.php
index d690d38..897418d 100644
--- a/src/usr/local/www/system_advanced_misc.php
+++ b/src/usr/local/www/system_advanced_misc.php
@@ -322,6 +322,7 @@ include("head.inc");
if ($input_errors) {
print_input_errors($input_errors);
+ unset($pconfig['doreboot']);
}
if ($savemsg) {
diff --git a/src/usr/local/www/system_advanced_network.php b/src/usr/local/www/system_advanced_network.php
index 950e3a6..459974d 100644
--- a/src/usr/local/www/system_advanced_network.php
+++ b/src/usr/local/www/system_advanced_network.php
@@ -95,7 +95,7 @@ if ($_POST) {
if ($_POST['ipv6nat_enable'] == "yes") {
$config['diag']['ipv6nat']['enable'] = true;
- $config['diag']['ipv6nat']['ipaddr'] = $_POST['ip-address'];
+ $config['diag']['ipv6nat']['ipaddr'] = $_POST['ipv6nat_ipaddr'];
} else {
if ($config['diag']) {
if ($config['diag']['ipv6nat']) {
@@ -215,7 +215,7 @@ $group->add(new Form_Input(
$pconfig['ipv6nat_ipaddr']
))->setHelp('Enable IPv4 NAT encapsulation of IPv6 packets. <br/>This provides an '.
'RFC 2893 compatibility mechanism that can be used to tunneling IPv6 packets over '.
- 'IPv4 routing infrastructures. If enabled, don"t forget to add a firewall rule to '.
+ 'IPv4 routing infrastructures. If enabled, don\'t forget to add a firewall rule to '.
'permit IPv6 packets.');
$section->add($group);
@@ -261,7 +261,7 @@ $section->addInput(new Form_Checkbox(
isset($config['system']['disablesegmentationoffloading'])
))->setHelp('Checking this option will disable hardware TCP segmentation '.
'offloading (TSO, TSO4, TSO6). This offloading is broken in some hardware '.
- 'drivers, and may impact performance with some specific NICs.This will take '.
+ 'drivers, and may impact performance with some specific NICs. This will take '.
'effect after a machine reboot or re-configure of each interface.');
$section->addInput(new Form_Checkbox(
@@ -271,7 +271,7 @@ $section->addInput(new Form_Checkbox(
isset($config['system']['disablelargereceiveoffloading'])
))->setHelp('Checking this option will disable hardware large receive offloading '.
'(LRO). This offloading is broken in some hardware drivers, and may impact '.
- 'performance with some specific NICs.This will take effect after a machine reboot '.
+ 'performance with some specific NICs. This will take effect after a machine reboot '.
'or re-configure of each interface.');
$section->addInput(new Form_Checkbox(
diff --git a/src/usr/local/www/system_advanced_sysctl.php b/src/usr/local/www/system_advanced_sysctl.php
index 109326e..6467f25 100644
--- a/src/usr/local/www/system_advanced_sysctl.php
+++ b/src/usr/local/www/system_advanced_sysctl.php
@@ -142,8 +142,8 @@ if ($_POST) {
if (!$_POST['tunable'] || !isset($_POST['value'])) {
$input_errors[] = gettext("Both a name and a value must be specified.");
- } else if (!ctype_alnum($_POST['value'])) {
- $input_errors[] = gettext("The value may contain alphanumeric characters only.");
+ } else if (preg_match("/[^a-zA-Z0-9.\-_]/", $_POST['value'])) {
+ $input_errors[] = gettext("The value may only contain alphanumeric characters, - and _.");
} else {
$tunableent['tunable'] = htmlspecialchars($_POST['tunable']);
$tunableent['value'] = htmlspecialchars($_POST['value']);
diff --git a/src/usr/local/www/system_gateway_groups_edit.php b/src/usr/local/www/system_gateway_groups_edit.php
index d130a69..f1a3045 100644
--- a/src/usr/local/www/system_gateway_groups_edit.php
+++ b/src/usr/local/www/system_gateway_groups_edit.php
@@ -115,7 +115,7 @@ if ($_POST) {
$input_errors[] = gettext("A valid gateway group name must be specified.");
}
if (!is_validaliasname($_POST['name'])) {
- $input_errors[] = gettext("The gateway name must not contain invalid characters.");
+ $input_errors[] = invalidaliasnamemsg($_POST['name'], gettext("gateway group"));
}
if (isset($_POST['name'])) {
diff --git a/src/usr/local/www/system_gateways_edit.php b/src/usr/local/www/system_gateways_edit.php
index f483979..f6042a3 100644
--- a/src/usr/local/www/system_gateways_edit.php
+++ b/src/usr/local/www/system_gateways_edit.php
@@ -147,7 +147,7 @@ if ($_POST) {
$input_errors[] = "A valid gateway name must be specified.";
}
if (!is_validaliasname($_POST['name'])) {
- $input_errors[] = gettext("The gateway name must not contain invalid characters.");
+ $input_errors[] = invalidaliasnamemsg($_POST['name'], gettext("gateway"));
} else if (isset($_POST['disabled'])) {
// We have a valid gateway name that the user wants to mark as disabled.
// Check if the gateway name is used in any gateway group.
@@ -829,7 +829,7 @@ $section->addInput(new Form_StaticText(
'ratio between these values control the accuracy of the numbers reported and ' .
'the timeliness of alerts.') .
'<br/><br/>' .
- gettext('A longer time period will will provide smoother results for round trip time ' .
+ gettext('A longer time period will provide smoother results for round trip time ' .
'and loss, but will increase the time before a latency or loss alert is triggered.') .
'<br/><br/>' .
gettext('A shorter probe interval will decrease the time required before a latency ' .
diff --git a/src/usr/local/www/system_groupmanager.php b/src/usr/local/www/system_groupmanager.php
index dc6b7cd..9510084 100644
--- a/src/usr/local/www/system_groupmanager.php
+++ b/src/usr/local/www/system_groupmanager.php
@@ -188,11 +188,17 @@ if (isset($_POST['save'])) {
}
}
-
if (strlen($_POST['groupname']) > 16) {
$input_errors[] = gettext("The group name is longer than 16 characters.");
}
+ /* Check the POSTed members to ensure they are valid and exist */
+ foreach ($_POST['members'] as $newmember) {
+ if (!is_numeric($newmember) || empty(getUserEntryByUID($newmember))) {
+ $input_errors[] = gettext("One or more invalid group members was submitted.");
+ }
+ }
+
if (!$input_errors && !(isset($id) && $a_group[$id])) {
/* make sure there are no dupes */
foreach ($a_group as $group) {
@@ -482,7 +488,7 @@ if ($pconfig['gid'] != 1998) { // all users group
'fa-angle-double-left'
))->setAttribute('type','button')->removeClass('btn-primary')->addClass('btn-info btn-sm');
- $group->setHelp('Hold down CTRL (pc)/COMMAND (mac) key to select multiple items');
+ $group->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items.');
$section->add($group);
}
diff --git a/src/usr/local/www/system_groupmanager_addprivs.php b/src/usr/local/www/system_groupmanager_addprivs.php
index 5c58092..534dcb7 100644
--- a/src/usr/local/www/system_groupmanager_addprivs.php
+++ b/src/usr/local/www/system_groupmanager_addprivs.php
@@ -201,7 +201,7 @@ $section->addInput(new Form_Select(
build_priv_list(),
true
))->addClass('shadowselect')
- ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items');
+ ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items.');
$section->addInput(new Form_Input(
'filtertxt',
diff --git a/src/usr/local/www/system_update_settings.php b/src/usr/local/www/system_update_settings.php
index 8c7a6f2..79a9b00 100644
--- a/src/usr/local/www/system_update_settings.php
+++ b/src/usr/local/www/system_update_settings.php
@@ -72,10 +72,8 @@ if ($_POST) {
if ($_POST['fwbranch']) {
if (($_POST['fwbranch'] == "development") && !is_pkg_installed($g['product_name'] . "-repo-devel")) {
pkg_switch_repo(true);
- pkg_update(true);
} else if (($_POST['fwbranch'] == "stable") && !is_pkg_installed($g['product_name'] . "-repo")) {
pkg_switch_repo(false);
- pkg_update(true);
}
}
@@ -189,9 +187,9 @@ if (file_exists("/usr/local/bin/git") && $g['platform'] == $g['product_name']) {
$section->addInput(new Form_Checkbox(
'synconupgrade',
'Auto sync on update',
- 'After updating, sync with the following repository/branch before reboot',
+ 'Enable repository/branch sync before reboot',
isset($gitcfg['synconupgrade'])
- ))->setHelp('After updating, sync with the following repository/branch before reboot');
+ ))->setHelp('After updating, sync with the following repository/branch before reboot.');
if (is_dir("/root/pfsense/pfSenseGITREPO/pfSenseGITREPO")) {
exec("cd /root/pfsense/pfSenseGITREPO/pfSenseGITREPO && git config remote.origin.url", $output_str);
@@ -228,7 +226,7 @@ if (file_exists("/usr/local/bin/git") && $g['platform'] == $g['product_name']) {
'text',
($gitcfg['branch'] ? $gitcfg['branch'] : '')
))->setHelp('The most recently used branch was "%s". (Usually the branch name is master)' .
- '<br />Note: Sync will not be performed if a branch is not specified', [$lastbranch]);
+ '<br />Note: Sync will not be performed if a branch is not specified.', [$lastbranch]);
$form->add($section);
} // e-o-if(file_exista()
diff --git a/src/usr/local/www/system_usermanager.php b/src/usr/local/www/system_usermanager.php
index 2df24be..988ad28 100644
--- a/src/usr/local/www/system_usermanager.php
+++ b/src/usr/local/www/system_usermanager.php
@@ -213,6 +213,13 @@ if ($_POST['save']) {
$input_errors[] = gettext("IPsec Pre-Shared Key contains invalid characters.");
}
+ /* Check the POSTed groups to ensure they are valid and exist */
+ foreach ($_POST['groups'] as $newgroup) {
+ if (empty(getGroupEntry($newgroup))) {
+ $input_errors[] = gettext("One or more invalid groups was submitted.");
+ }
+ }
+
if (isset($id) && $a_user[$id]) {
$oldusername = $a_user[$id]['name'];
} else {
@@ -669,7 +676,7 @@ if ($act == "new" || $act == "edit" || $input_errors):
$section->addInput(new Form_Input(
'expires',
'Expiration date',
- 'date',
+ 'text',
$pconfig['expires']
))->setHelp('Leave blank if the account shouldn\'t expire, otherwise enter '.
'the expiration date');
@@ -728,7 +735,7 @@ if ($act == "new" || $act == "edit" || $input_errors):
'fa-angle-double-left'
))->setAttribute('type','button')->removeClass('btn-primary')->addClass('btn-info btn-sm');
- $group->setHelp('Hold down CTRL (pc)/COMMAND (mac) key to select multiple items');
+ $group->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items.');
$section->add($group);
// ==== Button for adding user certificate ================================
@@ -888,6 +895,7 @@ events.push(function() {
}
});
+ $('#expires').datepicker();
// ---------- On initial page load ------------------------------------------------------------
diff --git a/src/usr/local/www/system_usermanager_addprivs.php b/src/usr/local/www/system_usermanager_addprivs.php
index da7b942..b0f4400 100644
--- a/src/usr/local/www/system_usermanager_addprivs.php
+++ b/src/usr/local/www/system_usermanager_addprivs.php
@@ -186,7 +186,7 @@ $section->addInput(new Form_Select(
build_priv_list(),
true
))->addClass('multiselect')
- ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items');
+ ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items.');
$section->addInput(new Form_Select(
'shadow',
@@ -195,7 +195,7 @@ $section->addInput(new Form_Select(
build_priv_list(),
true
))->addClass('shadowselect')
- ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items');
+ ->setHelp('Hold down CTRL (PC)/COMMAND (Mac) key to select multiple items.');
$section->addInput(new Form_Input(
'filtertxt',
diff --git a/src/usr/local/www/system_usermanager_settings.php b/src/usr/local/www/system_usermanager_settings.php
index 3bdca81..fb1a0bd 100644
--- a/src/usr/local/www/system_usermanager_settings.php
+++ b/src/usr/local/www/system_usermanager_settings.php
@@ -218,7 +218,7 @@ $section->addInput(new Form_Input(
$pconfig['session_timeout'],
[min => 0]
))->setHelp('Time in minutes to expire idle management sessions. The default is 4 '.
- 'hours (240 minutes).Enter 0 to never expire sessions. NOTE: This is a security '.
+ 'hours (240 minutes). Enter 0 to never expire sessions. NOTE: This is a security '.
'risk!');
$auth_servers = array();
diff --git a/src/usr/local/www/vendor/d3/d3.min.js b/src/usr/local/www/vendor/d3/d3.min.js
index 7b7b9b1..1664873 100644
--- a/src/usr/local/www/vendor/d3/d3.min.js
+++ b/src/usr/local/www/vendor/d3/d3.min.js
@@ -1,5 +1,5 @@
-!function(){function n(n,t){return t>n?-1:n>t?1:n>=t?0:0/0}function t(n){return null!=n&&!isNaN(n)}function e(n){return{left:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)<0?r=i+1:u=i}return r},right:function(t,e,r,u){for(arguments.length<3&&(r=0),arguments.length<4&&(u=t.length);u>r;){var i=r+u>>>1;n(t[i],e)>0?u=i:r=i+1}return r}}}function r(n){return n.length}function u(n){for(var t=1;n*t%1;)t*=10;return t}function i(n,t){try{for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}catch(r){n.prototype=t}}function o(){}function a(n){return ha+n in this}function c(n){return n=ha+n,n in this&&delete this[n]}function s(){var n=[];return this.forEach(function(t){n.push(t)}),n}function l(){var n=0;for(var t in this)t.charCodeAt(0)===ga&&++n;return n}function f(){for(var n in this)if(n.charCodeAt(0)===ga)return!1;return!0}function h(){}function g(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function p(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.substring(1);for(var e=0,r=pa.length;r>e;++e){var u=pa[e]+t;if(u in n)return u}}function v(){}function d(){}function m(n){function t(){for(var t,r=e,u=-1,i=r.length;++u<i;)(t=r[u].on)&&t.apply(this,arguments);return n}var e=[],r=new o;return t.on=function(t,u){var i,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,i=e.indexOf(o)).concat(e.slice(i+1)),r.remove(t)),u&&e.push(r.set(t,{on:u})),n)},t}function y(){Go.event.preventDefault()}function x(){for(var n,t=Go.event;n=t.sourceEvent;)t=n;return t}function M(n){for(var t=new d,e=0,r=arguments.length;++e<r;)t[arguments[e]]=m(t);return t.of=function(e,r){return function(u){try{var i=u.sourceEvent=Go.event;u.target=n,Go.event=u,t[u.type].apply(e,r)}finally{Go.event=i}}},t}function _(n){return da(n,_a),n}function b(n){return"function"==typeof n?n:function(){return ma(n,this)}}function w(n){return"function"==typeof n?n:function(){return ya(n,this)}}function S(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function u(){this.setAttribute(n,t)}function i(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=Go.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?i:u}function k(n){return n.trim().replace(/\s+/g," ")}function E(n){return new RegExp("(?:^|\\s+)"+Go.requote(n)+"(?:\\s+|$)","g")}function N(n){return n.trim().split(/^|\s+/)}function A(n,t){function e(){for(var e=-1;++e<u;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<u;)n[e](this,r)}n=N(n).map(C);var u=n.length;return"function"==typeof t?r:e}function C(n){var t=E(n);return function(e,r){if(u=e.classList)return r?u.add(n):u.remove(n);var u=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(u)||e.setAttribute("class",k(u+" "+n))):e.setAttribute("class",k(u.replace(t," ")))}}function L(n,t,e){function r(){this.style.removeProperty(n)}function u(){this.style.setProperty(n,t,e)}function i(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?i:u}function T(n,t){function e(){delete this[n]}function r(){this[n]=t}function u(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?u:r}function q(n){return"function"==typeof n?n:(n=Go.ns.qualify(n)).local?function(){return this.ownerDocument.createElementNS(n.space,n.local)}:function(){return this.ownerDocument.createElementNS(this.namespaceURI,n)}}function z(n){return{__data__:n}}function R(n){return function(){return Ma(this,n)}}function D(t){return arguments.length||(t=n),function(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}}function P(n,t){for(var e=0,r=n.length;r>e;e++)for(var u,i=n[e],o=0,a=i.length;a>o;o++)(u=i[o])&&t(u,o,e);return n}function U(n){return da(n,wa),n}function j(n){var t,e;return function(r,u,i){var o,a=n[i].update,c=a.length;for(i!=e&&(e=i,t=0),u>=t&&(t=u+1);!(o=a[t])&&++t<c;);return o}}function H(){var n=this.__transition__;n&&++n.active}function F(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function u(){var u=c(t,Qo(arguments));r.call(this),this.addEventListener(n,this[o]=u,u.$=e),u._=t}function i(){var t,e=new RegExp("^__on([^.]+)"+Go.requote(n)+"$");for(var r in this)if(t=r.match(e)){var u=this[r];this.removeEventListener(t[1],u,u.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),c=O;a>0&&(n=n.substring(0,a));var s=ka.get(n);return s&&(n=s,c=Y),a?t?u:r:t?v:i}function O(n,t){return function(e){var r=Go.event;Go.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{Go.event=r}}}function Y(n,t){var e=O(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function I(){var n=".dragsuppress-"+ ++Na,t="click"+n,e=Go.select(ea).on("touchmove"+n,y).on("dragstart"+n,y).on("selectstart"+n,y);if(Ea){var r=ta.style,u=r[Ea];r[Ea]="none"}return function(i){function o(){e.on(t,null)}e.on(n,null),Ea&&(r[Ea]=u),i&&(e.on(t,function(){y(),o()},!0),setTimeout(o,0))}}function Z(n,t){t.changedTouches&&(t=t.changedTouches[0]);var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,r=r.matrixTransform(n.getScreenCTM().inverse()),[r.x,r.y]}var u=n.getBoundingClientRect();return[t.clientX-u.left-n.clientLeft,t.clientY-u.top-n.clientTop]}function V(){return Go.event.changedTouches[0].identifier}function $(){return Go.event.target}function X(){return ea}function B(n){return n>0?1:0>n?-1:0}function J(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function W(n){return n>1?0:-1>n?Aa:Math.acos(n)}function G(n){return n>1?La:-1>n?-La:Math.asin(n)}function K(n){return((n=Math.exp(n))-1/n)/2}function Q(n){return((n=Math.exp(n))+1/n)/2}function nt(n){return((n=Math.exp(2*n))-1)/(n+1)}function tt(n){return(n=Math.sin(n/2))*n}function et(){}function rt(n,t,e){return new ut(n,t,e)}function ut(n,t,e){this.h=n,this.s=t,this.l=e}function it(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?i+(o-i)*n/60:180>n?o:240>n?i+(o-i)*(240-n)/60:i}function u(n){return Math.round(255*r(n))}var i,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,i=2*e-o,yt(u(n+120),u(n),u(n-120))}function ot(n,t,e){return new at(n,t,e)}function at(n,t,e){this.h=n,this.c=t,this.l=e}function ct(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),st(e,Math.cos(n*=za)*t,Math.sin(n)*t)}function st(n,t,e){return new lt(n,t,e)}function lt(n,t,e){this.l=n,this.a=t,this.b=e}function ft(n,t,e){var r=(n+16)/116,u=r+t/500,i=r-e/200;return u=gt(u)*Za,r=gt(r)*Va,i=gt(i)*$a,yt(vt(3.2404542*u-1.5371385*r-.4985314*i),vt(-.969266*u+1.8760108*r+.041556*i),vt(.0556434*u-.2040259*r+1.0572252*i))}function ht(n,t,e){return n>0?ot(Math.atan2(e,t)*Ra,Math.sqrt(t*t+e*e),n):ot(0/0,0/0,n)}function gt(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function pt(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function vt(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function dt(n){return yt(n>>16,255&n>>8,255&n)}function mt(n){return dt(n)+""}function yt(n,t,e){return new xt(n,t,e)}function xt(n,t,e){this.r=n,this.g=t,this.b=e}function Mt(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _t(n,t,e){var r,u,i,o=0,a=0,c=0;if(r=/([a-z]+)\((.*)\)/i.exec(n))switch(u=r[2].split(","),r[1]){case"hsl":return e(parseFloat(u[0]),parseFloat(u[1])/100,parseFloat(u[2])/100);case"rgb":return t(kt(u[0]),kt(u[1]),kt(u[2]))}return(i=Ja.get(n))?t(i.r,i.g,i.b):(null==n||"#"!==n.charAt(0)||isNaN(i=parseInt(n.substring(1),16))||(4===n.length?(o=(3840&i)>>4,o=o>>4|o,a=240&i,a=a>>4|a,c=15&i,c=c<<4|c):7===n.length&&(o=(16711680&i)>>16,a=(65280&i)>>8,c=255&i)),t(o,a,c))}function bt(n,t,e){var r,u,i=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-i,c=(o+i)/2;return a?(u=.5>c?a/(o+i):a/(2-o-i),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=0/0,u=c>0&&1>c?0:r),rt(r,u,c)}function wt(n,t,e){n=St(n),t=St(t),e=St(e);var r=pt((.4124564*n+.3575761*t+.1804375*e)/Za),u=pt((.2126729*n+.7151522*t+.072175*e)/Va),i=pt((.0193339*n+.119192*t+.9503041*e)/$a);return st(116*u-16,500*(r-u),200*(u-i))}function St(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function kt(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function Et(n){return"function"==typeof n?n:function(){return n}}function Nt(n){return n}function At(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Ct(t,e,n,r)}}function Ct(n,t,e,r){function u(){var n,t=c.status;if(!t&&c.responseText||t>=200&&300>t||304===t){try{n=e.call(i,c)}catch(r){return o.error.call(i,r),void 0}o.load.call(i,n)}else o.error.call(i,c)}var i={},o=Go.dispatch("beforesend","progress","load","error"),a={},c=new XMLHttpRequest,s=null;return!ea.XDomainRequest||"withCredentials"in c||!/^(http(s)?:)?\/\//.test(n)||(c=new XDomainRequest),"onload"in c?c.onload=c.onerror=u:c.onreadystatechange=function(){c.readyState>3&&u()},c.onprogress=function(n){var t=Go.event;Go.event=n;try{o.progress.call(i,c)}finally{Go.event=t}},i.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",i)},i.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",i):t},i.responseType=function(n){return arguments.length?(s=n,i):s},i.response=function(n){return e=n,i},["get","post"].forEach(function(n){i[n]=function(){return i.send.apply(i,[n].concat(Qo(arguments)))}}),i.send=function(e,r,u){if(2===arguments.length&&"function"==typeof r&&(u=r,r=null),c.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),c.setRequestHeader)for(var l in a)c.setRequestHeader(l,a[l]);return null!=t&&c.overrideMimeType&&c.overrideMimeType(t),null!=s&&(c.responseType=s),null!=u&&i.on("error",u).on("load",function(n){u(null,n)}),o.beforesend.call(i,c),c.send(null==r?null:r),i},i.abort=function(){return c.abort(),i},Go.rebind(i,o,"on"),null==r?i:i.get(Lt(r))}function Lt(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Tt(){var n=qt(),t=zt()-n;t>24?(isFinite(t)&&(clearTimeout(Qa),Qa=setTimeout(Tt,t)),Ka=0):(Ka=1,tc(Tt))}function qt(){var n=Date.now();for(nc=Wa;nc;)n>=nc.t&&(nc.f=nc.c(n-nc.t)),nc=nc.n;return n}function zt(){for(var n,t=Wa,e=1/0;t;)t.f?t=n?n.n=t.n:Wa=t.n:(t.t<e&&(e=t.t),t=(n=t).n);return Ga=n,e}function Rt(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Dt(n,t){var e=Math.pow(10,3*fa(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function Pt(n){var t=n.decimal,e=n.thousands,r=n.grouping,u=n.currency,i=r?function(n){for(var t=n.length,u=[],i=0,o=r[0];t>0&&o>0;)u.push(n.substring(t-=o,t+o)),o=r[i=(i+1)%r.length];return u.reverse().join(e)}:Nt;return function(n){var e=rc.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"",c=e[4]||"",s=e[5],l=+e[6],f=e[7],h=e[8],g=e[9],p=1,v="",d="",m=!1;switch(h&&(h=+h.substring(1)),(s||"0"===r&&"="===o)&&(s=r="0",o="=",f&&(l-=Math.floor((l-1)/4))),g){case"n":f=!0,g="g";break;case"%":p=100,d="%",g="f";break;case"p":p=100,d="%",g="r";break;case"b":case"o":case"x":case"X":"#"===c&&(v="0"+g.toLowerCase());case"c":case"d":m=!0,h=0;break;case"s":p=-1,g="r"}"$"===c&&(v=u[0],d=u[1]),"r"!=g||h||(g="g"),null!=h&&("g"==g?h=Math.max(1,Math.min(21,h)):("e"==g||"f"==g)&&(h=Math.max(0,Math.min(20,h)))),g=uc.get(g)||Ut;var y=s&&f;return function(n){var e=d;if(m&&n%1)return"";var u=0>n||0===n&&0>1/n?(n=-n,"-"):a;if(0>p){var c=Go.formatPrefix(n,h);n=c.scale(n),e=c.symbol+d}else n*=p;n=g(n,h);var x=n.lastIndexOf("."),M=0>x?n:n.substring(0,x),_=0>x?"":t+n.substring(x+1);!s&&f&&(M=i(M));var b=v.length+M.length+_.length+(y?0:u.length),w=l>b?new Array(b=l-b+1).join(r):"";return y&&(M=i(w+M)),u+=v,n=M+_,("<"===o?u+n+w:">"===o?w+u+n:"^"===o?w.substring(0,b>>=1)+u+n+w.substring(b):u+(y?n:w+n))+e}}}function Ut(n){return n+""}function jt(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function Ht(n,t,e){function r(t){var e=n(t),r=i(e,1);return r-t>t-e?e:r}function u(e){return t(e=n(new oc(e-1)),1),e}function i(n,e){return t(n=new oc(+n),e),n}function o(n,r,i){var o=u(n),a=[];if(i>1)for(;r>o;)e(o)%i||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{oc=jt;var r=new jt;return r._=n,o(r,t,e)}finally{oc=Date}}n.floor=n,n.round=r,n.ceil=u,n.offset=i,n.range=o;var c=n.utc=Ft(n);return c.floor=c,c.round=Ft(r),c.ceil=Ft(u),c.offset=Ft(i),c.range=a,n}function Ft(n){return function(t,e){try{oc=jt;var r=new jt;return r._=t,n(r,e)._}finally{oc=Date}}}function Ot(n){function t(n){function t(t){for(var e,u,i,o=[],a=-1,c=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.substring(c,a)),null!=(u=cc[e=n.charAt(++a)])&&(e=n.charAt(++a)),(i=A[e])&&(e=i(t,null==u?"e"===e?" ":"0":u)),o.push(e),c=a+1);return o.push(n.substring(c,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},u=e(r,n,t,0);if(u!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var i=null!=r.Z&&oc!==jt,o=new(i?jt:oc);return"j"in r?o.setFullYear(r.y,0,r.j):"w"in r&&("W"in r||"U"in r)?(o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+Math.floor(r.Z/100),r.M+r.Z%100,r.S,r.L),i?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var u,i,o,a=0,c=t.length,s=e.length;c>a;){if(r>=s)return-1;if(u=t.charCodeAt(a++),37===u){if(o=t.charAt(a++),i=C[o in cc?t.charAt(a++):o],!i||(r=i(n,e,r))<0)return-1}else if(u!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){b.lastIndex=0;var r=b.exec(t.substring(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){M.lastIndex=0;var r=M.exec(t.substring(e));return r?(n.w=_.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){E.lastIndex=0;var r=E.exec(t.substring(e));return r?(n.m=N.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.substring(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function c(n,t,r){return e(n,A.x.toString(),t,r)}function s(n,t,r){return e(n,A.X.toString(),t,r)}function l(n,t,e){var r=x.get(t.substring(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var f=n.dateTime,h=n.date,g=n.time,p=n.periods,v=n.days,d=n.shortDays,m=n.months,y=n.shortMonths;t.utc=function(n){function e(n){try{oc=jt;var t=new oc;return t._=n,r(t)}finally{oc=Date}}var r=t(n);return e.parse=function(n){try{oc=jt;var t=r.parse(n);return t&&t._}finally{oc=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ae;var x=Go.map(),M=It(v),_=Zt(v),b=It(d),w=Zt(d),S=It(m),k=Zt(m),E=It(y),N=Zt(y);p.forEach(function(n,t){x.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return y[n.getMonth()]},B:function(n){return m[n.getMonth()]},c:t(f),d:function(n,t){return Yt(n.getDate(),t,2)},e:function(n,t){return Yt(n.getDate(),t,2)},H:function(n,t){return Yt(n.getHours(),t,2)},I:function(n,t){return Yt(n.getHours()%12||12,t,2)},j:function(n,t){return Yt(1+ic.dayOfYear(n),t,3)},L:function(n,t){return Yt(n.getMilliseconds(),t,3)},m:function(n,t){return Yt(n.getMonth()+1,t,2)},M:function(n,t){return Yt(n.getMinutes(),t,2)},p:function(n){return p[+(n.getHours()>=12)]},S:function(n,t){return Yt(n.getSeconds(),t,2)},U:function(n,t){return Yt(ic.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Yt(ic.mondayOfYear(n),t,2)},x:t(h),X:t(g),y:function(n,t){return Yt(n.getFullYear()%100,t,2)},Y:function(n,t){return Yt(n.getFullYear()%1e4,t,4)},Z:ie,"%":function(){return"%"}},C={a:r,A:u,b:i,B:o,c:a,d:Qt,e:Qt,H:te,I:te,j:ne,L:ue,m:Kt,M:ee,p:l,S:re,U:$t,w:Vt,W:Xt,x:c,X:s,y:Jt,Y:Bt,Z:Wt,"%":oe};return t}function Yt(n,t,e){var r=0>n?"-":"",u=(r?-n:n)+"",i=u.length;return r+(e>i?new Array(e-i+1).join(t)+u:u)}function It(n){return new RegExp("^(?:"+n.map(Go.requote).join("|")+")","i")}function Zt(n){for(var t=new o,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function Vt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function $t(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e));return r?(n.U=+r[0],e+r[0].length):-1}function Xt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e));return r?(n.W=+r[0],e+r[0].length):-1}function Bt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Jt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.y=Gt(+r[0]),e+r[0].length):-1}function Wt(n,t,e){return/^[+-]\d{4}$/.test(t=t.substring(e,e+5))?(n.Z=+t,e+5):-1}function Gt(n){return n+(n>68?1900:2e3)}function Kt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Qt(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function ne(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function te(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function ee(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function re(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ue(n,t,e){sc.lastIndex=0;var r=sc.exec(t.substring(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function ie(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=~~(fa(t)/60),u=fa(t)%60;return e+Yt(r,"0",2)+Yt(u,"0",2)}function oe(n,t,e){lc.lastIndex=0;var r=lc.exec(t.substring(e,e+1));return r?e+r[0].length:-1}function ae(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ce(){}function se(n,t,e){var r=e.s=n+t,u=r-n,i=r-u;e.t=n-i+(t-u)}function le(n,t){n&&pc.hasOwnProperty(n.type)&&pc[n.type](n,t)}function fe(n,t,e){var r,u=-1,i=n.length-e;for(t.lineStart();++u<i;)r=n[u],t.point(r[0],r[1],r[2]);t.lineEnd()}function he(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)fe(n[e],t,1);t.polygonEnd()}function ge(){function n(n,t){n*=za,t=t*za/2+Aa/4;var e=n-r,o=e>=0?1:-1,a=o*e,c=Math.cos(t),s=Math.sin(t),l=i*s,f=u*c+l*Math.cos(a),h=l*o*Math.sin(a);dc.add(Math.atan2(h,f)),r=n,u=c,i=s}var t,e,r,u,i;mc.point=function(o,a){mc.point=n,r=(t=o)*za,u=Math.cos(a=(e=a)*za/2+Aa/4),i=Math.sin(a)},mc.lineEnd=function(){n(t,e)}}function pe(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function ve(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function de(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function me(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function ye(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function xe(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Me(n){return[Math.atan2(n[1],n[0]),G(n[2])]}function _e(n,t){return fa(n[0]-t[0])<Ta&&fa(n[1]-t[1])<Ta}function be(n,t){n*=za;var e=Math.cos(t*=za);we(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function we(n,t,e){++yc,Mc+=(n-Mc)/yc,_c+=(t-_c)/yc,bc+=(e-bc)/yc}function Se(){function n(n,u){n*=za;var i=Math.cos(u*=za),o=i*Math.cos(n),a=i*Math.sin(n),c=Math.sin(u),s=Math.atan2(Math.sqrt((s=e*c-r*a)*s+(s=r*o-t*c)*s+(s=t*a-e*o)*s),t*o+e*a+r*c);xc+=s,wc+=s*(t+(t=o)),Sc+=s*(e+(e=a)),kc+=s*(r+(r=c)),we(t,e,r)}var t,e,r;Cc.point=function(u,i){u*=za;var o=Math.cos(i*=za);t=o*Math.cos(u),e=o*Math.sin(u),r=Math.sin(i),Cc.point=n,we(t,e,r)}}function ke(){Cc.point=be}function Ee(){function n(n,t){n*=za;var e=Math.cos(t*=za),o=e*Math.cos(n),a=e*Math.sin(n),c=Math.sin(t),s=u*c-i*a,l=i*o-r*c,f=r*a-u*o,h=Math.sqrt(s*s+l*l+f*f),g=r*o+u*a+i*c,p=h&&-W(g)/h,v=Math.atan2(h,g);Ec+=p*s,Nc+=p*l,Ac+=p*f,xc+=v,wc+=v*(r+(r=o)),Sc+=v*(u+(u=a)),kc+=v*(i+(i=c)),we(r,u,i)}var t,e,r,u,i;Cc.point=function(o,a){t=o,e=a,Cc.point=n,o*=za;var c=Math.cos(a*=za);r=c*Math.cos(o),u=c*Math.sin(o),i=Math.sin(a),we(r,u,i)},Cc.lineEnd=function(){n(t,e),Cc.lineEnd=ke,Cc.point=be}}function Ne(){return!0}function Ae(n,t,e,r,u){var i=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(_e(e,r)){u.lineStart();for(var a=0;t>a;++a)u.point((e=n[a])[0],e[1]);return u.lineEnd(),void 0}var c=new Le(e,n,null,!0),s=new Le(e,null,c,!1);c.o=s,i.push(c),o.push(s),c=new Le(r,n,null,!1),s=new Le(r,null,c,!0),c.o=s,i.push(c),o.push(s)}}),o.sort(t),Ce(i),Ce(o),i.length){for(var a=0,c=e,s=o.length;s>a;++a)o[a].e=c=!c;for(var l,f,h=i[0];;){for(var g=h,p=!0;g.v;)if((g=g.n)===h)return;l=g.z,u.lineStart();do{if(g.v=g.o.v=!0,g.e){if(p)for(var a=0,s=l.length;s>a;++a)u.point((f=l[a])[0],f[1]);else r(g.x,g.n.x,1,u);g=g.n}else{if(p){l=g.p.z;for(var a=l.length-1;a>=0;--a)u.point((f=l[a])[0],f[1])}else r(g.x,g.p.x,-1,u);g=g.p}g=g.o,l=g.z,p=!p}while(!g.v);u.lineEnd()}}}function Ce(n){if(t=n.length){for(var t,e,r=0,u=n[0];++r<t;)u.n=e=n[r],e.p=u,u=e;u.n=e=n[0],e.p=u}}function Le(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Te(n,t,e,r){return function(u,i){function o(t,e){var r=u(t,e);n(t=r[0],e=r[1])&&i.point(t,e)}function a(n,t){var e=u(n,t);d.point(e[0],e[1])}function c(){y.point=a,d.lineStart()}function s(){y.point=o,d.lineEnd()}function l(n,t){v.push([n,t]);var e=u(n,t);M.point(e[0],e[1])}function f(){M.lineStart(),v=[]}function h(){l(v[0][0],v[0][1]),M.lineEnd();var n,t=M.clean(),e=x.buffer(),r=e.length;if(v.pop(),p.push(v),v=null,r){if(1&t){n=e[0];var u,r=n.length-1,o=-1;for(i.lineStart();++o<r;)i.point((u=n[o])[0],u[1]);return i.lineEnd(),void 0}r>1&&2&t&&e.push(e.pop().concat(e.shift())),g.push(e.filter(qe))}}var g,p,v,d=t(i),m=u.invert(r[0],r[1]),y={point:o,lineStart:c,lineEnd:s,polygonStart:function(){y.point=l,y.lineStart=f,y.lineEnd=h,g=[],p=[],i.polygonStart()},polygonEnd:function(){y.point=o,y.lineStart=c,y.lineEnd=s,g=Go.merge(g);var n=De(m,p);g.length?Ae(g,Re,n,e,i):n&&(i.lineStart(),e(null,null,1,i),i.lineEnd()),i.polygonEnd(),g=p=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}},x=ze(),M=t(x);return y}}function qe(n){return n.length>1}function ze(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:v,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Re(n,t){return((n=n.x)[0]<0?n[1]-La-Ta:La-n[1])-((t=t.x)[0]<0?t[1]-La-Ta:La-t[1])}function De(n,t){var e=n[0],r=n[1],u=[Math.sin(e),-Math.cos(e),0],i=0,o=0;dc.reset();for(var a=0,c=t.length;c>a;++a){var s=t[a],l=s.length;if(l)for(var f=s[0],h=f[0],g=f[1]/2+Aa/4,p=Math.sin(g),v=Math.cos(g),d=1;;){d===l&&(d=0),n=s[d];var m=n[0],y=n[1]/2+Aa/4,x=Math.sin(y),M=Math.cos(y),_=m-h,b=_>=0?1:-1,w=b*_,S=w>Aa,k=p*x;if(dc.add(Math.atan2(k*b*Math.sin(w),v*M+k*Math.cos(w))),i+=S?_+b*Ca:_,S^h>=e^m>=e){var E=de(pe(f),pe(n));xe(E);var N=de(u,E);xe(N);var A=(S^_>=0?-1:1)*G(N[2]);(r>A||r===A&&(E[0]||E[1]))&&(o+=S^_>=0?1:-1)}if(!d++)break;h=m,p=x,v=M,f=n}}return(-Ta>i||Ta>i&&0>dc)^1&o}function Pe(n){var t,e=0/0,r=0/0,u=0/0;return{lineStart:function(){n.lineStart(),t=1},point:function(i,o){var a=i>0?Aa:-Aa,c=fa(i-e);fa(c-Aa)<Ta?(n.point(e,r=(r+o)/2>0?La:-La),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(i,r),t=0):u!==a&&c>=Aa&&(fa(e-u)<Ta&&(e-=u*Ta),fa(i-a)<Ta&&(i-=a*Ta),r=Ue(e,r,i,o),n.point(u,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=i,r=o),u=a},lineEnd:function(){n.lineEnd(),e=r=0/0},clean:function(){return 2-t}}}function Ue(n,t,e,r){var u,i,o=Math.sin(n-e);return fa(o)>Ta?Math.atan((Math.sin(t)*(i=Math.cos(r))*Math.sin(e)-Math.sin(r)*(u=Math.cos(t))*Math.sin(n))/(u*i*o)):(t+r)/2}function je(n,t,e,r){var u;if(null==n)u=e*La,r.point(-Aa,u),r.point(0,u),r.point(Aa,u),r.point(Aa,0),r.point(Aa,-u),r.point(0,-u),r.point(-Aa,-u),r.point(-Aa,0),r.point(-Aa,u);else if(fa(n[0]-t[0])>Ta){var i=n[0]<t[0]?Aa:-Aa;u=e*i/2,r.point(-i,u),r.point(0,u),r.point(i,u)}else r.point(t[0],t[1])}function He(n){function t(n,t){return Math.cos(n)*Math.cos(t)>i}function e(n){var e,i,c,s,l;return{lineStart:function(){s=c=!1,l=1},point:function(f,h){var g,p=[f,h],v=t(f,h),d=o?v?0:u(f,h):v?u(f+(0>f?Aa:-Aa),h):0;if(!e&&(s=c=v)&&n.lineStart(),v!==c&&(g=r(e,p),(_e(e,g)||_e(p,g))&&(p[0]+=Ta,p[1]+=Ta,v=t(p[0],p[1]))),v!==c)l=0,v?(n.lineStart(),g=r(p,e),n.point(g[0],g[1])):(g=r(e,p),n.point(g[0],g[1]),n.lineEnd()),e=g;else if(a&&e&&o^v){var m;d&i||!(m=r(p,e,!0))||(l=0,o?(n.lineStart(),n.point(m[0][0],m[0][1]),n.point(m[1][0],m[1][1]),n.lineEnd()):(n.point(m[1][0],m[1][1]),n.lineEnd(),n.lineStart(),n.point(m[0][0],m[0][1])))}!v||e&&_e(e,p)||n.point(p[0],p[1]),e=p,c=v,i=d},lineEnd:function(){c&&n.lineEnd(),e=null},clean:function(){return l|(s&&c)<<1}}}function r(n,t,e){var r=pe(n),u=pe(t),o=[1,0,0],a=de(r,u),c=ve(a,a),s=a[0],l=c-s*s;if(!l)return!e&&n;var f=i*c/l,h=-i*s/l,g=de(o,a),p=ye(o,f),v=ye(a,h);me(p,v);var d=g,m=ve(p,d),y=ve(d,d),x=m*m-y*(ve(p,p)-1);if(!(0>x)){var M=Math.sqrt(x),_=ye(d,(-m-M)/y);if(me(_,p),_=Me(_),!e)return _;var b,w=n[0],S=t[0],k=n[1],E=t[1];w>S&&(b=w,w=S,S=b);var N=S-w,A=fa(N-Aa)<Ta,C=A||Ta>N;if(!A&&k>E&&(b=k,k=E,E=b),C?A?k+E>0^_[1]<(fa(_[0]-w)<Ta?k:E):k<=_[1]&&_[1]<=E:N>Aa^(w<=_[0]&&_[0]<=S)){var L=ye(d,(-m+M)/y);return me(L,p),[_,Me(L)]}}}function u(t,e){var r=o?n:Aa-n,u=0;return-r>t?u|=1:t>r&&(u|=2),-r>e?u|=4:e>r&&(u|=8),u}var i=Math.cos(n),o=i>0,a=fa(i)>Ta,c=gr(n,6*za);return Te(t,e,c,o?[0,-n]:[-Aa,n-Aa])}function Fe(n,t,e,r){return function(u){var i,o=u.a,a=u.b,c=o.x,s=o.y,l=a.x,f=a.y,h=0,g=1,p=l-c,v=f-s;if(i=n-c,p||!(i>0)){if(i/=p,0>p){if(h>i)return;g>i&&(g=i)}else if(p>0){if(i>g)return;i>h&&(h=i)}if(i=e-c,p||!(0>i)){if(i/=p,0>p){if(i>g)return;i>h&&(h=i)}else if(p>0){if(h>i)return;g>i&&(g=i)}if(i=t-s,v||!(i>0)){if(i/=v,0>v){if(h>i)return;g>i&&(g=i)}else if(v>0){if(i>g)return;i>h&&(h=i)}if(i=r-s,v||!(0>i)){if(i/=v,0>v){if(i>g)return;i>h&&(h=i)}else if(v>0){if(h>i)return;g>i&&(g=i)}return h>0&&(u.a={x:c+h*p,y:s+h*v}),1>g&&(u.b={x:c+g*p,y:s+g*v}),u}}}}}}function Oe(n,t,e,r){function u(r,u){return fa(r[0]-n)<Ta?u>0?0:3:fa(r[0]-e)<Ta?u>0?2:1:fa(r[1]-t)<Ta?u>0?1:0:u>0?3:2}function i(n,t){return o(n.x,t.x)}function o(n,t){var e=u(n,1),r=u(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function c(n){for(var t=0,e=d.length,r=n[1],u=0;e>u;++u)for(var i,o=1,a=d[u],c=a.length,s=a[0];c>o;++o)i=a[o],s[1]<=r?i[1]>r&&J(s,i,n)>0&&++t:i[1]<=r&&J(s,i,n)<0&&--t,s=i;return 0!==t}function s(i,a,c,s){var l=0,f=0;if(null==i||(l=u(i,c))!==(f=u(a,c))||o(i,a)<0^c>0){do s.point(0===l||3===l?n:e,l>1?r:t);while((l=(l+c+4)%4)!==f)}else s.point(a[0],a[1])}function l(u,i){return u>=n&&e>=u&&i>=t&&r>=i}function f(n,t){l(n,t)&&a.point(n,t)}function h(){C.point=p,d&&d.push(m=[]),S=!0,w=!1,_=b=0/0}function g(){v&&(p(y,x),M&&w&&N.rejoin(),v.push(N.buffer())),C.point=f,w&&a.lineEnd()}function p(n,t){n=Math.max(-Tc,Math.min(Tc,n)),t=Math.max(-Tc,Math.min(Tc,t));var e=l(n,t);if(d&&m.push([n,t]),S)y=n,x=t,M=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:_,y:b},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}_=n,b=t,w=e}var v,d,m,y,x,M,_,b,w,S,k,E=a,N=ze(),A=Fe(n,t,e,r),C={point:f,lineStart:h,lineEnd:g,polygonStart:function(){a=N,v=[],d=[],k=!0},polygonEnd:function(){a=E,v=Go.merge(v);var t=c([n,r]),e=k&&t,u=v.length;(e||u)&&(a.polygonStart(),e&&(a.lineStart(),s(null,null,1,a),a.lineEnd()),u&&Ae(v,i,t,s,a),a.polygonEnd()),v=d=m=null}};return C}}function Ye(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function Ie(n){var t=0,e=Aa/3,r=ir(n),u=r(t,e);return u.parallels=function(n){return arguments.length?r(t=n[0]*Aa/180,e=n[1]*Aa/180):[180*(t/Aa),180*(e/Aa)]},u}function Ze(n,t){function e(n,t){var e=Math.sqrt(i-2*u*Math.sin(t))/u;return[e*Math.sin(n*=u),o-e*Math.cos(n)]}var r=Math.sin(n),u=(r+Math.sin(t))/2,i=1+r*(2*u-r),o=Math.sqrt(i)/u;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/u,G((i-(n*n+e*e)*u*u)/(2*u))]},e}function Ve(){function n(n,t){zc+=u*n-r*t,r=n,u=t}var t,e,r,u;jc.point=function(i,o){jc.point=n,t=r=i,e=u=o},jc.lineEnd=function(){n(t,e)}}function $e(n,t){Rc>n&&(Rc=n),n>Pc&&(Pc=n),Dc>t&&(Dc=t),t>Uc&&(Uc=t)}function Xe(){function n(n,t){o.push("M",n,",",t,i)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function u(){o.push("Z")}var i=Be(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return i=Be(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Be(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Je(n,t){Mc+=n,_c+=t,++bc}function We(){function n(n,r){var u=n-t,i=r-e,o=Math.sqrt(u*u+i*i);wc+=o*(t+n)/2,Sc+=o*(e+r)/2,kc+=o,Je(t=n,e=r)}var t,e;Fc.point=function(r,u){Fc.point=n,Je(t=r,e=u)}}function Ge(){Fc.point=Je}function Ke(){function n(n,t){var e=n-r,i=t-u,o=Math.sqrt(e*e+i*i);wc+=o*(r+n)/2,Sc+=o*(u+t)/2,kc+=o,o=u*n-r*t,Ec+=o*(r+n),Nc+=o*(u+t),Ac+=3*o,Je(r=n,u=t)}var t,e,r,u;Fc.point=function(i,o){Fc.point=n,Je(t=r=i,e=u=o)},Fc.lineEnd=function(){n(t,e)}}function Qe(n){function t(t,e){n.moveTo(t,e),n.arc(t,e,o,0,Ca)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function u(){a.point=t}function i(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:u,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=u,a.point=t},pointRadius:function(n){return o=n,a},result:v};return a}function nr(n){function t(n){return(a?r:e)(n)}function e(t){return rr(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){x=0/0,S.point=i,t.lineStart()}function i(e,r){var i=pe([e,r]),o=n(e,r);u(x,M,y,_,b,w,x=o[0],M=o[1],y=e,_=i[0],b=i[1],w=i[2],a,t),t.point(x,M)}function o(){S.point=e,t.lineEnd()}function c(){r(),S.point=s,S.lineEnd=l}function s(n,t){i(f=n,h=t),g=x,p=M,v=_,d=b,m=w,S.point=i}function l(){u(x,M,y,_,b,w,g,p,f,v,d,m,a,t),S.lineEnd=o,o()}var f,h,g,p,v,d,m,y,x,M,_,b,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=c},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function u(t,e,r,a,c,s,l,f,h,g,p,v,d,m){var y=l-t,x=f-e,M=y*y+x*x;if(M>4*i&&d--){var _=a+g,b=c+p,w=s+v,S=Math.sqrt(_*_+b*b+w*w),k=Math.asin(w/=S),E=fa(fa(w)-1)<Ta||fa(r-h)<Ta?(r+h)/2:Math.atan2(b,_),N=n(E,k),A=N[0],C=N[1],L=A-t,T=C-e,q=x*L-y*T;(q*q/M>i||fa((y*L+x*T)/M-.5)>.3||o>a*g+c*p+s*v)&&(u(t,e,r,a,c,s,A,C,E,_/=S,b/=S,w,d,m),m.point(A,C),u(A,C,E,_,b,w,l,f,h,g,p,v,d,m))}}var i=.5,o=Math.cos(30*za),a=16;return t.precision=function(n){return arguments.length?(a=(i=n*n)>0&&16,t):Math.sqrt(i)},t}function tr(n){var t=nr(function(t,e){return n([t*Ra,e*Ra])});return function(n){return or(t(n))}}function er(n){this.stream=n}function rr(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function ur(n){return ir(function(){return n})()}function ir(n){function t(n){return n=a(n[0]*za,n[1]*za),[n[0]*h+c,s-n[1]*h]}function e(n){return n=a.invert((n[0]-c)/h,(s-n[1])/h),n&&[n[0]*Ra,n[1]*Ra]}function r(){a=Ye(o=sr(m,y,x),i);var n=i(v,d);return c=g-n[0]*h,s=p+n[1]*h,u()}function u(){return l&&(l.valid=!1,l=null),t}var i,o,a,c,s,l,f=nr(function(n,t){return n=i(n,t),[n[0]*h+c,s-n[1]*h]
-}),h=150,g=480,p=250,v=0,d=0,m=0,y=0,x=0,M=Lc,_=Nt,b=null,w=null;return t.stream=function(n){return l&&(l.valid=!1),l=or(M(o,f(_(n)))),l.valid=!0,l},t.clipAngle=function(n){return arguments.length?(M=null==n?(b=n,Lc):He((b=+n)*za),u()):b},t.clipExtent=function(n){return arguments.length?(w=n,_=n?Oe(n[0][0],n[0][1],n[1][0],n[1][1]):Nt,u()):w},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(g=+n[0],p=+n[1],r()):[g,p]},t.center=function(n){return arguments.length?(v=n[0]%360*za,d=n[1]%360*za,r()):[v*Ra,d*Ra]},t.rotate=function(n){return arguments.length?(m=n[0]%360*za,y=n[1]%360*za,x=n.length>2?n[2]%360*za:0,r()):[m*Ra,y*Ra,x*Ra]},Go.rebind(t,f,"precision"),function(){return i=n.apply(this,arguments),t.invert=i.invert&&e,r()}}function or(n){return rr(n,function(t,e){n.point(t*za,e*za)})}function ar(n,t){return[n,t]}function cr(n,t){return[n>Aa?n-Ca:-Aa>n?n+Ca:n,t]}function sr(n,t,e){return n?t||e?Ye(fr(n),hr(t,e)):fr(n):t||e?hr(t,e):cr}function lr(n){return function(t,e){return t+=n,[t>Aa?t-Ca:-Aa>t?t+Ca:t,e]}}function fr(n){var t=lr(n);return t.invert=lr(-n),t}function hr(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*r+a*u;return[Math.atan2(c*i-l*o,a*r-s*u),G(l*i+c*o)]}var r=Math.cos(n),u=Math.sin(n),i=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,c=Math.sin(n)*e,s=Math.sin(t),l=s*i-c*o;return[Math.atan2(c*i+s*o,a*r+l*u),G(l*r-a*u)]},e}function gr(n,t){var e=Math.cos(n),r=Math.sin(n);return function(u,i,o,a){var c=o*t;null!=u?(u=pr(e,u),i=pr(e,i),(o>0?i>u:u>i)&&(u+=o*Ca)):(u=n+o*Ca,i=n-.5*c);for(var s,l=u;o>0?l>i:i>l;l-=c)a.point((s=Me([e,-r*Math.cos(l),-r*Math.sin(l)]))[0],s[1])}}function pr(n,t){var e=pe(t);e[0]-=n,xe(e);var r=W(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Ta)%(2*Math.PI)}function vr(n,t,e){var r=Go.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function dr(n,t,e){var r=Go.range(n,t-Ta,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function mr(n){return n.source}function yr(n){return n.target}function xr(n,t,e,r){var u=Math.cos(t),i=Math.sin(t),o=Math.cos(r),a=Math.sin(r),c=u*Math.cos(n),s=u*Math.sin(n),l=o*Math.cos(e),f=o*Math.sin(e),h=2*Math.asin(Math.sqrt(tt(r-t)+u*o*tt(e-n))),g=1/Math.sin(h),p=h?function(n){var t=Math.sin(n*=h)*g,e=Math.sin(h-n)*g,r=e*c+t*l,u=e*s+t*f,o=e*i+t*a;return[Math.atan2(u,r)*Ra,Math.atan2(o,Math.sqrt(r*r+u*u))*Ra]}:function(){return[n*Ra,t*Ra]};return p.distance=h,p}function Mr(){function n(n,u){var i=Math.sin(u*=za),o=Math.cos(u),a=fa((n*=za)-t),c=Math.cos(a);Oc+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*i-e*o*c)*a),e*i+r*o*c),t=n,e=i,r=o}var t,e,r;Yc.point=function(u,i){t=u*za,e=Math.sin(i*=za),r=Math.cos(i),Yc.point=n},Yc.lineEnd=function(){Yc.point=Yc.lineEnd=v}}function _r(n,t){function e(t,e){var r=Math.cos(t),u=Math.cos(e),i=n(r*u);return[i*u*Math.sin(t),i*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),u=t(r),i=Math.sin(u),o=Math.cos(u);return[Math.atan2(n*i,r*o),Math.asin(r&&e*i/r)]},e}function br(n,t){function e(n,t){o>0?-La+Ta>t&&(t=-La+Ta):t>La-Ta&&(t=La-Ta);var e=o/Math.pow(u(t),i);return[e*Math.sin(i*n),o-e*Math.cos(i*n)]}var r=Math.cos(n),u=function(n){return Math.tan(Aa/4+n/2)},i=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(u(t)/u(n)),o=r*Math.pow(u(n),i)/i;return i?(e.invert=function(n,t){var e=o-t,r=B(i)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/i,2*Math.atan(Math.pow(o/r,1/i))-La]},e):Sr}function wr(n,t){function e(n,t){var e=i-t;return[e*Math.sin(u*n),i-e*Math.cos(u*n)]}var r=Math.cos(n),u=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),i=r/u+n;return fa(u)<Ta?ar:(e.invert=function(n,t){var e=i-t;return[Math.atan2(n,e)/u,i-B(u)*Math.sqrt(n*n+e*e)]},e)}function Sr(n,t){return[n,Math.log(Math.tan(Aa/4+t/2))]}function kr(n){var t,e=ur(n),r=e.scale,u=e.translate,i=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=u.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=i.apply(e,arguments);if(o===e){if(t=null==n){var a=Aa*r(),c=u();i([[c[0]-a,c[1]-a],[c[0]+a,c[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Er(n,t){return[Math.log(Math.tan(Aa/4+t/2)),-n]}function Nr(n){return n[0]}function Ar(n){return n[1]}function Cr(n){for(var t=n.length,e=[0,1],r=2,u=2;t>u;u++){for(;r>1&&J(n[e[r-2]],n[e[r-1]],n[u])<=0;)--r;e[r++]=u}return e.slice(0,r)}function Lr(n,t){return n[0]-t[0]||n[1]-t[1]}function Tr(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function qr(n,t,e,r){var u=n[0],i=e[0],o=t[0]-u,a=r[0]-i,c=n[1],s=e[1],l=t[1]-c,f=r[1]-s,h=(a*(c-s)-f*(u-i))/(f*o-a*l);return[u+h*o,c+h*l]}function zr(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Rr(){tu(this),this.edge=this.site=this.circle=null}function Dr(n){var t=ns.pop()||new Rr;return t.site=n,t}function Pr(n){$r(n),Gc.remove(n),ns.push(n),tu(n)}function Ur(n){var t=n.circle,e=t.x,r=t.cy,u={x:e,y:r},i=n.P,o=n.N,a=[n];Pr(n);for(var c=i;c.circle&&fa(e-c.circle.x)<Ta&&fa(r-c.circle.cy)<Ta;)i=c.P,a.unshift(c),Pr(c),c=i;a.unshift(c),$r(c);for(var s=o;s.circle&&fa(e-s.circle.x)<Ta&&fa(r-s.circle.cy)<Ta;)o=s.N,a.push(s),Pr(s),s=o;a.push(s),$r(s);var l,f=a.length;for(l=1;f>l;++l)s=a[l],c=a[l-1],Kr(s.edge,c.site,s.site,u);c=a[0],s=a[f-1],s.edge=Wr(c.site,s.site,null,u),Vr(c),Vr(s)}function jr(n){for(var t,e,r,u,i=n.x,o=n.y,a=Gc._;a;)if(r=Hr(a,o)-i,r>Ta)a=a.L;else{if(u=i-Fr(a,o),!(u>Ta)){r>-Ta?(t=a.P,e=a):u>-Ta?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var c=Dr(n);if(Gc.insert(t,c),t||e){if(t===e)return $r(t),e=Dr(t.site),Gc.insert(c,e),c.edge=e.edge=Wr(t.site,c.site),Vr(t),Vr(e),void 0;if(!e)return c.edge=Wr(t.site,c.site),void 0;$r(t),$r(e);var s=t.site,l=s.x,f=s.y,h=n.x-l,g=n.y-f,p=e.site,v=p.x-l,d=p.y-f,m=2*(h*d-g*v),y=h*h+g*g,x=v*v+d*d,M={x:(d*y-g*x)/m+l,y:(h*x-v*y)/m+f};Kr(e.edge,s,p,M),c.edge=Wr(s,n,null,M),e.edge=Wr(n,p,null,M),Vr(t),Vr(e)}}function Hr(n,t){var e=n.site,r=e.x,u=e.y,i=u-t;if(!i)return r;var o=n.P;if(!o)return-1/0;e=o.site;var a=e.x,c=e.y,s=c-t;if(!s)return a;var l=a-r,f=1/i-1/s,h=l/s;return f?(-h+Math.sqrt(h*h-2*f*(l*l/(-2*s)-c+s/2+u-i/2)))/f+r:(r+a)/2}function Fr(n,t){var e=n.N;if(e)return Hr(e,t);var r=n.site;return r.y===t?r.x:1/0}function Or(n){this.site=n,this.edges=[]}function Yr(n){for(var t,e,r,u,i,o,a,c,s,l,f=n[0][0],h=n[1][0],g=n[0][1],p=n[1][1],v=Wc,d=v.length;d--;)if(i=v[d],i&&i.prepare())for(a=i.edges,c=a.length,o=0;c>o;)l=a[o].end(),r=l.x,u=l.y,s=a[++o%c].start(),t=s.x,e=s.y,(fa(r-t)>Ta||fa(u-e)>Ta)&&(a.splice(o,0,new Qr(Gr(i.site,l,fa(r-f)<Ta&&p-u>Ta?{x:f,y:fa(t-f)<Ta?e:p}:fa(u-p)<Ta&&h-r>Ta?{x:fa(e-p)<Ta?t:h,y:p}:fa(r-h)<Ta&&u-g>Ta?{x:h,y:fa(t-h)<Ta?e:g}:fa(u-g)<Ta&&r-f>Ta?{x:fa(e-g)<Ta?t:f,y:g}:null),i.site,null)),++c)}function Ir(n,t){return t.angle-n.angle}function Zr(){tu(this),this.x=this.y=this.arc=this.site=this.cy=null}function Vr(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,u=n.site,i=e.site;if(r!==i){var o=u.x,a=u.y,c=r.x-o,s=r.y-a,l=i.x-o,f=i.y-a,h=2*(c*f-s*l);if(!(h>=-qa)){var g=c*c+s*s,p=l*l+f*f,v=(f*g-s*p)/h,d=(c*p-l*g)/h,f=d+a,m=ts.pop()||new Zr;m.arc=n,m.site=u,m.x=v+o,m.y=f+Math.sqrt(v*v+d*d),m.cy=f,n.circle=m;for(var y=null,x=Qc._;x;)if(m.y<x.y||m.y===x.y&&m.x<=x.x){if(!x.L){y=x.P;break}x=x.L}else{if(!x.R){y=x;break}x=x.R}Qc.insert(y,m),y||(Kc=m)}}}}function $r(n){var t=n.circle;t&&(t.P||(Kc=t.N),Qc.remove(t),ts.push(t),tu(t),n.circle=null)}function Xr(n){for(var t,e=Jc,r=Fe(n[0][0],n[0][1],n[1][0],n[1][1]),u=e.length;u--;)t=e[u],(!Br(t,n)||!r(t)||fa(t.a.x-t.b.x)<Ta&&fa(t.a.y-t.b.y)<Ta)&&(t.a=t.b=null,e.splice(u,1))}function Br(n,t){var e=n.b;if(e)return!0;var r,u,i=n.a,o=t[0][0],a=t[1][0],c=t[0][1],s=t[1][1],l=n.l,f=n.r,h=l.x,g=l.y,p=f.x,v=f.y,d=(h+p)/2,m=(g+v)/2;if(v===g){if(o>d||d>=a)return;if(h>p){if(i){if(i.y>=s)return}else i={x:d,y:c};e={x:d,y:s}}else{if(i){if(i.y<c)return}else i={x:d,y:s};e={x:d,y:c}}}else if(r=(h-p)/(v-g),u=m-r*d,-1>r||r>1)if(h>p){if(i){if(i.y>=s)return}else i={x:(c-u)/r,y:c};e={x:(s-u)/r,y:s}}else{if(i){if(i.y<c)return}else i={x:(s-u)/r,y:s};e={x:(c-u)/r,y:c}}else if(v>g){if(i){if(i.x>=a)return}else i={x:o,y:r*o+u};e={x:a,y:r*a+u}}else{if(i){if(i.x<o)return}else i={x:a,y:r*a+u};e={x:o,y:r*o+u}}return n.a=i,n.b=e,!0}function Jr(n,t){this.l=n,this.r=t,this.a=this.b=null}function Wr(n,t,e,r){var u=new Jr(n,t);return Jc.push(u),e&&Kr(u,n,t,e),r&&Kr(u,t,n,r),Wc[n.i].edges.push(new Qr(u,n,t)),Wc[t.i].edges.push(new Qr(u,t,n)),u}function Gr(n,t,e){var r=new Jr(n,null);return r.a=t,r.b=e,Jc.push(r),r}function Kr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function Qr(n,t,e){var r=n.a,u=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(u.x-r.x,r.y-u.y):Math.atan2(r.x-u.x,u.y-r.y)}function nu(){this._=null}function tu(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function eu(n,t){var e=t,r=t.R,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ru(n,t){var e=t,r=t.L,u=e.U;u?u.L===e?u.L=r:u.R=r:n._=r,r.U=u,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function uu(n){for(;n.L;)n=n.L;return n}function iu(n,t){var e,r,u,i=n.sort(ou).pop();for(Jc=[],Wc=new Array(n.length),Gc=new nu,Qc=new nu;;)if(u=Kc,i&&(!u||i.y<u.y||i.y===u.y&&i.x<u.x))(i.x!==e||i.y!==r)&&(Wc[i.i]=new Or(i),jr(i),e=i.x,r=i.y),i=n.pop();else{if(!u)break;Ur(u.arc)}t&&(Xr(t),Yr(t));var o={cells:Wc,edges:Jc};return Gc=Qc=Jc=Wc=null,o}function ou(n,t){return t.y-n.y||t.x-n.x}function au(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function cu(n){return n.x}function su(n){return n.y}function lu(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function fu(n,t,e,r,u,i){if(!n(t,e,r,u,i)){var o=.5*(e+u),a=.5*(r+i),c=t.nodes;c[0]&&fu(n,c[0],e,r,o,a),c[1]&&fu(n,c[1],o,r,u,a),c[2]&&fu(n,c[2],e,a,o,i),c[3]&&fu(n,c[3],o,a,u,i)}}function hu(n,t){n=Go.rgb(n),t=Go.rgb(t);var e=n.r,r=n.g,u=n.b,i=t.r-e,o=t.g-r,a=t.b-u;return function(n){return"#"+Mt(Math.round(e+i*n))+Mt(Math.round(r+o*n))+Mt(Math.round(u+a*n))}}function gu(n,t){var e,r={},u={};for(e in n)e in t?r[e]=du(n[e],t[e]):u[e]=n[e];for(e in t)e in n||(u[e]=t[e]);return function(n){for(e in r)u[e]=r[e](n);return u}}function pu(n,t){return t-=n=+n,function(e){return n+t*e}}function vu(n,t){var e,r,u,i,o,a=0,c=0,s=[],l=[];for(n+="",t+="",rs.lastIndex=0,r=0;e=rs.exec(t);++r)e.index&&s.push(t.substring(a,c=e.index)),l.push({i:s.length,x:e[0]}),s.push(null),a=rs.lastIndex;for(a<t.length&&s.push(t.substring(a)),r=0,i=l.length;(e=rs.exec(n))&&i>r;++r)if(o=l[r],o.x==e[0]){if(o.i)if(null==s[o.i+1])for(s[o.i-1]+=o.x,s.splice(o.i,1),u=r+1;i>u;++u)l[u].i--;else for(s[o.i-1]+=o.x+s[o.i+1],s.splice(o.i,2),u=r+1;i>u;++u)l[u].i-=2;else if(null==s[o.i+1])s[o.i]=o.x;else for(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1),u=r+1;i>u;++u)l[u].i--;l.splice(r,1),i--,r--}else o.x=pu(parseFloat(e[0]),parseFloat(o.x));for(;i>r;)o=l.pop(),null==s[o.i+1]?s[o.i]=o.x:(s[o.i]=o.x+s[o.i+1],s.splice(o.i+1,1)),i--;return 1===s.length?null==s[0]?(o=l[0].x,function(n){return o(n)+""}):function(){return t}:function(n){for(r=0;i>r;++r)s[(o=l[r]).i]=o.x(n);return s.join("")}}function du(n,t){for(var e,r=Go.interpolators.length;--r>=0&&!(e=Go.interpolators[r](n,t)););return e}function mu(n,t){var e,r=[],u=[],i=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(du(n[e],t[e]));for(;i>e;++e)u[e]=n[e];for(;o>e;++e)u[e]=t[e];return function(n){for(e=0;a>e;++e)u[e]=r[e](n);return u}}function yu(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function xu(n){return function(t){return 1-n(1-t)}}function Mu(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function _u(n){return n*n}function bu(n){return n*n*n}function wu(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Su(n){return function(t){return Math.pow(t,n)}}function ku(n){return 1-Math.cos(n*La)}function Eu(n){return Math.pow(2,10*(n-1))}function Nu(n){return 1-Math.sqrt(1-n*n)}function Au(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ca*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ca/t)}}function Cu(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Lu(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Tu(n,t){n=Go.hcl(n),t=Go.hcl(t);var e=n.h,r=n.c,u=n.l,i=t.h-e,o=t.c-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return ct(e+i*n,r+o*n,u+a*n)+""}}function qu(n,t){n=Go.hsl(n),t=Go.hsl(t);var e=n.h,r=n.s,u=n.l,i=t.h-e,o=t.s-r,a=t.l-u;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(i)?(i=0,e=isNaN(e)?t.h:e):i>180?i-=360:-180>i&&(i+=360),function(n){return it(e+i*n,r+o*n,u+a*n)+""}}function zu(n,t){n=Go.lab(n),t=Go.lab(t);var e=n.l,r=n.a,u=n.b,i=t.l-e,o=t.a-r,a=t.b-u;return function(n){return ft(e+i*n,r+o*n,u+a*n)+""}}function Ru(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function Du(n){var t=[n.a,n.b],e=[n.c,n.d],r=Uu(t),u=Pu(t,e),i=Uu(ju(e,t,-u))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,u*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Ra,this.translate=[n.e,n.f],this.scale=[r,i],this.skew=i?Math.atan2(u,i)*Ra:0}function Pu(n,t){return n[0]*t[0]+n[1]*t[1]}function Uu(n){var t=Math.sqrt(Pu(n,n));return t&&(n[0]/=t,n[1]/=t),t}function ju(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Hu(n,t){var e,r=[],u=[],i=Go.transform(n),o=Go.transform(t),a=i.translate,c=o.translate,s=i.rotate,l=o.rotate,f=i.skew,h=o.skew,g=i.scale,p=o.scale;return a[0]!=c[0]||a[1]!=c[1]?(r.push("translate(",null,",",null,")"),u.push({i:1,x:pu(a[0],c[0])},{i:3,x:pu(a[1],c[1])})):c[0]||c[1]?r.push("translate("+c+")"):r.push(""),s!=l?(s-l>180?l+=360:l-s>180&&(s+=360),u.push({i:r.push(r.pop()+"rotate(",null,")")-2,x:pu(s,l)})):l&&r.push(r.pop()+"rotate("+l+")"),f!=h?u.push({i:r.push(r.pop()+"skewX(",null,")")-2,x:pu(f,h)}):h&&r.push(r.pop()+"skewX("+h+")"),g[0]!=p[0]||g[1]!=p[1]?(e=r.push(r.pop()+"scale(",null,",",null,")"),u.push({i:e-4,x:pu(g[0],p[0])},{i:e-2,x:pu(g[1],p[1])})):(1!=p[0]||1!=p[1])&&r.push(r.pop()+"scale("+p+")"),e=u.length,function(n){for(var t,i=-1;++i<e;)r[(t=u[i]).i]=t.x(n);return r.join("")}}function Fu(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return(e-n)*t}}function Ou(n,t){return t=t-(n=+n)?1/(t-n):0,function(e){return Math.max(0,Math.min(1,(e-n)*t))}}function Yu(n){for(var t=n.source,e=n.target,r=Zu(t,e),u=[t];t!==r;)t=t.parent,u.push(t);for(var i=u.length;e!==r;)u.splice(i,0,e),e=e.parent;return u}function Iu(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Zu(n,t){if(n===t)return n;for(var e=Iu(n),r=Iu(t),u=e.pop(),i=r.pop(),o=null;u===i;)o=u,u=e.pop(),i=r.pop();return o}function Vu(n){n.fixed|=2}function $u(n){n.fixed&=-7}function Xu(n){n.fixed|=4,n.px=n.x,n.py=n.y}function Bu(n){n.fixed&=-5}function Ju(n,t,e){var r=0,u=0;if(n.charge=0,!n.leaf)for(var i,o=n.nodes,a=o.length,c=-1;++c<a;)i=o[c],null!=i&&(Ju(i,t,e),n.charge+=i.charge,r+=i.charge*i.cx,u+=i.charge*i.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var s=t*e[n.point.index];n.charge+=n.pointCharge=s,r+=s*n.point.x,u+=s*n.point.y}n.cx=r/n.charge,n.cy=u/n.charge}function Wu(n,t){return Go.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=ni,n}function Gu(n){return n.children}function Ku(n){return n.value}function Qu(n,t){return t.value-n.value}function ni(n){return Go.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function ti(n){return n.x}function ei(n){return n.y}function ri(n,t,e){n.y0=t,n.y=e}function ui(n){return Go.range(n.length)}function ii(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function oi(n){for(var t,e=1,r=0,u=n[0][1],i=n.length;i>e;++e)(t=n[e][1])>u&&(r=e,u=t);return r}function ai(n){return n.reduce(ci,0)}function ci(n,t){return n+t[1]}function si(n,t){return li(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function li(n,t){for(var e=-1,r=+n[0],u=(n[1]-r)/t,i=[];++e<=t;)i[e]=u*e+r;return i}function fi(n){return[Go.min(n),Go.max(n)]}function hi(n,t){return n.parent==t.parent?1:2}function gi(n){var t=n.children;return t&&t.length?t[0]:n._tree.thread}function pi(n){var t,e=n.children;return e&&(t=e.length)?e[t-1]:n._tree.thread}function vi(n,t){var e=n.children;if(e&&(u=e.length))for(var r,u,i=-1;++i<u;)t(r=vi(e[i],t),n)>0&&(n=r);return n}function di(n,t){return n.x-t.x}function mi(n,t){return t.x-n.x}function yi(n,t){return n.depth-t.depth}function xi(n,t){function e(n,r){var u=n.children;if(u&&(o=u.length))for(var i,o,a=null,c=-1;++c<o;)i=u[c],e(i,a),a=i;t(n,r)}e(n,null)}function Mi(n){for(var t,e=0,r=0,u=n.children,i=u.length;--i>=0;)t=u[i]._tree,t.prelim+=e,t.mod+=e,e+=t.shift+(r+=t.change)}function _i(n,t,e){n=n._tree,t=t._tree;var r=e/(t.number-n.number);n.change+=r,t.change-=r,t.shift+=e,t.prelim+=e,t.mod+=e}function bi(n,t,e){return n._tree.ancestor.parent==t.parent?n._tree.ancestor:e}function wi(n,t){return n.value-t.value}function Si(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function ki(n,t){n._pack_next=t,t._pack_prev=n}function Ei(n,t){var e=t.x-n.x,r=t.y-n.y,u=n.r+t.r;return.999*u*u>e*e+r*r}function Ni(n){function t(n){l=Math.min(n.x-n.r,l),f=Math.max(n.x+n.r,f),h=Math.min(n.y-n.r,h),g=Math.max(n.y+n.r,g)}if((e=n.children)&&(s=e.length)){var e,r,u,i,o,a,c,s,l=1/0,f=-1/0,h=1/0,g=-1/0;if(e.forEach(Ai),r=e[0],r.x=-r.r,r.y=0,t(r),s>1&&(u=e[1],u.x=u.r,u.y=0,t(u),s>2))for(i=e[2],Ti(r,u,i),t(i),Si(r,i),r._pack_prev=i,Si(i,u),u=r._pack_next,o=3;s>o;o++){Ti(r,u,i=e[o]);var p=0,v=1,d=1;for(a=u._pack_next;a!==u;a=a._pack_next,v++)if(Ei(a,i)){p=1;break}if(1==p)for(c=r._pack_prev;c!==a._pack_prev&&!Ei(c,i);c=c._pack_prev,d++);p?(d>v||v==d&&u.r<r.r?ki(r,u=a):ki(r=c,u),o--):(Si(r,i),u=i,t(i))}var m=(l+f)/2,y=(h+g)/2,x=0;for(o=0;s>o;o++)i=e[o],i.x-=m,i.y-=y,x=Math.max(x,i.r+Math.sqrt(i.x*i.x+i.y*i.y));n.r=x,e.forEach(Ci)}}function Ai(n){n._pack_next=n._pack_prev=n}function Ci(n){delete n._pack_next,delete n._pack_prev}function Li(n,t,e,r){var u=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,u)for(var i=-1,o=u.length;++i<o;)Li(u[i],t,e,r)}function Ti(n,t,e){var r=n.r+e.r,u=t.x-n.x,i=t.y-n.y;if(r&&(u||i)){var o=t.r+e.r,a=u*u+i*i;o*=o,r*=r;var c=.5+(r-o)/(2*a),s=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+c*u+s*i,e.y=n.y+c*i-s*u}else e.x=n.x+r,e.y=n.y}function qi(n){return 1+Go.max(n,function(n){return n.y})}function zi(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Ri(n){var t=n.children;return t&&t.length?Ri(t[0]):n}function Di(n){var t,e=n.children;return e&&(t=e.length)?Di(e[t-1]):n}function Pi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ui(n,t){var e=n.x+t[3],r=n.y+t[0],u=n.dx-t[1]-t[3],i=n.dy-t[0]-t[2];return 0>u&&(e+=u/2,u=0),0>i&&(r+=i/2,i=0),{x:e,y:r,dx:u,dy:i}}function ji(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Hi(n){return n.rangeExtent?n.rangeExtent():ji(n.range())}function Fi(n,t,e,r){var u=e(n[0],n[1]),i=r(t[0],t[1]);return function(n){return i(u(n))}}function Oi(n,t){var e,r=0,u=n.length-1,i=n[r],o=n[u];return i>o&&(e=r,r=u,u=e,e=i,i=o,o=e),n[r]=t.floor(i),n[u]=t.ceil(o),n}function Yi(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:ps}function Ii(n,t,e,r){var u=[],i=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)u.push(e(n[o-1],n[o])),i.push(r(t[o-1],t[o]));return function(t){var e=Go.bisect(n,t,1,a)-1;return i[e](u[e](t))}}function Zi(n,t,e,r){function u(){var u=Math.min(n.length,t.length)>2?Ii:Fi,c=r?Ou:Fu;return o=u(n,t,c,e),a=u(t,n,c,du),i}function i(n){return o(n)}var o,a;return i.invert=function(n){return a(n)},i.domain=function(t){return arguments.length?(n=t.map(Number),u()):n},i.range=function(n){return arguments.length?(t=n,u()):t},i.rangeRound=function(n){return i.range(n).interpolate(Ru)},i.clamp=function(n){return arguments.length?(r=n,u()):r},i.interpolate=function(n){return arguments.length?(e=n,u()):e},i.ticks=function(t){return Bi(n,t)},i.tickFormat=function(t,e){return Ji(n,t,e)},i.nice=function(t){return $i(n,t),u()},i.copy=function(){return Zi(n,t,e,r)},u()}function Vi(n,t){return Go.rebind(n,t,"range","rangeRound","interpolate","clamp")}function $i(n,t){return Oi(n,Yi(Xi(n,t)[2]))}function Xi(n,t){null==t&&(t=10);var e=ji(n),r=e[1]-e[0],u=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),i=t/r*u;return.15>=i?u*=10:.35>=i?u*=5:.75>=i&&(u*=2),e[0]=Math.ceil(e[0]/u)*u,e[1]=Math.floor(e[1]/u)*u+.5*u,e[2]=u,e}function Bi(n,t){return Go.range.apply(Go,Xi(n,t))}function Ji(n,t,e){var r=Xi(n,t);if(e){var u=rc.exec(e);if(u.shift(),"s"===u[8]){var i=Go.formatPrefix(Math.max(fa(r[0]),fa(r[1])));return u[7]||(u[7]="."+Wi(i.scale(r[2]))),u[8]="f",e=Go.format(u.join("")),function(n){return e(i.scale(n))+i.symbol}}u[7]||(u[7]="."+Gi(u[8],r)),e=u.join("")}else e=",."+Wi(r[2])+"f";return Go.format(e)}function Wi(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function Gi(n,t){var e=Wi(t[2]);return n in vs?Math.abs(e-Wi(Math.max(fa(t[0]),fa(t[1]))))+ +("e"!==n):e-2*("%"===n)}function Ki(n,t,e,r){function u(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function i(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(u(t))}return o.invert=function(t){return i(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(u)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(u)),o):t},o.nice=function(){var t=Oi(r.map(u),e?Math:ms);return n.domain(t),r=t.map(i),o},o.ticks=function(){var n=ji(r),o=[],a=n[0],c=n[1],s=Math.floor(u(a)),l=Math.ceil(u(c)),f=t%1?2:t;if(isFinite(l-s)){if(e){for(;l>s;s++)for(var h=1;f>h;h++)o.push(i(s)*h);o.push(i(s))}else for(o.push(i(s));s++<l;)for(var h=f-1;h>0;h--)o.push(i(s)*h);for(s=0;o[s]<a;s++);for(l=o.length;o[l-1]>c;l--);o=o.slice(s,l)}return o},o.tickFormat=function(n,t){if(!arguments.length)return ds;arguments.length<2?t=ds:"function"!=typeof t&&(t=Go.format(t));var r,a=Math.max(.1,n/o.ticks().length),c=e?(r=1e-12,Math.ceil):(r=-1e-12,Math.floor);return function(n){return n/i(c(u(n)+r))<=a?t(n):""}},o.copy=function(){return Ki(n.copy(),t,e,r)},Vi(o,n)}function Qi(n,t,e){function r(t){return n(u(t))}var u=no(t),i=no(1/t);return r.invert=function(t){return i(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(u)),r):e},r.ticks=function(n){return Bi(e,n)},r.tickFormat=function(n,t){return Ji(e,n,t)},r.nice=function(n){return r.domain($i(e,n))},r.exponent=function(o){return arguments.length?(u=no(t=o),i=no(1/t),n.domain(e.map(u)),r):t},r.copy=function(){return Qi(n.copy(),t,e)},Vi(r,n)}function no(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function to(n,t){function e(e){return i[((u.get(e)||("range"===t.t?u.set(e,n.push(e)):0/0))-1)%i.length]}function r(t,e){return Go.range(n.length).map(function(n){return t+e*n})}var u,i,a;return e.domain=function(r){if(!arguments.length)return n;n=[],u=new o;for(var i,a=-1,c=r.length;++a<c;)u.has(i=r[a])||u.set(i,n.push(i));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(i=n,a=0,t={t:"range",a:arguments},e):i},e.rangePoints=function(u,o){arguments.length<2&&(o=0);var c=u[0],s=u[1],l=(s-c)/(Math.max(1,n.length-1)+o);return i=r(n.length<2?(c+s)/2:c+l*o/2,l),a=0,t={t:"rangePoints",a:arguments},e},e.rangeBands=function(u,o,c){arguments.length<2&&(o=0),arguments.length<3&&(c=o);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=(f-l)/(n.length-o+2*c);return i=r(l+h*c,h),s&&i.reverse(),a=h*(1-o),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(u,o,c){arguments.length<2&&(o=0),arguments.length<3&&(c=o);var s=u[1]<u[0],l=u[s-0],f=u[1-s],h=Math.floor((f-l)/(n.length-o+2*c)),g=f-l-(n.length-o)*h;return i=r(l+Math.round(g/2),h),s&&i.reverse(),a=Math.round(h*(1-o)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return a},e.rangeExtent=function(){return ji(t.a[0])},e.copy=function(){return to(n,t)},e.domain(n)}function eo(t,e){function r(){var n=0,r=e.length;for(i=[];++n<r;)i[n-1]=Go.quantile(t,n/r);return u}function u(n){return isNaN(n=+n)?void 0:e[Go.bisect(i,n)]}var i;return u.domain=function(e){return arguments.length?(t=e.filter(function(n){return!isNaN(n)}).sort(n),r()):t},u.range=function(n){return arguments.length?(e=n,r()):e},u.quantiles=function(){return i},u.invertExtent=function(n){return n=e.indexOf(n),0>n?[0/0,0/0]:[n>0?i[n-1]:t[0],n<i.length?i[n]:t[t.length-1]]},u.copy=function(){return eo(t,e)},r()}function ro(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(i*(t-n))))]}function u(){return i=e.length/(t-n),o=e.length-1,r}var i,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],u()):[n,t]},r.range=function(n){return arguments.length?(e=n,u()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?0/0:t/i+n,[t,t+1/i]},r.copy=function(){return ro(n,t,e)},u()}function uo(n,t){function e(e){return e>=e?t[Go.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return uo(n,t)},e}function io(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Bi(n,t)},t.tickFormat=function(t,e){return Ji(n,t,e)},t.copy=function(){return io(n)},t}function oo(n){return n.innerRadius}function ao(n){return n.outerRadius}function co(n){return n.startAngle}function so(n){return n.endAngle}function lo(n){function t(t){function o(){s.push("M",i(n(l),a))}for(var c,s=[],l=[],f=-1,h=t.length,g=Et(e),p=Et(r);++f<h;)u.call(this,c=t[f],f)?l.push([+g.call(this,c,f),+p.call(this,c,f)]):l.length&&(o(),l=[]);return l.length&&o(),s.length?s.join(""):null}var e=Nr,r=Ar,u=Ne,i=fo,o=i.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(u=n,t):u},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?i=n:(i=Ss.get(n)||fo).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function fo(n){return n.join("L")}function ho(n){return fo(n)+"Z"}function go(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&u.push("H",r[0]),u.join("")}function po(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("V",(r=n[t])[1],"H",r[0]);return u.join("")}function vo(n){for(var t=0,e=n.length,r=n[0],u=[r[0],",",r[1]];++t<e;)u.push("H",(r=n[t])[0],"V",r[1]);return u.join("")}function mo(n,t){return n.length<4?fo(n):n[1]+Mo(n.slice(1,n.length-1),_o(n,t))}function yo(n,t){return n.length<3?fo(n):n[0]+Mo((n.push(n[0]),n),_o([n[n.length-2]].concat(n,[n[1]]),t))}function xo(n,t){return n.length<3?fo(n):n[0]+Mo(n,_o(n,t))}function Mo(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return fo(n);var e=n.length!=t.length,r="",u=n[0],i=n[1],o=t[0],a=o,c=1;if(e&&(r+="Q"+(i[0]-2*o[0]/3)+","+(i[1]-2*o[1]/3)+","+i[0]+","+i[1],u=n[1],c=2),t.length>1){a=t[1],i=n[c],c++,r+="C"+(u[0]+o[0])+","+(u[1]+o[1])+","+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1];for(var s=2;s<t.length;s++,c++)i=n[c],a=t[s],r+="S"+(i[0]-a[0])+","+(i[1]-a[1])+","+i[0]+","+i[1]}if(e){var l=n[c];r+="Q"+(i[0]+2*a[0]/3)+","+(i[1]+2*a[1]/3)+","+l[0]+","+l[1]}return r}function _o(n,t){for(var e,r=[],u=(1-t)/2,i=n[0],o=n[1],a=1,c=n.length;++a<c;)e=i,i=o,o=n[a],r.push([u*(o[0]-e[0]),u*(o[1]-e[1])]);return r}function bo(n){if(n.length<3)return fo(n);var t=1,e=n.length,r=n[0],u=r[0],i=r[1],o=[u,u,u,(r=n[1])[0]],a=[i,i,i,r[1]],c=[u,",",i,"L",Eo(Ns,o),",",Eo(Ns,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),No(c,o,a);return n.pop(),c.push("L",r),c.join("")}function wo(n){if(n.length<4)return fo(n);for(var t,e=[],r=-1,u=n.length,i=[0],o=[0];++r<3;)t=n[r],i.push(t[0]),o.push(t[1]);for(e.push(Eo(Ns,i)+","+Eo(Ns,o)),--r;++r<u;)t=n[r],i.shift(),i.push(t[0]),o.shift(),o.push(t[1]),No(e,i,o);return e.join("")}function So(n){for(var t,e,r=-1,u=n.length,i=u+4,o=[],a=[];++r<4;)e=n[r%u],o.push(e[0]),a.push(e[1]);for(t=[Eo(Ns,o),",",Eo(Ns,a)],--r;++r<i;)e=n[r%u],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),No(t,o,a);return t.join("")}function ko(n,t){var e=n.length-1;if(e)for(var r,u,i=n[0][0],o=n[0][1],a=n[e][0]-i,c=n[e][1]-o,s=-1;++s<=e;)r=n[s],u=s/e,r[0]=t*r[0]+(1-t)*(i+u*a),r[1]=t*r[1]+(1-t)*(o+u*c);return bo(n)}function Eo(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function No(n,t,e){n.push("C",Eo(ks,t),",",Eo(ks,e),",",Eo(Es,t),",",Eo(Es,e),",",Eo(Ns,t),",",Eo(Ns,e))}function Ao(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Co(n){for(var t=0,e=n.length-1,r=[],u=n[0],i=n[1],o=r[0]=Ao(u,i);++t<e;)r[t]=(o+(o=Ao(u=i,i=n[t+1])))/2;return r[t]=o,r}function Lo(n){for(var t,e,r,u,i=[],o=Co(n),a=-1,c=n.length-1;++a<c;)t=Ao(n[a],n[a+1]),fa(t)<Ta?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,u=e*e+r*r,u>9&&(u=3*t/Math.sqrt(u),o[a]=u*e,o[a+1]=u*r));for(a=-1;++a<=c;)u=(n[Math.min(c,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),i.push([u||0,o[a]*u||0]);return i}function To(n){return n.length<3?fo(n):n[0]+Mo(n,Lo(n))}function qo(n){for(var t,e,r,u=-1,i=n.length;++u<i;)t=n[u],e=t[0],r=t[1]+bs,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function zo(n){function t(t){function c(){v.push("M",a(n(m),f),l,s(n(d.reverse()),f),"Z")}for(var h,g,p,v=[],d=[],m=[],y=-1,x=t.length,M=Et(e),_=Et(u),b=e===r?function(){return g}:Et(r),w=u===i?function(){return p}:Et(i);++y<x;)o.call(this,h=t[y],y)?(d.push([g=+M.call(this,h,y),p=+_.call(this,h,y)]),m.push([+b.call(this,h,y),+w.call(this,h,y)])):d.length&&(c(),d=[],m=[]);return d.length&&c(),v.length?v.join(""):null}var e=Nr,r=Nr,u=0,i=Ar,o=Ne,a=fo,c=a.key,s=a,l="L",f=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(u=i=n,t):i},t.y0=function(n){return arguments.length?(u=n,t):u},t.y1=function(n){return arguments.length?(i=n,t):i},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(c="function"==typeof n?a=n:(a=Ss.get(n)||fo).key,s=a.reverse||a,l=a.closed?"M":"L",t):c},t.tension=function(n){return arguments.length?(f=n,t):f},t}function Ro(n){return n.radius}function Do(n){return[n.x,n.y]}function Po(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]+bs;return[e*Math.cos(r),e*Math.sin(r)]}}function Uo(){return 64}function jo(){return"circle"}function Ho(n){var t=Math.sqrt(n/Aa);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Fo(n,t){return da(n,zs),n.id=t,n}function Oo(n,t,e,r){var u=n.id;return P(n,"function"==typeof e?function(n,i,o){n.__transition__[u].tween.set(t,r(e.call(n,n.__data__,i,o)))}:(e=r(e),function(n){n.__transition__[u].tween.set(t,e)}))}function Yo(n){return null==n&&(n=""),function(){this.textContent=n}}function Io(n,t,e,r){var u=n.__transition__||(n.__transition__={active:0,count:0}),i=u[e];if(!i){var a=r.time;i=u[e]={tween:new o,time:a,ease:r.ease,delay:r.delay,duration:r.duration},++u.count,Go.timer(function(r){function o(r){return u.active>e?s():(u.active=e,i.event&&i.event.start.call(n,l,t),i.tween.forEach(function(e,r){(r=r.call(n,l,t))&&v.push(r)}),Go.timer(function(){return p.c=c(r||1)?Ne:c,1},0,a),void 0)}function c(r){if(u.active!==e)return s();for(var o=r/g,a=f(o),c=v.length;c>0;)v[--c].call(n,a);return o>=1?(i.event&&i.event.end.call(n,l,t),s()):void 0}function s(){return--u.count?delete u[e]:delete n.__transition__,1}var l=n.__data__,f=i.ease,h=i.delay,g=i.duration,p=nc,v=[];return p.t=h+a,r>=h?o(r-h):(p.c=o,void 0)
-},0,a)}}function Zo(n,t){n.attr("transform",function(n){return"translate("+t(n)+",0)"})}function Vo(n,t){n.attr("transform",function(n){return"translate(0,"+t(n)+")"})}function $o(n){return n.toISOString()}function Xo(n,t,e){function r(t){return n(t)}function u(n,e){var r=n[1]-n[0],u=r/e,i=Go.bisect(Ys,u);return i==Ys.length?[t.year,Xi(n.map(function(n){return n/31536e6}),e)[2]]:i?t[u/Ys[i-1]<Ys[i]/u?i-1:i]:[Vs,Xi(n,e)[2]]}return r.invert=function(t){return Bo(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(Bo)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,Bo(+e+1),t).length}var i=r.domain(),o=ji(i),a=null==n?u(o,10):"number"==typeof n&&u(o,n);return a&&(n=a[0],t=a[1]),r.domain(Oi(i,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=Bo(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=Bo(+t+1);return t}}:n))},r.ticks=function(n,t){var e=ji(r.domain()),i=null==n?u(e,10):"number"==typeof n?u(e,n):!n.range&&[{range:n},t];return i&&(n=i[0],t=i[1]),n.range(e[0],Bo(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return Xo(n.copy(),t,e)},Vi(r,n)}function Bo(n){return new Date(n)}function Jo(n){return JSON.parse(n.responseText)}function Wo(n){var t=na.createRange();return t.selectNode(na.body),t.createContextualFragment(n.responseText)}var Go={version:"3.4.4"};Date.now||(Date.now=function(){return+new Date});var Ko=[].slice,Qo=function(n){return Ko.call(n)},na=document,ta=na.documentElement,ea=window;try{Qo(ta.childNodes)[0].nodeType}catch(ra){Qo=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}try{na.createElement("div").style.setProperty("opacity",0,"")}catch(ua){var ia=ea.Element.prototype,oa=ia.setAttribute,aa=ia.setAttributeNS,ca=ea.CSSStyleDeclaration.prototype,sa=ca.setProperty;ia.setAttribute=function(n,t){oa.call(this,n,t+"")},ia.setAttributeNS=function(n,t,e){aa.call(this,n,t,e+"")},ca.setProperty=function(n,t,e){sa.call(this,n,t+"",e)}}Go.ascending=n,Go.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:0/0},Go.min=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&e>r&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&e>r&&(e=r)}return e},Go.max=function(n,t){var e,r,u=-1,i=n.length;if(1===arguments.length){for(;++u<i&&!(null!=(e=n[u])&&e>=e);)e=void 0;for(;++u<i;)null!=(r=n[u])&&r>e&&(e=r)}else{for(;++u<i&&!(null!=(e=t.call(n,n[u],u))&&e>=e);)e=void 0;for(;++u<i;)null!=(r=t.call(n,n[u],u))&&r>e&&(e=r)}return e},Go.extent=function(n,t){var e,r,u,i=-1,o=n.length;if(1===arguments.length){for(;++i<o&&!(null!=(e=u=n[i])&&e>=e);)e=u=void 0;for(;++i<o;)null!=(r=n[i])&&(e>r&&(e=r),r>u&&(u=r))}else{for(;++i<o&&!(null!=(e=u=t.call(n,n[i],i))&&e>=e);)e=void 0;for(;++i<o;)null!=(r=t.call(n,n[i],i))&&(e>r&&(e=r),r>u&&(u=r))}return[e,u]},Go.sum=function(n,t){var e,r=0,u=n.length,i=-1;if(1===arguments.length)for(;++i<u;)isNaN(e=+n[i])||(r+=e);else for(;++i<u;)isNaN(e=+t.call(n,n[i],i))||(r+=e);return r},Go.mean=function(n,e){var r,u=n.length,i=0,o=-1,a=0;if(1===arguments.length)for(;++o<u;)t(r=n[o])&&(i+=(r-i)/++a);else for(;++o<u;)t(r=e.call(n,n[o],o))&&(i+=(r-i)/++a);return a?i:void 0},Go.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),u=+n[r-1],i=e-r;return i?u+i*(n[r]-u):u},Go.median=function(e,r){return arguments.length>1&&(e=e.map(r)),e=e.filter(t),e.length?Go.quantile(e.sort(n),.5):void 0};var la=e(n);Go.bisectLeft=la.left,Go.bisect=Go.bisectRight=la.right,Go.bisector=function(t){return e(1===t.length?function(e,r){return n(t(e),r)}:t)},Go.shuffle=function(n){for(var t,e,r=n.length;r;)e=0|Math.random()*r--,t=n[r],n[r]=n[e],n[e]=t;return n},Go.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},Go.pairs=function(n){for(var t,e=0,r=n.length-1,u=n[0],i=new Array(0>r?0:r);r>e;)i[e]=[t=u,u=n[++e]];return i},Go.zip=function(){if(!(u=arguments.length))return[];for(var n=-1,t=Go.min(arguments,r),e=new Array(t);++n<t;)for(var u,i=-1,o=e[n]=new Array(u);++i<u;)o[i]=arguments[i][n];return e},Go.transpose=function(n){return Go.zip.apply(Go,n)},Go.keys=function(n){var t=[];for(var e in n)t.push(e);return t},Go.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},Go.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},Go.merge=function(n){for(var t,e,r,u=n.length,i=-1,o=0;++i<u;)o+=n[i].length;for(e=new Array(o);--u>=0;)for(r=n[u],t=r.length;--t>=0;)e[--o]=r[t];return e};var fa=Math.abs;Go.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),1/0===(t-n)/e)throw new Error("infinite range");var r,i=[],o=u(fa(e)),a=-1;if(n*=o,t*=o,e*=o,0>e)for(;(r=n+e*++a)>t;)i.push(r/o);else for(;(r=n+e*++a)<t;)i.push(r/o);return i},Go.map=function(n){var t=new o;if(n instanceof o)n.forEach(function(n,e){t.set(n,e)});else for(var e in n)t.set(e,n[e]);return t},i(o,{has:a,get:function(n){return this[ha+n]},set:function(n,t){return this[ha+n]=t},remove:c,keys:s,values:function(){var n=[];return this.forEach(function(t,e){n.push(e)}),n},entries:function(){var n=[];return this.forEach(function(t,e){n.push({key:t,value:e})}),n},size:l,empty:f,forEach:function(n){for(var t in this)t.charCodeAt(0)===ga&&n.call(this,t.substring(1),this[t])}});var ha="\x00",ga=ha.charCodeAt(0);Go.nest=function(){function n(t,a,c){if(c>=i.length)return r?r.call(u,a):e?a.sort(e):a;for(var s,l,f,h,g=-1,p=a.length,v=i[c++],d=new o;++g<p;)(h=d.get(s=v(l=a[g])))?h.push(l):d.set(s,[l]);return t?(l=t(),f=function(e,r){l.set(e,n(t,r,c))}):(l={},f=function(e,r){l[e]=n(t,r,c)}),d.forEach(f),l}function t(n,e){if(e>=i.length)return n;var r=[],u=a[e++];return n.forEach(function(n,u){r.push({key:n,values:t(u,e)})}),u?r.sort(function(n,t){return u(n.key,t.key)}):r}var e,r,u={},i=[],a=[];return u.map=function(t,e){return n(e,t,0)},u.entries=function(e){return t(n(Go.map,e,0),0)},u.key=function(n){return i.push(n),u},u.sortKeys=function(n){return a[i.length-1]=n,u},u.sortValues=function(n){return e=n,u},u.rollup=function(n){return r=n,u},u},Go.set=function(n){var t=new h;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},i(h,{has:a,add:function(n){return this[ha+n]=!0,n},remove:function(n){return n=ha+n,n in this&&delete this[n]},values:s,size:l,empty:f,forEach:function(n){for(var t in this)t.charCodeAt(0)===ga&&n.call(this,t.substring(1))}}),Go.behavior={},Go.rebind=function(n,t){for(var e,r=1,u=arguments.length;++r<u;)n[e=arguments[r]]=g(n,t,t[e]);return n};var pa=["webkit","ms","moz","Moz","o","O"];Go.dispatch=function(){for(var n=new d,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=m(n);return n},d.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.substring(e+1),n=n.substring(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},Go.event=null,Go.requote=function(n){return n.replace(va,"\\$&")};var va=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,da={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},ma=function(n,t){return t.querySelector(n)},ya=function(n,t){return t.querySelectorAll(n)},xa=ta[p(ta,"matchesSelector")],Ma=function(n,t){return xa.call(n,t)};"function"==typeof Sizzle&&(ma=function(n,t){return Sizzle(n,t)[0]||null},ya=Sizzle,Ma=Sizzle.matchesSelector),Go.selection=function(){return Sa};var _a=Go.selection.prototype=[];_a.select=function(n){var t,e,r,u,i=[];n=b(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var c=-1,s=r.length;++c<s;)(u=r[c])?(t.push(e=n.call(u,u.__data__,c,o)),e&&"__data__"in u&&(e.__data__=u.__data__)):t.push(null)}return _(i)},_a.selectAll=function(n){var t,e,r=[];n=w(n);for(var u=-1,i=this.length;++u<i;)for(var o=this[u],a=-1,c=o.length;++a<c;)(e=o[a])&&(r.push(t=Qo(n.call(e,e.__data__,a,u))),t.parentNode=e);return _(r)};var ba={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};Go.ns={prefix:ba,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&(e=n.substring(0,t),n=n.substring(t+1)),ba.hasOwnProperty(e)?{space:ba[e],local:n}:n}},_a.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=Go.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(S(t,n[t]));return this}return this.each(S(n,t))},_a.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=N(n)).length,u=-1;if(t=e.classList){for(;++u<r;)if(!t.contains(n[u]))return!1}else for(t=e.getAttribute("class");++u<r;)if(!E(n[u]).test(t))return!1;return!0}for(t in n)this.each(A(t,n[t]));return this}return this.each(A(n,t))},_a.style=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t="");for(e in n)this.each(L(e,n[e],t));return this}if(2>r)return ea.getComputedStyle(this.node(),null).getPropertyValue(n);e=""}return this.each(L(n,t,e))},_a.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(T(t,n[t]));return this}return this.each(T(n,t))},_a.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},_a.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},_a.append=function(n){return n=q(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},_a.insert=function(n,t){return n=q(n),t=b(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},_a.remove=function(){return this.each(function(){var n=this.parentNode;n&&n.removeChild(this)})},_a.data=function(n,t){function e(n,e){var r,u,i,a=n.length,f=e.length,h=Math.min(a,f),g=new Array(f),p=new Array(f),v=new Array(a);if(t){var d,m=new o,y=new o,x=[];for(r=-1;++r<a;)d=t.call(u=n[r],u.__data__,r),m.has(d)?v[r]=u:m.set(d,u),x.push(d);for(r=-1;++r<f;)d=t.call(e,i=e[r],r),(u=m.get(d))?(g[r]=u,u.__data__=i):y.has(d)||(p[r]=z(i)),y.set(d,i),m.remove(d);for(r=-1;++r<a;)m.has(x[r])&&(v[r]=n[r])}else{for(r=-1;++r<h;)u=n[r],i=e[r],u?(u.__data__=i,g[r]=u):p[r]=z(i);for(;f>r;++r)p[r]=z(e[r]);for(;a>r;++r)v[r]=n[r]}p.update=g,p.parentNode=g.parentNode=v.parentNode=n.parentNode,c.push(p),s.push(g),l.push(v)}var r,u,i=-1,a=this.length;if(!arguments.length){for(n=new Array(a=(r=this[0]).length);++i<a;)(u=r[i])&&(n[i]=u.__data__);return n}var c=U([]),s=_([]),l=_([]);if("function"==typeof n)for(;++i<a;)e(r=this[i],n.call(r,r.parentNode.__data__,i));else for(;++i<a;)e(r=this[i],n);return s.enter=function(){return c},s.exit=function(){return l},s},_a.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},_a.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=R(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]),t.parentNode=(e=this[i]).parentNode;for(var a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return _(u)},_a.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],u=r.length-1,i=r[u];--u>=0;)(e=r[u])&&(i&&i!==e.nextSibling&&i.parentNode.insertBefore(e,i),i=e);return this},_a.sort=function(n){n=D.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},_a.each=function(n){return P(this,function(t,e,r){n.call(t,t.__data__,e,r)})},_a.call=function(n){var t=Qo(arguments);return n.apply(t[0]=this,t),this},_a.empty=function(){return!this.node()},_a.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,u=e.length;u>r;r++){var i=e[r];if(i)return i}return null},_a.size=function(){var n=0;return this.each(function(){++n}),n};var wa=[];Go.selection.enter=U,Go.selection.enter.prototype=wa,wa.append=_a.append,wa.empty=_a.empty,wa.node=_a.node,wa.call=_a.call,wa.size=_a.size,wa.select=function(n){for(var t,e,r,u,i,o=[],a=-1,c=this.length;++a<c;){r=(u=this[a]).update,o.push(t=[]),t.parentNode=u.parentNode;for(var s=-1,l=u.length;++s<l;)(i=u[s])?(t.push(r[s]=e=n.call(u.parentNode,i.__data__,s,a)),e.__data__=i.__data__):t.push(null)}return _(o)},wa.insert=function(n,t){return arguments.length<2&&(t=j(this)),_a.insert.call(this,n,t)},_a.transition=function(){for(var n,t,e=Cs||++Rs,r=[],u=Ls||{time:Date.now(),ease:wu,delay:0,duration:250},i=-1,o=this.length;++i<o;){r.push(n=[]);for(var a=this[i],c=-1,s=a.length;++c<s;)(t=a[c])&&Io(t,c,e,u),n.push(t)}return Fo(r,e)},_a.interrupt=function(){return this.each(H)},Go.select=function(n){var t=["string"==typeof n?ma(n,na):n];return t.parentNode=ta,_([t])},Go.selectAll=function(n){var t=Qo("string"==typeof n?ya(n,na):n);return t.parentNode=ta,_([t])};var Sa=Go.select(ta);_a.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(F(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(F(n,t,e))};var ka=Go.map({mouseenter:"mouseover",mouseleave:"mouseout"});ka.forEach(function(n){"on"+n in na&&ka.remove(n)});var Ea="onselectstart"in na?null:p(ta.style,"userSelect"),Na=0;Go.mouse=function(n){return Z(n,x())},Go.touches=function(n,t){return arguments.length<2&&(t=x().touches),t?Qo(t).map(function(t){var e=Z(n,t);return e.identifier=t.identifier,e}):[]},Go.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",i)}function t(n,t,u,i,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-x[0],e=r[1]-x[1],p|=n|e,x=r,g({type:"drag",x:r[0]+s[0],y:r[1]+s[1],dx:n,dy:e}))}function c(){t(h,v)&&(m.on(i+d,null).on(o+d,null),y(p&&Go.event.target===f),g({type:"dragend"}))}var s,l=this,f=Go.event.target,h=l.parentNode,g=e.of(l,arguments),p=0,v=n(),d=".drag"+(null==v?"":"-"+v),m=Go.select(u()).on(i+d,a).on(o+d,c),y=I(),x=t(h,v);r?(s=r.apply(l,arguments),s=[s.x-x[0],s.y-x[1]]):s=[0,0],g({type:"dragstart"})}}var e=M(n,"drag","dragstart","dragend"),r=null,u=t(v,Go.mouse,X,"mousemove","mouseup"),i=t(V,Go.touch,$,"touchmove","touchend");return n.origin=function(t){return arguments.length?(r=t,n):r},Go.rebind(n,e,"on")};var Aa=Math.PI,Ca=2*Aa,La=Aa/2,Ta=1e-6,qa=Ta*Ta,za=Aa/180,Ra=180/Aa,Da=Math.SQRT2,Pa=2,Ua=4;Go.interpolateZoom=function(n,t){function e(n){var t=n*y;if(m){var e=Q(v),o=i/(Pa*h)*(e*nt(Da*t+v)-K(v));return[r+o*s,u+o*l,i*e/Q(Da*t+v)]}return[r+n*s,u+n*l,i*Math.exp(Da*t)]}var r=n[0],u=n[1],i=n[2],o=t[0],a=t[1],c=t[2],s=o-r,l=a-u,f=s*s+l*l,h=Math.sqrt(f),g=(c*c-i*i+Ua*f)/(2*i*Pa*h),p=(c*c-i*i-Ua*f)/(2*c*Pa*h),v=Math.log(Math.sqrt(g*g+1)-g),d=Math.log(Math.sqrt(p*p+1)-p),m=d-v,y=(m||Math.log(c/i))/Da;return e.duration=1e3*y,e},Go.behavior.zoom=function(){function n(n){n.on(N,s).on(Fa+".zoom",f).on(A,h).on("dblclick.zoom",g).on(L,l)}function t(n){return[(n[0]-S.x)/S.k,(n[1]-S.y)/S.k]}function e(n){return[n[0]*S.k+S.x,n[1]*S.k+S.y]}function r(n){S.k=Math.max(E[0],Math.min(E[1],n))}function u(n,t){t=e(t),S.x+=n[0]-t[0],S.y+=n[1]-t[1]}function i(){_&&_.domain(x.range().map(function(n){return(n-S.x)/S.k}).map(x.invert)),w&&w.domain(b.range().map(function(n){return(n-S.y)/S.k}).map(b.invert))}function o(n){n({type:"zoomstart"})}function a(n){i(),n({type:"zoom",scale:S.k,translate:[S.x,S.y]})}function c(n){n({type:"zoomend"})}function s(){function n(){l=1,u(Go.mouse(r),g),a(s)}function e(){f.on(A,ea===r?h:null).on(C,null),p(l&&Go.event.target===i),c(s)}var r=this,i=Go.event.target,s=T.of(r,arguments),l=0,f=Go.select(ea).on(A,n).on(C,e),g=t(Go.mouse(r)),p=I();H.call(r),o(s)}function l(){function n(){var n=Go.touches(g);return h=S.k,n.forEach(function(n){n.identifier in v&&(v[n.identifier]=t(n))}),n}function e(){for(var t=Go.event.changedTouches,e=0,i=t.length;i>e;++e)v[t[e].identifier]=null;var o=n(),c=Date.now();if(1===o.length){if(500>c-m){var s=o[0],l=v[s.identifier];r(2*S.k),u(s,l),y(),a(p)}m=c}else if(o.length>1){var s=o[0],f=o[1],h=s[0]-f[0],g=s[1]-f[1];d=h*h+g*g}}function i(){for(var n,t,e,i,o=Go.touches(g),c=0,s=o.length;s>c;++c,i=null)if(e=o[c],i=v[e.identifier]){if(t)break;n=e,t=i}if(i){var l=(l=e[0]-n[0])*l+(l=e[1]-n[1])*l,f=d&&Math.sqrt(l/d);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+i[0])/2,(t[1]+i[1])/2],r(f*h)}m=null,u(n,t),a(p)}function f(){if(Go.event.touches.length){for(var t=Go.event.changedTouches,e=0,r=t.length;r>e;++e)delete v[t[e].identifier];for(var u in v)return void n()}b.on(x,null),w.on(N,s).on(L,l),k(),c(p)}var h,g=this,p=T.of(g,arguments),v={},d=0,x=".zoom-"+Go.event.changedTouches[0].identifier,M="touchmove"+x,_="touchend"+x,b=Go.select(Go.event.target).on(M,i).on(_,f),w=Go.select(g).on(N,null).on(L,e),k=I();H.call(g),e(),o(p)}function f(){var n=T.of(this,arguments);d?clearTimeout(d):(H.call(this),o(n)),d=setTimeout(function(){d=null,c(n)},50),y();var e=v||Go.mouse(this);p||(p=t(e)),r(Math.pow(2,.002*ja())*S.k),u(e,p),a(n)}function h(){p=null}function g(){var n=T.of(this,arguments),e=Go.mouse(this),i=t(e),s=Math.log(S.k)/Math.LN2;o(n),r(Math.pow(2,Go.event.shiftKey?Math.ceil(s)-1:Math.floor(s)+1)),u(e,i),a(n),c(n)}var p,v,d,m,x,_,b,w,S={x:0,y:0,k:1},k=[960,500],E=Ha,N="mousedown.zoom",A="mousemove.zoom",C="mouseup.zoom",L="touchstart.zoom",T=M(n,"zoomstart","zoom","zoomend");return n.event=function(n){n.each(function(){var n=T.of(this,arguments),t=S;Cs?Go.select(this).transition().each("start.zoom",function(){S=this.__chart__||{x:0,y:0,k:1},o(n)}).tween("zoom:zoom",function(){var e=k[0],r=k[1],u=e/2,i=r/2,o=Go.interpolateZoom([(u-S.x)/S.k,(i-S.y)/S.k,e/S.k],[(u-t.x)/t.k,(i-t.y)/t.k,e/t.k]);return function(t){var r=o(t),c=e/r[2];this.__chart__=S={x:u-r[0]*c,y:i-r[1]*c,k:c},a(n)}}).each("end.zoom",function(){c(n)}):(this.__chart__=S,o(n),a(n),c(n))})},n.translate=function(t){return arguments.length?(S={x:+t[0],y:+t[1],k:S.k},i(),n):[S.x,S.y]},n.scale=function(t){return arguments.length?(S={x:S.x,y:S.y,k:+t},i(),n):S.k},n.scaleExtent=function(t){return arguments.length?(E=null==t?Ha:[+t[0],+t[1]],n):E},n.center=function(t){return arguments.length?(v=t&&[+t[0],+t[1]],n):v},n.size=function(t){return arguments.length?(k=t&&[+t[0],+t[1]],n):k},n.x=function(t){return arguments.length?(_=t,x=t.copy(),S={x:0,y:0,k:1},n):_},n.y=function(t){return arguments.length?(w=t,b=t.copy(),S={x:0,y:0,k:1},n):w},Go.rebind(n,T,"on")};var ja,Ha=[0,1/0],Fa="onwheel"in na?(ja=function(){return-Go.event.deltaY*(Go.event.deltaMode?120:1)},"wheel"):"onmousewheel"in na?(ja=function(){return Go.event.wheelDelta},"mousewheel"):(ja=function(){return-Go.event.detail},"MozMousePixelScroll");et.prototype.toString=function(){return this.rgb()+""},Go.hsl=function(n,t,e){return 1===arguments.length?n instanceof ut?rt(n.h,n.s,n.l):_t(""+n,bt,rt):rt(+n,+t,+e)};var Oa=ut.prototype=new et;Oa.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),rt(this.h,this.s,this.l/n)},Oa.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),rt(this.h,this.s,n*this.l)},Oa.rgb=function(){return it(this.h,this.s,this.l)},Go.hcl=function(n,t,e){return 1===arguments.length?n instanceof at?ot(n.h,n.c,n.l):n instanceof lt?ht(n.l,n.a,n.b):ht((n=wt((n=Go.rgb(n)).r,n.g,n.b)).l,n.a,n.b):ot(+n,+t,+e)};var Ya=at.prototype=new et;Ya.brighter=function(n){return ot(this.h,this.c,Math.min(100,this.l+Ia*(arguments.length?n:1)))},Ya.darker=function(n){return ot(this.h,this.c,Math.max(0,this.l-Ia*(arguments.length?n:1)))},Ya.rgb=function(){return ct(this.h,this.c,this.l).rgb()},Go.lab=function(n,t,e){return 1===arguments.length?n instanceof lt?st(n.l,n.a,n.b):n instanceof at?ct(n.l,n.c,n.h):wt((n=Go.rgb(n)).r,n.g,n.b):st(+n,+t,+e)};var Ia=18,Za=.95047,Va=1,$a=1.08883,Xa=lt.prototype=new et;Xa.brighter=function(n){return st(Math.min(100,this.l+Ia*(arguments.length?n:1)),this.a,this.b)},Xa.darker=function(n){return st(Math.max(0,this.l-Ia*(arguments.length?n:1)),this.a,this.b)},Xa.rgb=function(){return ft(this.l,this.a,this.b)},Go.rgb=function(n,t,e){return 1===arguments.length?n instanceof xt?yt(n.r,n.g,n.b):_t(""+n,yt,it):yt(~~n,~~t,~~e)};var Ba=xt.prototype=new et;Ba.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,u=30;return t||e||r?(t&&u>t&&(t=u),e&&u>e&&(e=u),r&&u>r&&(r=u),yt(Math.min(255,~~(t/n)),Math.min(255,~~(e/n)),Math.min(255,~~(r/n)))):yt(u,u,u)},Ba.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),yt(~~(n*this.r),~~(n*this.g),~~(n*this.b))},Ba.hsl=function(){return bt(this.r,this.g,this.b)},Ba.toString=function(){return"#"+Mt(this.r)+Mt(this.g)+Mt(this.b)};var Ja=Go.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});Ja.forEach(function(n,t){Ja.set(n,dt(t))}),Go.functor=Et,Go.xhr=At(Nt),Go.dsv=function(n,t){function e(n,e,i){arguments.length<3&&(i=e,e=null);var o=Ct(n,t,null==e?r:u(e),i);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:u(n)):e},o}function r(n){return e.parse(n.responseText)}function u(n){return function(t){return e.parse(t.responseText,n)}}function i(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),c=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var u=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(u(n),e)}:u})},e.parseRows=function(n,t){function e(){if(l>=s)return o;if(u)return u=!1,i;var t=l;if(34===n.charCodeAt(t)){for(var e=t;e++<s;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}l=e+2;var r=n.charCodeAt(e+1);return 13===r?(u=!0,10===n.charCodeAt(e+2)&&++l):10===r&&(u=!0),n.substring(t+1,e).replace(/""/g,'"')}for(;s>l;){var r=n.charCodeAt(l++),a=1;if(10===r)u=!0;else if(13===r)u=!0,10===n.charCodeAt(l)&&(++l,++a);else if(r!==c)continue;return n.substring(t,l-a)}return n.substring(t)}for(var r,u,i={},o={},a=[],s=n.length,l=0,f=0;(r=e())!==o;){for(var h=[];r!==i&&r!==o;)h.push(r),r=e();(!t||(h=t(h,f++)))&&a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new h,u=[];return t.forEach(function(n){for(var t in n)r.has(t)||u.push(r.add(t))}),[u.map(o).join(n)].concat(t.map(function(t){return u.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(i).join("\n")},e},Go.csv=Go.dsv(",","text/csv"),Go.tsv=Go.dsv(" ","text/tab-separated-values"),Go.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=x().changedTouches),t)for(var r,u=0,i=t.length;i>u;++u)if((r=t[u]).identifier===e)return Z(n,r)};var Wa,Ga,Ka,Qa,nc,tc=ea[p(ea,"requestAnimationFrame")]||function(n){setTimeout(n,17)};Go.timer=function(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var u=e+t,i={c:n,t:u,f:!1,n:null};Ga?Ga.n=i:Wa=i,Ga=i,Ka||(Qa=clearTimeout(Qa),Ka=1,tc(Tt))},Go.timer.flush=function(){qt(),zt()},Go.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var ec=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Dt);Go.formatPrefix=function(n,t){var e=0;return n&&(0>n&&(n*=-1),t&&(n=Go.round(n,Rt(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),ec[8+e/3]};var rc=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,uc=Go.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=Go.round(n,Rt(n,t))).toFixed(Math.max(0,Math.min(20,Rt(n*(1+1e-15),t))))}}),ic=Go.time={},oc=Date;jt.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){ac.setUTCDate.apply(this._,arguments)},setDay:function(){ac.setUTCDay.apply(this._,arguments)},setFullYear:function(){ac.setUTCFullYear.apply(this._,arguments)},setHours:function(){ac.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){ac.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){ac.setUTCMinutes.apply(this._,arguments)},setMonth:function(){ac.setUTCMonth.apply(this._,arguments)},setSeconds:function(){ac.setUTCSeconds.apply(this._,arguments)},setTime:function(){ac.setTime.apply(this._,arguments)}};var ac=Date.prototype;ic.year=Ht(function(n){return n=ic.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ic.years=ic.year.range,ic.years.utc=ic.year.utc.range,ic.day=Ht(function(n){var t=new oc(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ic.days=ic.day.range,ic.days.utc=ic.day.utc.range,ic.dayOfYear=function(n){var t=ic.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ic[n]=Ht(function(n){return(n=ic.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ic.year(n).getDay();return Math.floor((ic.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ic[n+"s"]=e.range,ic[n+"s"].utc=e.utc.range,ic[n+"OfYear"]=function(n){var e=ic.year(n).getDay();return Math.floor((ic.dayOfYear(n)+(e+t)%7)/7)}}),ic.week=ic.sunday,ic.weeks=ic.sunday.range,ic.weeks.utc=ic.sunday.utc.range,ic.weekOfYear=ic.sundayOfYear;var cc={"-":"",_:" ",0:"0"},sc=/^\s*\d+/,lc=/^%/;Go.locale=function(n){return{numberFormat:Pt(n),timeFormat:Ot(n)}};var fc=Go.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});Go.format=fc.numberFormat,Go.geo={},ce.prototype={s:0,t:0,add:function(n){se(n,this.t,hc),se(hc.s,this.s,this),this.s?this.t+=hc.t:this.s=hc.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var hc=new ce;Go.geo.stream=function(n,t){n&&gc.hasOwnProperty(n.type)?gc[n.type](n,t):le(n,t)};var gc={Feature:function(n,t){le(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,u=e.length;++r<u;)le(e[r].geometry,t)}},pc={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){fe(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)fe(e[r],t,0)},Polygon:function(n,t){he(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,u=e.length;++r<u;)he(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,u=e.length;++r<u;)le(e[r],t)}};Go.geo.area=function(n){return vc=0,Go.geo.stream(n,mc),vc};var vc,dc=new ce,mc={sphere:function(){vc+=4*Aa},point:v,lineStart:v,lineEnd:v,polygonStart:function(){dc.reset(),mc.lineStart=ge},polygonEnd:function(){var n=2*dc;vc+=0>n?4*Aa+n:n,mc.lineStart=mc.lineEnd=mc.point=v}};Go.geo.bounds=function(){function n(n,t){x.push(M=[l=n,h=n]),f>t&&(f=t),t>g&&(g=t)}function t(t,e){var r=pe([t*za,e*za]);if(m){var u=de(m,r),i=[u[1],-u[0],0],o=de(i,u);xe(o),o=Me(o);var c=t-p,s=c>0?1:-1,v=o[0]*Ra*s,d=fa(c)>180;if(d^(v>s*p&&s*t>v)){var y=o[1]*Ra;y>g&&(g=y)}else if(v=(v+360)%360-180,d^(v>s*p&&s*t>v)){var y=-o[1]*Ra;f>y&&(f=y)}else f>e&&(f=e),e>g&&(g=e);d?p>t?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t):h>=l?(l>t&&(l=t),t>h&&(h=t)):t>p?a(l,t)>a(l,h)&&(h=t):a(t,h)>a(l,h)&&(l=t)}else n(t,e);m=r,p=t}function e(){_.point=t}function r(){M[0]=l,M[1]=h,_.point=n,m=null}function u(n,e){if(m){var r=n-p;y+=fa(r)>180?r+(r>0?360:-360):r}else v=n,d=e;mc.point(n,e),t(n,e)}function i(){mc.lineStart()}function o(){u(v,d),mc.lineEnd(),fa(y)>Ta&&(l=-(h=180)),M[0]=l,M[1]=h,m=null}function a(n,t){return(t-=n)<0?t+360:t}function c(n,t){return n[0]-t[0]}function s(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var l,f,h,g,p,v,d,m,y,x,M,_={point:n,lineStart:e,lineEnd:r,polygonStart:function(){_.point=u,_.lineStart=i,_.lineEnd=o,y=0,mc.polygonStart()},polygonEnd:function(){mc.polygonEnd(),_.point=n,_.lineStart=e,_.lineEnd=r,0>dc?(l=-(h=180),f=-(g=90)):y>Ta?g=90:-Ta>y&&(f=-90),M[0]=l,M[1]=h
-}};return function(n){g=h=-(l=f=1/0),x=[],Go.geo.stream(n,_);var t=x.length;if(t){x.sort(c);for(var e,r=1,u=x[0],i=[u];t>r;++r)e=x[r],s(e[0],u)||s(e[1],u)?(a(u[0],e[1])>a(u[0],u[1])&&(u[1]=e[1]),a(e[0],u[1])>a(u[0],u[1])&&(u[0]=e[0])):i.push(u=e);for(var o,e,p=-1/0,t=i.length-1,r=0,u=i[t];t>=r;u=e,++r)e=i[r],(o=a(u[1],e[0]))>p&&(p=o,l=e[0],h=u[1])}return x=M=null,1/0===l||1/0===f?[[0/0,0/0],[0/0,0/0]]:[[l,f],[h,g]]}}(),Go.geo.centroid=function(n){yc=xc=Mc=_c=bc=wc=Sc=kc=Ec=Nc=Ac=0,Go.geo.stream(n,Cc);var t=Ec,e=Nc,r=Ac,u=t*t+e*e+r*r;return qa>u&&(t=wc,e=Sc,r=kc,Ta>xc&&(t=Mc,e=_c,r=bc),u=t*t+e*e+r*r,qa>u)?[0/0,0/0]:[Math.atan2(e,t)*Ra,G(r/Math.sqrt(u))*Ra]};var yc,xc,Mc,_c,bc,wc,Sc,kc,Ec,Nc,Ac,Cc={sphere:v,point:be,lineStart:Se,lineEnd:ke,polygonStart:function(){Cc.lineStart=Ee},polygonEnd:function(){Cc.lineStart=Se}},Lc=Te(Ne,Pe,je,[-Aa,-Aa/2]),Tc=1e9;Go.geo.clipExtent=function(){var n,t,e,r,u,i,o={stream:function(n){return u&&(u.valid=!1),u=i(n),u.valid=!0,u},extent:function(a){return arguments.length?(i=Oe(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),u&&(u.valid=!1,u=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(Go.geo.conicEqualArea=function(){return Ie(Ze)}).raw=Ze,Go.geo.albers=function(){return Go.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},Go.geo.albersUsa=function(){function n(n){var i=n[0],o=n[1];return t=null,e(i,o),t||(r(i,o),t)||u(i,o),t}var t,e,r,u,i=Go.geo.albers(),o=Go.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=Go.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),c={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=i.scale(),e=i.translate(),r=(n[0]-e[0])/t,u=(n[1]-e[1])/t;return(u>=.12&&.234>u&&r>=-.425&&-.214>r?o:u>=.166&&.234>u&&r>=-.214&&-.115>r?a:i).invert(n)},n.stream=function(n){var t=i.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,u){t.point(n,u),e.point(n,u),r.point(n,u)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(i.precision(t),o.precision(t),a.precision(t),n):i.precision()},n.scale=function(t){return arguments.length?(i.scale(t),o.scale(.35*t),a.scale(t),n.translate(i.translate())):i.scale()},n.translate=function(t){if(!arguments.length)return i.translate();var s=i.scale(),l=+t[0],f=+t[1];return e=i.translate(t).clipExtent([[l-.455*s,f-.238*s],[l+.455*s,f+.238*s]]).stream(c).point,r=o.translate([l-.307*s,f+.201*s]).clipExtent([[l-.425*s+Ta,f+.12*s+Ta],[l-.214*s-Ta,f+.234*s-Ta]]).stream(c).point,u=a.translate([l-.205*s,f+.212*s]).clipExtent([[l-.214*s+Ta,f+.166*s+Ta],[l-.115*s-Ta,f+.234*s-Ta]]).stream(c).point,n},n.scale(1070)};var qc,zc,Rc,Dc,Pc,Uc,jc={point:v,lineStart:v,lineEnd:v,polygonStart:function(){zc=0,jc.lineStart=Ve},polygonEnd:function(){jc.lineStart=jc.lineEnd=jc.point=v,qc+=fa(zc/2)}},Hc={point:$e,lineStart:v,lineEnd:v,polygonStart:v,polygonEnd:v},Fc={point:Je,lineStart:We,lineEnd:Ge,polygonStart:function(){Fc.lineStart=Ke},polygonEnd:function(){Fc.point=Je,Fc.lineStart=We,Fc.lineEnd=Ge}};Go.geo.path=function(){function n(n){return n&&("function"==typeof a&&i.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=u(i)),Go.geo.stream(n,o)),i.result()}function t(){return o=null,n}var e,r,u,i,o,a=4.5;return n.area=function(n){return qc=0,Go.geo.stream(n,u(jc)),qc},n.centroid=function(n){return Mc=_c=bc=wc=Sc=kc=Ec=Nc=Ac=0,Go.geo.stream(n,u(Fc)),Ac?[Ec/Ac,Nc/Ac]:kc?[wc/kc,Sc/kc]:bc?[Mc/bc,_c/bc]:[0/0,0/0]},n.bounds=function(n){return Pc=Uc=-(Rc=Dc=1/0),Go.geo.stream(n,u(Hc)),[[Rc,Dc],[Pc,Uc]]},n.projection=function(n){return arguments.length?(u=(e=n)?n.stream||tr(n):Nt,t()):e},n.context=function(n){return arguments.length?(i=null==(r=n)?new Xe:new Qe(n),"function"!=typeof a&&i.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(i.pointRadius(+t),+t),n):a},n.projection(Go.geo.albersUsa()).context(null)},Go.geo.transform=function(n){return{stream:function(t){var e=new er(t);for(var r in n)e[r]=n[r];return e}}},er.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},Go.geo.projection=ur,Go.geo.projectionMutator=ir,(Go.geo.equirectangular=function(){return ur(ar)}).raw=ar.invert=ar,Go.geo.rotation=function(n){function t(t){return t=n(t[0]*za,t[1]*za),t[0]*=Ra,t[1]*=Ra,t}return n=sr(n[0]%360*za,n[1]*za,n.length>2?n[2]*za:0),t.invert=function(t){return t=n.invert(t[0]*za,t[1]*za),t[0]*=Ra,t[1]*=Ra,t},t},cr.invert=ar,Go.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=sr(-n[0]*za,-n[1]*za,0).invert,u=[];return e(null,null,1,{point:function(n,e){u.push(n=t(n,e)),n[0]*=Ra,n[1]*=Ra}}),{type:"Polygon",coordinates:[u]}}var t,e,r=[0,0],u=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=gr((t=+r)*za,u*za),n):t},n.precision=function(r){return arguments.length?(e=gr(t*za,(u=+r)*za),n):u},n.angle(90)},Go.geo.distance=function(n,t){var e,r=(t[0]-n[0])*za,u=n[1]*za,i=t[1]*za,o=Math.sin(r),a=Math.cos(r),c=Math.sin(u),s=Math.cos(u),l=Math.sin(i),f=Math.cos(i);return Math.atan2(Math.sqrt((e=f*o)*e+(e=s*l-c*f*a)*e),c*l+s*f*a)},Go.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return Go.range(Math.ceil(i/d)*d,u,d).map(h).concat(Go.range(Math.ceil(s/m)*m,c,m).map(g)).concat(Go.range(Math.ceil(r/p)*p,e,p).filter(function(n){return fa(n%d)>Ta}).map(l)).concat(Go.range(Math.ceil(a/v)*v,o,v).filter(function(n){return fa(n%m)>Ta}).map(f))}var e,r,u,i,o,a,c,s,l,f,h,g,p=10,v=p,d=90,m=360,y=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(i).concat(g(c).slice(1),h(u).reverse().slice(1),g(s).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(i=+t[0][0],u=+t[1][0],s=+t[0][1],c=+t[1][1],i>u&&(t=i,i=u,u=t),s>c&&(t=s,s=c,c=t),n.precision(y)):[[i,s],[u,c]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(y)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],m=+t[1],n):[d,m]},n.minorStep=function(t){return arguments.length?(p=+t[0],v=+t[1],n):[p,v]},n.precision=function(t){return arguments.length?(y=+t,l=vr(a,o,90),f=dr(r,e,y),h=vr(s,c,90),g=dr(i,u,y),n):y},n.majorExtent([[-180,-90+Ta],[180,90-Ta]]).minorExtent([[-180,-80-Ta],[180,80+Ta]])},Go.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||u.apply(this,arguments)]}}var t,e,r=mr,u=yr;return n.distance=function(){return Go.geo.distance(t||r.apply(this,arguments),e||u.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(u=t,e="function"==typeof t?null:t,n):u},n.precision=function(){return arguments.length?n:0},n},Go.geo.interpolate=function(n,t){return xr(n[0]*za,n[1]*za,t[0]*za,t[1]*za)},Go.geo.length=function(n){return Oc=0,Go.geo.stream(n,Yc),Oc};var Oc,Yc={sphere:v,point:v,lineStart:Mr,lineEnd:v,polygonStart:v,polygonEnd:v},Ic=_r(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(Go.geo.azimuthalEqualArea=function(){return ur(Ic)}).raw=Ic;var Zc=_r(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},Nt);(Go.geo.azimuthalEquidistant=function(){return ur(Zc)}).raw=Zc,(Go.geo.conicConformal=function(){return Ie(br)}).raw=br,(Go.geo.conicEquidistant=function(){return Ie(wr)}).raw=wr;var Vc=_r(function(n){return 1/n},Math.atan);(Go.geo.gnomonic=function(){return ur(Vc)}).raw=Vc,Sr.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-La]},(Go.geo.mercator=function(){return kr(Sr)}).raw=Sr;var $c=_r(function(){return 1},Math.asin);(Go.geo.orthographic=function(){return ur($c)}).raw=$c;var Xc=_r(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(Go.geo.stereographic=function(){return ur(Xc)}).raw=Xc,Er.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-La]},(Go.geo.transverseMercator=function(){var n=kr(Er),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[-n[1],n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},n.rotate([0,0])}).raw=Er,Go.geom={},Go.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,u=Et(e),i=Et(r),o=n.length,a=[],c=[];for(t=0;o>t;t++)a.push([+u.call(this,n[t],t),+i.call(this,n[t],t),t]);for(a.sort(Lr),t=0;o>t;t++)c.push([a[t][0],-a[t][1]]);var s=Cr(a),l=Cr(c),f=l[0]===s[0],h=l[l.length-1]===s[s.length-1],g=[];for(t=s.length-1;t>=0;--t)g.push(n[a[s[t]][2]]);for(t=+f;t<l.length-h;++t)g.push(n[a[l[t]][2]]);return g}var e=Nr,r=Ar;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},Go.geom.polygon=function(n){return da(n,Bc),n};var Bc=Go.geom.polygon.prototype=[];Bc.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],u=0;++t<e;)n=r,r=this[t],u+=n[1]*r[0]-n[0]*r[1];return.5*u},Bc.centroid=function(n){var t,e,r=-1,u=this.length,i=0,o=0,a=this[u-1];for(arguments.length||(n=-1/(6*this.area()));++r<u;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],i+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[i*n,o*n]},Bc.clip=function(n){for(var t,e,r,u,i,o,a=zr(n),c=-1,s=this.length-zr(this),l=this[s-1];++c<s;){for(t=n.slice(),n.length=0,u=this[c],i=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Tr(o,l,u)?(Tr(i,l,u)||n.push(qr(i,o,l,u)),n.push(o)):Tr(i,l,u)&&n.push(qr(i,o,l,u)),i=o;a&&n.push(n[0]),l=u}return n};var Jc,Wc,Gc,Kc,Qc,ns=[],ts=[];Or.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Ir),t.length},Qr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},nu.prototype={insert:function(n,t){var e,r,u;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=uu(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(u=r.R,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.R&&(eu(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ru(this,r))):(u=r.L,u&&u.C?(e.C=u.C=!1,r.C=!0,n=r):(n===e.L&&(ru(this,e),n=e,e=n.U),e.C=!1,r.C=!0,eu(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,u=n.U,i=n.L,o=n.R;if(e=i?o?uu(o):i:o,u?u.L===n?u.L=e:u.R=e:this._=e,i&&o?(r=e.C,e.C=n.C,e.L=i,i.U=e,e!==o?(u=e.U,e.U=n.U,n=e.R,u.L=n,e.R=o,o.U=e):(e.U=u,u=e,n=e.R)):(r=n.C,n=e),n&&(n.U=u),!r){if(n&&n.C)return n.C=!1,void 0;do{if(n===this._)break;if(n===u.L){if(t=u.R,t.C&&(t.C=!1,u.C=!0,eu(this,u),t=u.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ru(this,t),t=u.R),t.C=u.C,u.C=t.R.C=!1,eu(this,u),n=this._;break}}else if(t=u.L,t.C&&(t.C=!1,u.C=!0,ru(this,u),t=u.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,eu(this,t),t=u.L),t.C=u.C,u.C=t.L.C=!1,ru(this,u),n=this._;break}t.C=!0,n=u,u=u.U}while(!n.C);n&&(n.C=!1)}}},Go.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],u=a[0][1],i=a[1][0],o=a[1][1];return iu(e(n),a).cells.forEach(function(e,a){var c=e.edges,s=e.site,l=t[a]=c.length?c.map(function(n){var t=n.start();return[t.x,t.y]}):s.x>=r&&s.x<=i&&s.y>=u&&s.y<=o?[[r,o],[i,o],[i,u],[r,u]]:[];l.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(i(n,t)/Ta)*Ta,y:Math.round(o(n,t)/Ta)*Ta,i:t}})}var r=Nr,u=Ar,i=r,o=u,a=es;return n?t(n):(t.links=function(n){return iu(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return iu(e(n)).cells.forEach(function(e,r){for(var u,i,o=e.site,a=e.edges.sort(Ir),c=-1,s=a.length,l=a[s-1].edge,f=l.l===o?l.r:l.l;++c<s;)u=l,i=f,l=a[c].edge,f=l.l===o?l.r:l.l,r<i.i&&r<f.i&&au(o,i,f)<0&&t.push([n[r],n[i.i],n[f.i]])}),t},t.x=function(n){return arguments.length?(i=Et(r=n),t):r},t.y=function(n){return arguments.length?(o=Et(u=n),t):u},t.clipExtent=function(n){return arguments.length?(a=null==n?es:n,t):a===es?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===es?null:a&&a[1]},t)};var es=[[-1e6,-1e6],[1e6,1e6]];Go.geom.delaunay=function(n){return Go.geom.voronoi().triangles(n)},Go.geom.quadtree=function(n,t,e,r,u){function i(n){function i(n,t,e,r,u,i,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var c=n.x,l=n.y;if(null!=c)if(fa(c-e)+fa(l-r)<.01)s(n,t,e,r,u,i,o,a);else{var f=n.point;n.x=n.y=n.point=null,s(n,f,c,l,u,i,o,a),s(n,t,e,r,u,i,o,a)}else n.x=e,n.y=r,n.point=t}else s(n,t,e,r,u,i,o,a)}function s(n,t,e,r,u,o,a,c){var s=.5*(u+a),l=.5*(o+c),f=e>=s,h=r>=l,g=(h<<1)+f;n.leaf=!1,n=n.nodes[g]||(n.nodes[g]=lu()),f?u=s:a=s,h?o=l:c=l,i(n,t,e,r,u,o,a,c)}var l,f,h,g,p,v,d,m,y,x=Et(a),M=Et(c);if(null!=t)v=t,d=e,m=r,y=u;else if(m=y=-(v=d=1/0),f=[],h=[],p=n.length,o)for(g=0;p>g;++g)l=n[g],l.x<v&&(v=l.x),l.y<d&&(d=l.y),l.x>m&&(m=l.x),l.y>y&&(y=l.y),f.push(l.x),h.push(l.y);else for(g=0;p>g;++g){var _=+x(l=n[g],g),b=+M(l,g);v>_&&(v=_),d>b&&(d=b),_>m&&(m=_),b>y&&(y=b),f.push(_),h.push(b)}var w=m-v,S=y-d;w>S?y=d+w:m=v+S;var k=lu();if(k.add=function(n){i(k,n,+x(n,++g),+M(n,g),v,d,m,y)},k.visit=function(n){fu(n,k,v,d,m,y)},g=-1,null==t){for(;++g<p;)i(k,n[g],f[g],h[g],v,d,m,y);--g}else n.forEach(k.add);return f=h=n=l=null,k}var o,a=Nr,c=Ar;return(o=arguments.length)?(a=cu,c=su,3===o&&(u=e,r=t,e=t=0),i(n)):(i.x=function(n){return arguments.length?(a=n,i):a},i.y=function(n){return arguments.length?(c=n,i):c},i.extent=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],u=+n[1][1]),i):null==t?null:[[t,e],[r,u]]},i.size=function(n){return arguments.length?(null==n?t=e=r=u=null:(t=e=0,r=+n[0],u=+n[1]),i):null==t?null:[r-t,u-e]},i)},Go.interpolateRgb=hu,Go.interpolateObject=gu,Go.interpolateNumber=pu,Go.interpolateString=vu;var rs=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;Go.interpolate=du,Go.interpolators=[function(n,t){var e=typeof t;return("string"===e?Ja.has(t)||/^(#|rgb\(|hsl\()/.test(t)?hu:vu:t instanceof et?hu:Array.isArray(t)?mu:"object"===e&&isNaN(t)?gu:pu)(n,t)}],Go.interpolateArray=mu;var us=function(){return Nt},is=Go.map({linear:us,poly:Su,quad:function(){return _u},cubic:function(){return bu},sin:function(){return ku},exp:function(){return Eu},circle:function(){return Nu},elastic:Au,back:Cu,bounce:function(){return Lu}}),os=Go.map({"in":Nt,out:xu,"in-out":Mu,"out-in":function(n){return Mu(xu(n))}});Go.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.substring(0,t):n,r=t>=0?n.substring(t+1):"in";return e=is.get(e)||us,r=os.get(r)||Nt,yu(r(e.apply(null,Ko.call(arguments,1))))},Go.interpolateHcl=Tu,Go.interpolateHsl=qu,Go.interpolateLab=zu,Go.interpolateRound=Ru,Go.transform=function(n){var t=na.createElementNS(Go.ns.prefix.svg,"g");return(Go.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new Du(e?e.matrix:as)})(n)},Du.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var as={a:1,b:0,c:0,d:1,e:0,f:0};Go.interpolateTransform=Hu,Go.layout={},Go.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Yu(n[e]));return t}},Go.layout.chord=function(){function n(){var n,s,f,h,g,p={},v=[],d=Go.range(i),m=[];for(e=[],r=[],n=0,h=-1;++h<i;){for(s=0,g=-1;++g<i;)s+=u[h][g];v.push(s),m.push(Go.range(i)),n+=s}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&m.forEach(function(n,t){n.sort(function(n,e){return a(u[t][n],u[t][e])})}),n=(Ca-l*i)/n,s=0,h=-1;++h<i;){for(f=s,g=-1;++g<i;){var y=d[h],x=m[y][g],M=u[y][x],_=s,b=s+=M*n;p[y+"-"+x]={index:y,subindex:x,startAngle:_,endAngle:b,value:M}}r[y]={index:y,startAngle:f,endAngle:s,value:(s-f)/n},s+=l}for(h=-1;++h<i;)for(g=h-1;++g<i;){var w=p[h+"-"+g],S=p[g+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}c&&t()}function t(){e.sort(function(n,t){return c((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,u,i,o,a,c,s={},l=0;return s.matrix=function(n){return arguments.length?(i=(u=n)&&u.length,e=r=null,s):u},s.padding=function(n){return arguments.length?(l=n,e=r=null,s):l},s.sortGroups=function(n){return arguments.length?(o=n,e=r=null,s):o},s.sortSubgroups=function(n){return arguments.length?(a=n,e=null,s):a},s.sortChords=function(n){return arguments.length?(c=n,e&&t(),s):c},s.chords=function(){return e||n(),e},s.groups=function(){return r||n(),r},s},Go.layout.force=function(){function n(n){return function(t,e,r,u){if(t.point!==n){var i=t.cx-n.x,o=t.cy-n.y,a=u-e,c=i*i+o*o;if(c>a*a/d){if(p>c){var s=t.charge/c;n.px-=i*s,n.py-=o*s}return!0}if(t.point&&c&&p>c){var s=t.pointCharge/c;n.px-=i*s,n.py-=o*s}}return!t.charge}}function t(n){n.px=Go.event.x,n.py=Go.event.y,a.resume()}var e,r,u,i,o,a={},c=Go.dispatch("start","tick","end"),s=[1,1],l=.9,f=cs,h=ss,g=-30,p=ls,v=.1,d=.64,m=[],y=[];return a.tick=function(){if((r*=.99)<.005)return c.end({type:"end",alpha:r=0}),!0;var t,e,a,f,h,p,d,x,M,_=m.length,b=y.length;for(e=0;b>e;++e)a=y[e],f=a.source,h=a.target,x=h.x-f.x,M=h.y-f.y,(p=x*x+M*M)&&(p=r*i[e]*((p=Math.sqrt(p))-u[e])/p,x*=p,M*=p,h.x-=x*(d=f.weight/(h.weight+f.weight)),h.y-=M*d,f.x+=x*(d=1-d),f.y+=M*d);if((d=r*v)&&(x=s[0]/2,M=s[1]/2,e=-1,d))for(;++e<_;)a=m[e],a.x+=(x-a.x)*d,a.y+=(M-a.y)*d;if(g)for(Ju(t=Go.geom.quadtree(m),r,o),e=-1;++e<_;)(a=m[e]).fixed||t.visit(n(a));for(e=-1;++e<_;)a=m[e],a.fixed?(a.x=a.px,a.y=a.py):(a.x-=(a.px-(a.px=a.x))*l,a.y-=(a.py-(a.py=a.y))*l);c.tick({type:"tick",alpha:r})},a.nodes=function(n){return arguments.length?(m=n,a):m},a.links=function(n){return arguments.length?(y=n,a):y},a.size=function(n){return arguments.length?(s=n,a):s},a.linkDistance=function(n){return arguments.length?(f="function"==typeof n?n:+n,a):f},a.distance=a.linkDistance,a.linkStrength=function(n){return arguments.length?(h="function"==typeof n?n:+n,a):h},a.friction=function(n){return arguments.length?(l=+n,a):l},a.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,a):g},a.chargeDistance=function(n){return arguments.length?(p=n*n,a):Math.sqrt(p)},a.gravity=function(n){return arguments.length?(v=+n,a):v},a.theta=function(n){return arguments.length?(d=n*n,a):Math.sqrt(d)},a.alpha=function(n){return arguments.length?(n=+n,r?r=n>0?n:0:n>0&&(c.start({type:"start",alpha:r=n}),Go.timer(a.tick)),a):r},a.start=function(){function n(n,r){if(!e){for(e=new Array(c),a=0;c>a;++a)e[a]=[];for(a=0;s>a;++a){var u=y[a];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var i,o=e[t],a=-1,s=o.length;++a<s;)if(!isNaN(i=o[a][n]))return i;return Math.random()*r}var t,e,r,c=m.length,l=y.length,p=s[0],v=s[1];for(t=0;c>t;++t)(r=m[t]).index=t,r.weight=0;for(t=0;l>t;++t)r=y[t],"number"==typeof r.source&&(r.source=m[r.source]),"number"==typeof r.target&&(r.target=m[r.target]),++r.source.weight,++r.target.weight;for(t=0;c>t;++t)r=m[t],isNaN(r.x)&&(r.x=n("x",p)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof f)for(t=0;l>t;++t)u[t]=+f.call(this,y[t],t);else for(t=0;l>t;++t)u[t]=f;if(i=[],"function"==typeof h)for(t=0;l>t;++t)i[t]=+h.call(this,y[t],t);else for(t=0;l>t;++t)i[t]=h;if(o=[],"function"==typeof g)for(t=0;c>t;++t)o[t]=+g.call(this,m[t],t);else for(t=0;c>t;++t)o[t]=g;return a.resume()},a.resume=function(){return a.alpha(.1)},a.stop=function(){return a.alpha(0)},a.drag=function(){return e||(e=Go.behavior.drag().origin(Nt).on("dragstart.force",Vu).on("drag.force",t).on("dragend.force",$u)),arguments.length?(this.on("mouseover.force",Xu).on("mouseout.force",Bu).call(e),void 0):e},Go.rebind(a,c,"on")};var cs=20,ss=1,ls=1/0;Go.layout.hierarchy=function(){function n(t,o,a){var c=u.call(e,t,o);if(t.depth=o,a.push(t),c&&(s=c.length)){for(var s,l,f=-1,h=t.children=new Array(s),g=0,p=o+1;++f<s;)l=h[f]=n(c[f],p,a),l.parent=t,g+=l.value;r&&h.sort(r),i&&(t.value=g)}else delete t.children,i&&(t.value=+i.call(e,t,o)||0);return t}function t(n,r){var u=n.children,o=0;if(u&&(a=u.length))for(var a,c=-1,s=r+1;++c<a;)o+=t(u[c],s);else i&&(o=+i.call(e,n,r)||0);return i&&(n.value=o),o}function e(t){var e=[];return n(t,0,e),e}var r=Qu,u=Gu,i=Ku;return e.sort=function(n){return arguments.length?(r=n,e):r},e.children=function(n){return arguments.length?(u=n,e):u},e.value=function(n){return arguments.length?(i=n,e):i},e.revalue=function(n){return t(n,0),n},e},Go.layout.partition=function(){function n(t,e,r,u){var i=t.children;if(t.x=e,t.y=t.depth*u,t.dx=r,t.dy=u,i&&(o=i.length)){var o,a,c,s=-1;for(r=t.value?r/t.value:0;++s<o;)n(a=i[s],e,c=a.value*r,u),e+=c}}function t(n){var e=n.children,r=0;if(e&&(u=e.length))for(var u,i=-1;++i<u;)r=Math.max(r,t(e[i]));return 1+r}function e(e,i){var o=r.call(this,e,i);return n(o[0],0,u[0],u[1]/t(o[0])),o}var r=Go.layout.hierarchy(),u=[1,1];return e.size=function(n){return arguments.length?(u=n,e):u},Wu(e,r)},Go.layout.pie=function(){function n(i){var o=i.map(function(e,r){return+t.call(n,e,r)}),a=+("function"==typeof r?r.apply(this,arguments):r),c=(("function"==typeof u?u.apply(this,arguments):u)-a)/Go.sum(o),s=Go.range(i.length);null!=e&&s.sort(e===fs?function(n,t){return o[t]-o[n]}:function(n,t){return e(i[n],i[t])});var l=[];return s.forEach(function(n){var t;l[n]={data:i[n],value:t=o[n],startAngle:a,endAngle:a+=t*c}}),l}var t=Number,e=fs,r=0,u=Ca;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(u=t,n):u},n};var fs={};Go.layout.stack=function(){function n(a,c){var s=a.map(function(e,r){return t.call(n,e,r)}),l=s.map(function(t){return t.map(function(t,e){return[i.call(n,t,e),o.call(n,t,e)]})}),f=e.call(n,l,c);s=Go.permute(s,f),l=Go.permute(l,f);var h,g,p,v=r.call(n,l,c),d=s.length,m=s[0].length;for(g=0;m>g;++g)for(u.call(n,s[0][g],p=v[g],l[0][g][1]),h=1;d>h;++h)u.call(n,s[h][g],p+=l[h-1][g][1],l[h][g][1]);return a}var t=Nt,e=ui,r=ii,u=ri,i=ti,o=ei;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:hs.get(t)||ui,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:gs.get(t)||ii,n):r},n.x=function(t){return arguments.length?(i=t,n):i},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(u=t,n):u},n};var hs=Go.map({"inside-out":function(n){var t,e,r=n.length,u=n.map(oi),i=n.map(ai),o=Go.range(r).sort(function(n,t){return u[n]-u[t]}),a=0,c=0,s=[],l=[];for(t=0;r>t;++t)e=o[t],c>a?(a+=i[e],s.push(e)):(c+=i[e],l.push(e));return l.reverse().concat(s)},reverse:function(n){return Go.range(n.length).reverse()},"default":ui}),gs=Go.map({silhouette:function(n){var t,e,r,u=n.length,i=n[0].length,o=[],a=0,c=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;i>e;++e)c[e]=(a-o[e])/2;return c},wiggle:function(n){var t,e,r,u,i,o,a,c,s,l=n.length,f=n[0],h=f.length,g=[];for(g[0]=c=s=0,e=1;h>e;++e){for(t=0,u=0;l>t;++t)u+=n[t][e][1];for(t=0,i=0,a=f[e][0]-f[e-1][0];l>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;i+=o*n[t][e][1]}g[e]=c-=u?i/u*a:0,s>c&&(s=c)}for(e=0;h>e;++e)g[e]-=s;return g},expand:function(n){var t,e,r,u=n.length,i=n[0].length,o=1/u,a=[];for(e=0;i>e;++e){for(t=0,r=0;u>t;t++)r+=n[t][e][1];if(r)for(t=0;u>t;t++)n[t][e][1]/=r;else for(t=0;u>t;t++)n[t][e][1]=o}for(e=0;i>e;++e)a[e]=0;return a},zero:ii});Go.layout.histogram=function(){function n(n,i){for(var o,a,c=[],s=n.map(e,this),l=r.call(this,s,i),f=u.call(this,l,s,i),i=-1,h=s.length,g=f.length-1,p=t?1:1/h;++i<g;)o=c[i]=[],o.dx=f[i+1]-(o.x=f[i]),o.y=0;if(g>0)for(i=-1;++i<h;)a=s[i],a>=l[0]&&a<=l[1]&&(o=c[Go.bisect(f,a,1,g)-1],o.y+=p,o.push(n[i]));return c}var t=!0,e=Number,r=fi,u=si;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=Et(t),n):r},n.bins=function(t){return arguments.length?(u="number"==typeof t?function(n){return li(n,t)}:Et(t),n):u},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},Go.layout.tree=function(){function n(n,i){function o(n,t){var r=n.children,u=n._tree;if(r&&(i=r.length)){for(var i,a,s,l=r[0],f=l,h=-1;++h<i;)s=r[h],o(s,a),f=c(s,a,f),a=s;Mi(n);var g=.5*(l._tree.prelim+s._tree.prelim);t?(u.prelim=t._tree.prelim+e(n,t),u.mod=u.prelim-g):u.prelim=g}else t&&(u.prelim=t._tree.prelim+e(n,t))}function a(n,t){n.x=n._tree.prelim+t;var e=n.children;if(e&&(r=e.length)){var r,u=-1;for(t+=n._tree.mod;++u<r;)a(e[u],t)}}function c(n,t,r){if(t){for(var u,i=n,o=n,a=t,c=n.parent.children[0],s=i._tree.mod,l=o._tree.mod,f=a._tree.mod,h=c._tree.mod;a=pi(a),i=gi(i),a&&i;)c=gi(c),o=pi(o),o._tree.ancestor=n,u=a._tree.prelim+f-i._tree.prelim-s+e(a,i),u>0&&(_i(bi(a,n,r),n,u),s+=u,l+=u),f+=a._tree.mod,s+=i._tree.mod,h+=c._tree.mod,l+=o._tree.mod;a&&!pi(o)&&(o._tree.thread=a,o._tree.mod+=f-l),i&&!gi(c)&&(c._tree.thread=i,c._tree.mod+=s-h,r=n)}return r}var s=t.call(this,n,i),l=s[0];xi(l,function(n,t){n._tree={ancestor:n,prelim:0,mod:0,change:0,shift:0,number:t?t._tree.number+1:0}}),o(l),a(l,-l._tree.prelim);var f=vi(l,mi),h=vi(l,di),g=vi(l,yi),p=f.x-e(f,h)/2,v=h.x+e(h,f)/2,d=g.depth||1;return xi(l,u?function(n){n.x*=r[0],n.y=n.depth*r[1],delete n._tree}:function(n){n.x=(n.x-p)/(v-p)*r[0],n.y=n.depth/d*r[1],delete n._tree}),s}var t=Go.layout.hierarchy().sort(null).value(null),e=hi,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Wu(n,t)},Go.layout.pack=function(){function n(n,i){var o=e.call(this,n,i),a=o[0],c=u[0],s=u[1],l=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,xi(a,function(n){n.r=+l(n.value)}),xi(a,Ni),r){var f=r*(t?1:Math.max(2*a.r/c,2*a.r/s))/2;xi(a,function(n){n.r+=f}),xi(a,Ni),xi(a,function(n){n.r-=f})}return Li(a,c/2,s/2,t?1:1/Math.max(2*a.r/c,2*a.r/s)),o}var t,e=Go.layout.hierarchy().sort(wi),r=0,u=[1,1];return n.size=function(t){return arguments.length?(u=t,n):u},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},Wu(n,e)},Go.layout.cluster=function(){function n(n,i){var o,a=t.call(this,n,i),c=a[0],s=0;xi(c,function(n){var t=n.children;t&&t.length?(n.x=zi(t),n.y=qi(t)):(n.x=o?s+=e(n,o):0,n.y=0,o=n)});var l=Ri(c),f=Di(c),h=l.x-e(l,f)/2,g=f.x+e(f,l)/2;return xi(c,u?function(n){n.x=(n.x-c.x)*r[0],n.y=(c.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(g-h)*r[0],n.y=(1-(c.y?n.y/c.y:1))*r[1]}),a}var t=Go.layout.hierarchy().sort(null).value(null),e=hi,r=[1,1],u=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(u=null==(r=t),n):u?null:r},n.nodeSize=function(t){return arguments.length?(u=null!=(r=t),n):u?r:null},Wu(n,t)},Go.layout.treemap=function(){function n(n,t){for(var e,r,u=-1,i=n.length;++u<i;)r=(e=n[u]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var i=e.children;if(i&&i.length){var o,a,c,s=f(e),l=[],h=i.slice(),p=1/0,v="slice"===g?s.dx:"dice"===g?s.dy:"slice-dice"===g?1&e.depth?s.dy:s.dx:Math.min(s.dx,s.dy);for(n(h,s.dx*s.dy/e.value),l.area=0;(c=h.length)>0;)l.push(o=h[c-1]),l.area+=o.area,"squarify"!==g||(a=r(l,v))<=p?(h.pop(),p=a):(l.area-=l.pop().area,u(l,v,s,!1),v=Math.min(s.dx,s.dy),l.length=l.area=0,p=1/0);l.length&&(u(l,v,s,!0),l.length=l.area=0),i.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var i,o=f(t),a=r.slice(),c=[];for(n(a,o.dx*o.dy/t.value),c.area=0;i=a.pop();)c.push(i),c.area+=i.area,null!=i.z&&(u(c,i.z?o.dx:o.dy,o,!a.length),c.length=c.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,u=0,i=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(i>e&&(i=e),e>u&&(u=e));return r*=r,t*=t,r?Math.max(t*u*p/r,r/(t*i*p)):1/0}function u(n,t,e,r){var u,i=-1,o=n.length,a=e.x,s=e.y,l=t?c(n.area/t):0;if(t==e.dx){for((r||l>e.dy)&&(l=e.dy);++i<o;)u=n[i],u.x=a,u.y=s,u.dy=l,a+=u.dx=Math.min(e.x+e.dx-a,l?c(u.area/l):0);u.z=!0,u.dx+=e.x+e.dx-a,e.y+=l,e.dy-=l}else{for((r||l>e.dx)&&(l=e.dx);++i<o;)u=n[i],u.x=a,u.y=s,u.dx=l,s+=u.dy=Math.min(e.y+e.dy-s,l?c(u.area/l):0);u.z=!1,u.dy+=e.y+e.dy-s,e.x+=l,e.dx-=l}}function i(r){var u=o||a(r),i=u[0];return i.x=0,i.y=0,i.dx=s[0],i.dy=s[1],o&&a.revalue(i),n([i],i.dx*i.dy/i.value),(o?e:t)(i),h&&(o=u),u}var o,a=Go.layout.hierarchy(),c=Math.round,s=[1,1],l=null,f=Pi,h=!1,g="squarify",p=.5*(1+Math.sqrt(5));return i.size=function(n){return arguments.length?(s=n,i):s},i.padding=function(n){function t(t){var e=n.call(i,t,t.depth);return null==e?Pi(t):Ui(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Ui(t,n)}if(!arguments.length)return l;var r;return f=null==(l=n)?Pi:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,i},i.round=function(n){return arguments.length?(c=n?Math.round:Number,i):c!=Number},i.sticky=function(n){return arguments.length?(h=n,o=null,i):h},i.ratio=function(n){return arguments.length?(p=n,i):p},i.mode=function(n){return arguments.length?(g=n+"",i):g},Wu(i,a)},Go.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,u;do e=2*Math.random()-1,r=2*Math.random()-1,u=e*e+r*r;while(!u||u>1);return n+t*e*Math.sqrt(-2*Math.log(u)/u)}},logNormal:function(){var n=Go.random.normal.apply(Go,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=Go.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},Go.scale={};var ps={floor:Nt,ceil:Nt};Go.scale.linear=function(){return Zi([0,1],[0,1],du,!1)};var vs={s:1,g:1,p:1,r:1,e:1};Go.scale.log=function(){return Ki(Go.scale.linear().domain([0,1]),10,!0,[1,10])};var ds=Go.format(".0e"),ms={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};Go.scale.pow=function(){return Qi(Go.scale.linear(),1,[0,1])},Go.scale.sqrt=function(){return Go.scale.pow().exponent(.5)},Go.scale.ordinal=function(){return to([],{t:"range",a:[[]]})},Go.scale.category10=function(){return Go.scale.ordinal().range(ys)},Go.scale.category20=function(){return Go.scale.ordinal().range(xs)},Go.scale.category20b=function(){return Go.scale.ordinal().range(Ms)},Go.scale.category20c=function(){return Go.scale.ordinal().range(_s)};var ys=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(mt),xs=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(mt),Ms=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(mt),_s=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(mt);Go.scale.quantile=function(){return eo([],[])
-},Go.scale.quantize=function(){return ro(0,1,[0,1])},Go.scale.threshold=function(){return uo([.5],[0,1])},Go.scale.identity=function(){return io([0,1])},Go.svg={},Go.svg.arc=function(){function n(){var n=t.apply(this,arguments),i=e.apply(this,arguments),o=r.apply(this,arguments)+bs,a=u.apply(this,arguments)+bs,c=(o>a&&(c=o,o=a,a=c),a-o),s=Aa>c?"0":"1",l=Math.cos(o),f=Math.sin(o),h=Math.cos(a),g=Math.sin(a);return c>=ws?n?"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"M0,"+n+"A"+n+","+n+" 0 1,0 0,"+-n+"A"+n+","+n+" 0 1,0 0,"+n+"Z":"M0,"+i+"A"+i+","+i+" 0 1,1 0,"+-i+"A"+i+","+i+" 0 1,1 0,"+i+"Z":n?"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L"+n*h+","+n*g+"A"+n+","+n+" 0 "+s+",0 "+n*l+","+n*f+"Z":"M"+i*l+","+i*f+"A"+i+","+i+" 0 "+s+",1 "+i*h+","+i*g+"L0,0"+"Z"}var t=oo,e=ao,r=co,u=so;return n.innerRadius=function(e){return arguments.length?(t=Et(e),n):t},n.outerRadius=function(t){return arguments.length?(e=Et(t),n):e},n.startAngle=function(t){return arguments.length?(r=Et(t),n):r},n.endAngle=function(t){return arguments.length?(u=Et(t),n):u},n.centroid=function(){var n=(t.apply(this,arguments)+e.apply(this,arguments))/2,i=(r.apply(this,arguments)+u.apply(this,arguments))/2+bs;return[Math.cos(i)*n,Math.sin(i)*n]},n};var bs=-La,ws=Ca-Ta;Go.svg.line=function(){return lo(Nt)};var Ss=Go.map({linear:fo,"linear-closed":ho,step:go,"step-before":po,"step-after":vo,basis:bo,"basis-open":wo,"basis-closed":So,bundle:ko,cardinal:xo,"cardinal-open":mo,"cardinal-closed":yo,monotone:To});Ss.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var ks=[0,2/3,1/3,0],Es=[0,1/3,2/3,0],Ns=[0,1/6,2/3,1/6];Go.svg.line.radial=function(){var n=lo(qo);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},po.reverse=vo,vo.reverse=po,Go.svg.area=function(){return zo(Nt)},Go.svg.area.radial=function(){var n=zo(qo);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},Go.svg.chord=function(){function n(n,a){var c=t(this,i,n,a),s=t(this,o,n,a);return"M"+c.p0+r(c.r,c.p1,c.a1-c.a0)+(e(c,s)?u(c.r,c.p1,c.r,c.p0):u(c.r,c.p1,s.r,s.p0)+r(s.r,s.p1,s.a1-s.a0)+u(s.r,s.p1,c.r,c.p0))+"Z"}function t(n,t,e,r){var u=t.call(n,e,r),i=a.call(n,u,r),o=c.call(n,u,r)+bs,l=s.call(n,u,r)+bs;return{r:i,a0:o,a1:l,p0:[i*Math.cos(o),i*Math.sin(o)],p1:[i*Math.cos(l),i*Math.sin(l)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Aa)+",1 "+t}function u(n,t,e,r){return"Q 0,0 "+r}var i=mr,o=yr,a=Ro,c=co,s=so;return n.radius=function(t){return arguments.length?(a=Et(t),n):a},n.source=function(t){return arguments.length?(i=Et(t),n):i},n.target=function(t){return arguments.length?(o=Et(t),n):o},n.startAngle=function(t){return arguments.length?(c=Et(t),n):c},n.endAngle=function(t){return arguments.length?(s=Et(t),n):s},n},Go.svg.diagonal=function(){function n(n,u){var i=t.call(this,n,u),o=e.call(this,n,u),a=(i.y+o.y)/2,c=[i,{x:i.x,y:a},{x:o.x,y:a},o];return c=c.map(r),"M"+c[0]+"C"+c[1]+" "+c[2]+" "+c[3]}var t=mr,e=yr,r=Do;return n.source=function(e){return arguments.length?(t=Et(e),n):t},n.target=function(t){return arguments.length?(e=Et(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},Go.svg.diagonal.radial=function(){var n=Go.svg.diagonal(),t=Do,e=n.projection;return n.projection=function(n){return arguments.length?e(Po(t=n)):t},n},Go.svg.symbol=function(){function n(n,r){return(As.get(t.call(this,n,r))||Ho)(e.call(this,n,r))}var t=jo,e=Uo;return n.type=function(e){return arguments.length?(t=Et(e),n):t},n.size=function(t){return arguments.length?(e=Et(t),n):e},n};var As=Go.map({circle:Ho,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*qs)),e=t*qs;return"M0,"+-t+"L"+e+",0"+" 0,"+t+" "+-e+",0"+"Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/Ts),e=t*Ts/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/Ts),e=t*Ts/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});Go.svg.symbolTypes=As.keys();var Cs,Ls,Ts=Math.sqrt(3),qs=Math.tan(30*za),zs=[],Rs=0;zs.call=_a.call,zs.empty=_a.empty,zs.node=_a.node,zs.size=_a.size,Go.transition=function(n){return arguments.length?Cs?n.transition():n:Sa.transition()},Go.transition.prototype=zs,zs.select=function(n){var t,e,r,u=this.id,i=[];n=b(n);for(var o=-1,a=this.length;++o<a;){i.push(t=[]);for(var c=this[o],s=-1,l=c.length;++s<l;)(r=c[s])&&(e=n.call(r,r.__data__,s,o))?("__data__"in r&&(e.__data__=r.__data__),Io(e,s,u,r.__transition__[u]),t.push(e)):t.push(null)}return Fo(i,u)},zs.selectAll=function(n){var t,e,r,u,i,o=this.id,a=[];n=w(n);for(var c=-1,s=this.length;++c<s;)for(var l=this[c],f=-1,h=l.length;++f<h;)if(r=l[f]){i=r.__transition__[o],e=n.call(r,r.__data__,f,c),a.push(t=[]);for(var g=-1,p=e.length;++g<p;)(u=e[g])&&Io(u,g,o,i),t.push(u)}return Fo(a,o)},zs.filter=function(n){var t,e,r,u=[];"function"!=typeof n&&(n=R(n));for(var i=0,o=this.length;o>i;i++){u.push(t=[]);for(var e=this[i],a=0,c=e.length;c>a;a++)(r=e[a])&&n.call(r,r.__data__,a,i)&&t.push(r)}return Fo(u,this.id)},zs.tween=function(n,t){var e=this.id;return arguments.length<2?this.node().__transition__[e].tween.get(n):P(this,null==t?function(t){t.__transition__[e].tween.remove(n)}:function(r){r.__transition__[e].tween.set(n,t)})},zs.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function u(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function i(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?Hu:du,a=Go.ns.qualify(n);return Oo(this,"attr."+n,t,a.local?i:u)},zs.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(u));return r&&function(n){this.setAttribute(u,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(u.space,u.local));return r&&function(n){this.setAttributeNS(u.space,u.local,r(n))}}var u=Go.ns.qualify(n);return this.tween("attr."+n,u.local?r:e)},zs.style=function(n,t,e){function r(){this.style.removeProperty(n)}function u(t){return null==t?r:(t+="",function(){var r,u=ea.getComputedStyle(this,null).getPropertyValue(n);return u!==t&&(r=du(u,t),function(t){this.style.setProperty(n,r(t),e)})})}var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(t="");for(e in n)this.style(e,n[e],t);return this}e=""}return Oo(this,"style."+n,t,u)},zs.styleTween=function(n,t,e){function r(r,u){var i=t.call(this,r,u,ea.getComputedStyle(this,null).getPropertyValue(n));return i&&function(t){this.style.setProperty(n,i(t),e)}}return arguments.length<3&&(e=""),this.tween("style."+n,r)},zs.text=function(n){return Oo(this,"text",n,Yo)},zs.remove=function(){return this.each("end.transition",function(){var n;this.__transition__.count<2&&(n=this.parentNode)&&n.removeChild(this)})},zs.ease=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].ease:("function"!=typeof n&&(n=Go.ease.apply(Go,arguments)),P(this,function(e){e.__transition__[t].ease=n}))},zs.delay=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].delay:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].delay=+n.call(e,e.__data__,r,u)}:(n=+n,function(e){e.__transition__[t].delay=n}))},zs.duration=function(n){var t=this.id;return arguments.length<1?this.node().__transition__[t].duration:P(this,"function"==typeof n?function(e,r,u){e.__transition__[t].duration=Math.max(1,n.call(e,e.__data__,r,u))}:(n=Math.max(1,n),function(e){e.__transition__[t].duration=n}))},zs.each=function(n,t){var e=this.id;if(arguments.length<2){var r=Ls,u=Cs;Cs=e,P(this,function(t,r,u){Ls=t.__transition__[e],n.call(t,t.__data__,r,u)}),Ls=r,Cs=u}else P(this,function(r){var u=r.__transition__[e];(u.event||(u.event=Go.dispatch("start","end"))).on(n,t)});return this},zs.transition=function(){for(var n,t,e,r,u=this.id,i=++Rs,o=[],a=0,c=this.length;c>a;a++){o.push(n=[]);for(var t=this[a],s=0,l=t.length;l>s;s++)(e=t[s])&&(r=Object.create(e.__transition__[u]),r.delay+=r.duration,Io(e,s,i,r)),n.push(e)}return Fo(o,i)},Go.svg.axis=function(){function n(n){n.each(function(){var n,s=Go.select(this),l=this.__chart__||e,f=this.__chart__=e.copy(),h=null==c?f.ticks?f.ticks.apply(f,a):f.domain():c,g=null==t?f.tickFormat?f.tickFormat.apply(f,a):Nt:t,p=s.selectAll(".tick").data(h,f),v=p.enter().insert("g",".domain").attr("class","tick").style("opacity",Ta),d=Go.transition(p.exit()).style("opacity",Ta).remove(),m=Go.transition(p.order()).style("opacity",1),y=Hi(f),x=s.selectAll(".domain").data([0]),M=(x.enter().append("path").attr("class","domain"),Go.transition(x));v.append("line"),v.append("text");var _=v.select("line"),b=m.select("line"),w=p.select("text").text(g),S=v.select("text"),k=m.select("text");switch(r){case"bottom":n=Zo,_.attr("y2",u),S.attr("y",Math.max(u,0)+o),b.attr("x2",0).attr("y2",u),k.attr("x",0).attr("y",Math.max(u,0)+o),w.attr("dy",".71em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+i+"V0H"+y[1]+"V"+i);break;case"top":n=Zo,_.attr("y2",-u),S.attr("y",-(Math.max(u,0)+o)),b.attr("x2",0).attr("y2",-u),k.attr("x",0).attr("y",-(Math.max(u,0)+o)),w.attr("dy","0em").style("text-anchor","middle"),M.attr("d","M"+y[0]+","+-i+"V0H"+y[1]+"V"+-i);break;case"left":n=Vo,_.attr("x2",-u),S.attr("x",-(Math.max(u,0)+o)),b.attr("x2",-u).attr("y2",0),k.attr("x",-(Math.max(u,0)+o)).attr("y",0),w.attr("dy",".32em").style("text-anchor","end"),M.attr("d","M"+-i+","+y[0]+"H0V"+y[1]+"H"+-i);break;case"right":n=Vo,_.attr("x2",u),S.attr("x",Math.max(u,0)+o),b.attr("x2",u).attr("y2",0),k.attr("x",Math.max(u,0)+o).attr("y",0),w.attr("dy",".32em").style("text-anchor","start"),M.attr("d","M"+i+","+y[0]+"H0V"+y[1]+"H"+i)}if(f.rangeBand){var E=f,N=E.rangeBand()/2;l=f=function(n){return E(n)+N}}else l.rangeBand?l=f:d.call(n,f);v.call(n,l),m.call(n,f)})}var t,e=Go.scale.linear(),r=Ds,u=6,i=6,o=3,a=[10],c=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Ps?t+"":Ds,n):r},n.ticks=function(){return arguments.length?(a=arguments,n):a},n.tickValues=function(t){return arguments.length?(c=t,n):c},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(u=+t,i=+arguments[e-1],n):u},n.innerTickSize=function(t){return arguments.length?(u=+t,n):u},n.outerTickSize=function(t){return arguments.length?(i=+t,n):i},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Ds="bottom",Ps={top:1,right:1,bottom:1,left:1};Go.svg.brush=function(){function n(i){i.each(function(){var i=Go.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=i.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),i.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=i.selectAll(".resize").data(p,Nt);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return Us[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,f=Go.transition(i),h=Go.transition(o);c&&(l=Hi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),e(f)),s&&(l=Hi(s),h.attr("y",l[0]).attr("height",l[1]-l[0]),r(f)),t(f)})}function t(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+l[+/e$/.test(n)]+","+f[+/^s/.test(n)]+")"})}function e(n){n.select(".extent").attr("x",l[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",l[1]-l[0])}function r(n){n.select(".extent").attr("y",f[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",f[1]-f[0])}function u(){function u(){32==Go.event.keyCode&&(A||(x=null,L[0]-=l[1],L[1]-=f[1],A=2),y())}function p(){32==Go.event.keyCode&&2==A&&(L[0]+=l[1],L[1]+=f[1],A=0,y())}function v(){var n=Go.mouse(_),u=!1;M&&(n[0]+=M[0],n[1]+=M[1]),A||(Go.event.altKey?(x||(x=[(l[0]+l[1])/2,(f[0]+f[1])/2]),L[0]=l[+(n[0]<x[0])],L[1]=f[+(n[1]<x[1])]):x=null),E&&d(n,c,0)&&(e(S),u=!0),N&&d(n,s,1)&&(r(S),u=!0),u&&(t(S),w({type:"brush",mode:A?"move":"resize"}))}function d(n,t,e){var r,u,a=Hi(t),c=a[0],s=a[1],p=L[e],v=e?f:l,d=v[1]-v[0];return A&&(c-=p,s-=d+p),r=(e?g:h)?Math.max(c,Math.min(s,n[e])):n[e],A?u=(r+=p)+d:(x&&(p=Math.max(c,Math.min(s,2*x[e]-r))),r>p?(u=r,r=p):u=p),v[0]!=r||v[1]!=u?(e?o=null:i=null,v[0]=r,v[1]=u,!0):void 0}function m(){v(),S.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),Go.select("body").style("cursor",null),T.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),C(),w({type:"brushend"})}var x,M,_=this,b=Go.select(Go.event.target),w=a.of(_,arguments),S=Go.select(_),k=b.datum(),E=!/^(n|s)$/.test(k)&&c,N=!/^(e|w)$/.test(k)&&s,A=b.classed("extent"),C=I(),L=Go.mouse(_),T=Go.select(ea).on("keydown.brush",u).on("keyup.brush",p);if(Go.event.changedTouches?T.on("touchmove.brush",v).on("touchend.brush",m):T.on("mousemove.brush",v).on("mouseup.brush",m),S.interrupt().selectAll("*").interrupt(),A)L[0]=l[0]-L[0],L[1]=f[0]-L[1];else if(k){var q=+/w$/.test(k),z=+/^n/.test(k);M=[l[1-q]-L[0],f[1-z]-L[1]],L[0]=l[q],L[1]=f[z]}else Go.event.altKey&&(x=L.slice());S.style("pointer-events","none").selectAll(".resize").style("display",null),Go.select("body").style("cursor",b.style("cursor")),w({type:"brushstart"}),v()}var i,o,a=M(n,"brushstart","brush","brushend"),c=null,s=null,l=[0,0],f=[0,0],h=!0,g=!0,p=js[0];return n.event=function(n){n.each(function(){var n=a.of(this,arguments),t={x:l,y:f,i:i,j:o},e=this.__chart__||t;this.__chart__=t,Cs?Go.select(this).transition().each("start.brush",function(){i=e.i,o=e.j,l=e.x,f=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=mu(l,t.x),r=mu(f,t.y);return i=o=null,function(u){l=t.x=e(u),f=t.y=r(u),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){i=t.i,o=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,p=js[!c<<1|!s],n):c},n.y=function(t){return arguments.length?(s=t,p=js[!c<<1|!s],n):s},n.clamp=function(t){return arguments.length?(c&&s?(h=!!t[0],g=!!t[1]):c?h=!!t:s&&(g=!!t),n):c&&s?[h,g]:c?h:s?g:null},n.extent=function(t){var e,r,u,a,h;return arguments.length?(c&&(e=t[0],r=t[1],s&&(e=e[0],r=r[0]),i=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(h=e,e=r,r=h),(e!=l[0]||r!=l[1])&&(l=[e,r])),s&&(u=t[0],a=t[1],c&&(u=u[1],a=a[1]),o=[u,a],s.invert&&(u=s(u),a=s(a)),u>a&&(h=u,u=a,a=h),(u!=f[0]||a!=f[1])&&(f=[u,a])),n):(c&&(i?(e=i[0],r=i[1]):(e=l[0],r=l[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(h=e,e=r,r=h))),s&&(o?(u=o[0],a=o[1]):(u=f[0],a=f[1],s.invert&&(u=s.invert(u),a=s.invert(a)),u>a&&(h=u,u=a,a=h))),c&&s?[[e,u],[r,a]]:c?[e,r]:s&&[u,a])},n.clear=function(){return n.empty()||(l=[0,0],f=[0,0],i=o=null),n},n.empty=function(){return!!c&&l[0]==l[1]||!!s&&f[0]==f[1]},Go.rebind(n,a,"on")};var Us={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},js=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Hs=ic.format=fc.timeFormat,Fs=Hs.utc,Os=Fs("%Y-%m-%dT%H:%M:%S.%LZ");Hs.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?$o:Os,$o.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},$o.toString=Os.toString,ic.second=Ht(function(n){return new oc(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ic.seconds=ic.second.range,ic.seconds.utc=ic.second.utc.range,ic.minute=Ht(function(n){return new oc(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ic.minutes=ic.minute.range,ic.minutes.utc=ic.minute.utc.range,ic.hour=Ht(function(n){var t=n.getTimezoneOffset()/60;return new oc(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ic.hours=ic.hour.range,ic.hours.utc=ic.hour.utc.range,ic.month=Ht(function(n){return n=ic.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ic.months=ic.month.range,ic.months.utc=ic.month.utc.range;var Ys=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Is=[[ic.second,1],[ic.second,5],[ic.second,15],[ic.second,30],[ic.minute,1],[ic.minute,5],[ic.minute,15],[ic.minute,30],[ic.hour,1],[ic.hour,3],[ic.hour,6],[ic.hour,12],[ic.day,1],[ic.day,2],[ic.week,1],[ic.month,1],[ic.month,3],[ic.year,1]],Zs=Hs.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",Ne]]),Vs={range:function(n,t,e){return Go.range(Math.ceil(n/e)*e,+t,e).map(Bo)},floor:Nt,ceil:Nt};Is.year=ic.year,ic.scale=function(){return Xo(Go.scale.linear(),Is,Zs)};var $s=Is.map(function(n){return[n[0].utc,n[1]]}),Xs=Fs.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",Ne]]);$s.year=ic.year.utc,ic.scale.utc=function(){return Xo(Go.scale.linear(),$s,Xs)},Go.text=At(function(n){return n.responseText}),Go.json=function(n,t){return Ct(n,"application/json",Jo,t)},Go.html=function(n,t){return Ct(n,"text/html",Wo,t)},Go.xml=At(function(n){return n.responseXML}),"function"==typeof define&&define.amd?define(Go):"object"==typeof module&&module.exports?module.exports=Go:this.d3=Go}(); \ No newline at end of file
+!function(){function n(n){return n&&(n.ownerDocument||n.document||n).documentElement}function t(n){return n&&(n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView)}function e(n,t){return t>n?-1:n>t?1:n>=t?0:NaN}function r(n){return null===n?NaN:+n}function i(n){return!isNaN(n)}function u(n){return{left:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)<0?r=u+1:i=u}return r},right:function(t,e,r,i){for(arguments.length<3&&(r=0),arguments.length<4&&(i=t.length);i>r;){var u=r+i>>>1;n(t[u],e)>0?i=u:r=u+1}return r}}}function o(n){return n.length}function a(n){for(var t=1;n*t%1;)t*=10;return t}function l(n,t){for(var e in t)Object.defineProperty(n.prototype,e,{value:t[e],enumerable:!1})}function c(){this._=Object.create(null)}function f(n){return(n+="")===bo||n[0]===_o?_o+n:n}function s(n){return(n+="")[0]===_o?n.slice(1):n}function h(n){return f(n)in this._}function p(n){return(n=f(n))in this._&&delete this._[n]}function g(){var n=[];for(var t in this._)n.push(s(t));return n}function v(){var n=0;for(var t in this._)++n;return n}function d(){for(var n in this._)return!1;return!0}function y(){this._=Object.create(null)}function m(n){return n}function M(n,t,e){return function(){var r=e.apply(t,arguments);return r===t?n:r}}function x(n,t){if(t in n)return t;t=t.charAt(0).toUpperCase()+t.slice(1);for(var e=0,r=wo.length;r>e;++e){var i=wo[e]+t;if(i in n)return i}}function b(){}function _(){}function w(n){function t(){for(var t,r=e,i=-1,u=r.length;++i<u;)(t=r[i].on)&&t.apply(this,arguments);return n}var e=[],r=new c;return t.on=function(t,i){var u,o=r.get(t);return arguments.length<2?o&&o.on:(o&&(o.on=null,e=e.slice(0,u=e.indexOf(o)).concat(e.slice(u+1)),r.remove(t)),i&&e.push(r.set(t,{on:i})),n)},t}function S(){ao.event.preventDefault()}function k(){for(var n,t=ao.event;n=t.sourceEvent;)t=n;return t}function N(n){for(var t=new _,e=0,r=arguments.length;++e<r;)t[arguments[e]]=w(t);return t.of=function(e,r){return function(i){try{var u=i.sourceEvent=ao.event;i.target=n,ao.event=i,t[i.type].apply(e,r)}finally{ao.event=u}}},t}function E(n){return ko(n,Co),n}function A(n){return"function"==typeof n?n:function(){return No(n,this)}}function C(n){return"function"==typeof n?n:function(){return Eo(n,this)}}function z(n,t){function e(){this.removeAttribute(n)}function r(){this.removeAttributeNS(n.space,n.local)}function i(){this.setAttribute(n,t)}function u(){this.setAttributeNS(n.space,n.local,t)}function o(){var e=t.apply(this,arguments);null==e?this.removeAttribute(n):this.setAttribute(n,e)}function a(){var e=t.apply(this,arguments);null==e?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}return n=ao.ns.qualify(n),null==t?n.local?r:e:"function"==typeof t?n.local?a:o:n.local?u:i}function L(n){return n.trim().replace(/\s+/g," ")}function q(n){return new RegExp("(?:^|\\s+)"+ao.requote(n)+"(?:\\s+|$)","g")}function T(n){return(n+"").trim().split(/^|\s+/)}function R(n,t){function e(){for(var e=-1;++e<i;)n[e](this,t)}function r(){for(var e=-1,r=t.apply(this,arguments);++e<i;)n[e](this,r)}n=T(n).map(D);var i=n.length;return"function"==typeof t?r:e}function D(n){var t=q(n);return function(e,r){if(i=e.classList)return r?i.add(n):i.remove(n);var i=e.getAttribute("class")||"";r?(t.lastIndex=0,t.test(i)||e.setAttribute("class",L(i+" "+n))):e.setAttribute("class",L(i.replace(t," ")))}}function P(n,t,e){function r(){this.style.removeProperty(n)}function i(){this.style.setProperty(n,t,e)}function u(){var r=t.apply(this,arguments);null==r?this.style.removeProperty(n):this.style.setProperty(n,r,e)}return null==t?r:"function"==typeof t?u:i}function U(n,t){function e(){delete this[n]}function r(){this[n]=t}function i(){var e=t.apply(this,arguments);null==e?delete this[n]:this[n]=e}return null==t?e:"function"==typeof t?i:r}function j(n){function t(){var t=this.ownerDocument,e=this.namespaceURI;return e===zo&&t.documentElement.namespaceURI===zo?t.createElement(n):t.createElementNS(e,n)}function e(){return this.ownerDocument.createElementNS(n.space,n.local)}return"function"==typeof n?n:(n=ao.ns.qualify(n)).local?e:t}function F(){var n=this.parentNode;n&&n.removeChild(this)}function H(n){return{__data__:n}}function O(n){return function(){return Ao(this,n)}}function I(n){return arguments.length||(n=e),function(t,e){return t&&e?n(t.__data__,e.__data__):!t-!e}}function Y(n,t){for(var e=0,r=n.length;r>e;e++)for(var i,u=n[e],o=0,a=u.length;a>o;o++)(i=u[o])&&t(i,o,e);return n}function Z(n){return ko(n,qo),n}function V(n){var t,e;return function(r,i,u){var o,a=n[u].update,l=a.length;for(u!=e&&(e=u,t=0),i>=t&&(t=i+1);!(o=a[t])&&++t<l;);return o}}function X(n,t,e){function r(){var t=this[o];t&&(this.removeEventListener(n,t,t.$),delete this[o])}function i(){var i=l(t,co(arguments));r.call(this),this.addEventListener(n,this[o]=i,i.$=e),i._=t}function u(){var t,e=new RegExp("^__on([^.]+)"+ao.requote(n)+"$");for(var r in this)if(t=r.match(e)){var i=this[r];this.removeEventListener(t[1],i,i.$),delete this[r]}}var o="__on"+n,a=n.indexOf("."),l=$;a>0&&(n=n.slice(0,a));var c=To.get(n);return c&&(n=c,l=B),a?t?i:r:t?b:u}function $(n,t){return function(e){var r=ao.event;ao.event=e,t[0]=this.__data__;try{n.apply(this,t)}finally{ao.event=r}}}function B(n,t){var e=$(n,t);return function(n){var t=this,r=n.relatedTarget;r&&(r===t||8&r.compareDocumentPosition(t))||e.call(t,n)}}function W(e){var r=".dragsuppress-"+ ++Do,i="click"+r,u=ao.select(t(e)).on("touchmove"+r,S).on("dragstart"+r,S).on("selectstart"+r,S);if(null==Ro&&(Ro="onselectstart"in e?!1:x(e.style,"userSelect")),Ro){var o=n(e).style,a=o[Ro];o[Ro]="none"}return function(n){if(u.on(r,null),Ro&&(o[Ro]=a),n){var t=function(){u.on(i,null)};u.on(i,function(){S(),t()},!0),setTimeout(t,0)}}}function J(n,e){e.changedTouches&&(e=e.changedTouches[0]);var r=n.ownerSVGElement||n;if(r.createSVGPoint){var i=r.createSVGPoint();if(0>Po){var u=t(n);if(u.scrollX||u.scrollY){r=ao.select("body").append("svg").style({position:"absolute",top:0,left:0,margin:0,padding:0,border:"none"},"important");var o=r[0][0].getScreenCTM();Po=!(o.f||o.e),r.remove()}}return Po?(i.x=e.pageX,i.y=e.pageY):(i.x=e.clientX,i.y=e.clientY),i=i.matrixTransform(n.getScreenCTM().inverse()),[i.x,i.y]}var a=n.getBoundingClientRect();return[e.clientX-a.left-n.clientLeft,e.clientY-a.top-n.clientTop]}function G(){return ao.event.changedTouches[0].identifier}function K(n){return n>0?1:0>n?-1:0}function Q(n,t,e){return(t[0]-n[0])*(e[1]-n[1])-(t[1]-n[1])*(e[0]-n[0])}function nn(n){return n>1?0:-1>n?Fo:Math.acos(n)}function tn(n){return n>1?Io:-1>n?-Io:Math.asin(n)}function en(n){return((n=Math.exp(n))-1/n)/2}function rn(n){return((n=Math.exp(n))+1/n)/2}function un(n){return((n=Math.exp(2*n))-1)/(n+1)}function on(n){return(n=Math.sin(n/2))*n}function an(){}function ln(n,t,e){return this instanceof ln?(this.h=+n,this.s=+t,void(this.l=+e)):arguments.length<2?n instanceof ln?new ln(n.h,n.s,n.l):_n(""+n,wn,ln):new ln(n,t,e)}function cn(n,t,e){function r(n){return n>360?n-=360:0>n&&(n+=360),60>n?u+(o-u)*n/60:180>n?o:240>n?u+(o-u)*(240-n)/60:u}function i(n){return Math.round(255*r(n))}var u,o;return n=isNaN(n)?0:(n%=360)<0?n+360:n,t=isNaN(t)?0:0>t?0:t>1?1:t,e=0>e?0:e>1?1:e,o=.5>=e?e*(1+t):e+t-e*t,u=2*e-o,new mn(i(n+120),i(n),i(n-120))}function fn(n,t,e){return this instanceof fn?(this.h=+n,this.c=+t,void(this.l=+e)):arguments.length<2?n instanceof fn?new fn(n.h,n.c,n.l):n instanceof hn?gn(n.l,n.a,n.b):gn((n=Sn((n=ao.rgb(n)).r,n.g,n.b)).l,n.a,n.b):new fn(n,t,e)}function sn(n,t,e){return isNaN(n)&&(n=0),isNaN(t)&&(t=0),new hn(e,Math.cos(n*=Yo)*t,Math.sin(n)*t)}function hn(n,t,e){return this instanceof hn?(this.l=+n,this.a=+t,void(this.b=+e)):arguments.length<2?n instanceof hn?new hn(n.l,n.a,n.b):n instanceof fn?sn(n.h,n.c,n.l):Sn((n=mn(n)).r,n.g,n.b):new hn(n,t,e)}function pn(n,t,e){var r=(n+16)/116,i=r+t/500,u=r-e/200;return i=vn(i)*na,r=vn(r)*ta,u=vn(u)*ea,new mn(yn(3.2404542*i-1.5371385*r-.4985314*u),yn(-.969266*i+1.8760108*r+.041556*u),yn(.0556434*i-.2040259*r+1.0572252*u))}function gn(n,t,e){return n>0?new fn(Math.atan2(e,t)*Zo,Math.sqrt(t*t+e*e),n):new fn(NaN,NaN,n)}function vn(n){return n>.206893034?n*n*n:(n-4/29)/7.787037}function dn(n){return n>.008856?Math.pow(n,1/3):7.787037*n+4/29}function yn(n){return Math.round(255*(.00304>=n?12.92*n:1.055*Math.pow(n,1/2.4)-.055))}function mn(n,t,e){return this instanceof mn?(this.r=~~n,this.g=~~t,void(this.b=~~e)):arguments.length<2?n instanceof mn?new mn(n.r,n.g,n.b):_n(""+n,mn,cn):new mn(n,t,e)}function Mn(n){return new mn(n>>16,n>>8&255,255&n)}function xn(n){return Mn(n)+""}function bn(n){return 16>n?"0"+Math.max(0,n).toString(16):Math.min(255,n).toString(16)}function _n(n,t,e){var r,i,u,o=0,a=0,l=0;if(r=/([a-z]+)\((.*)\)/.exec(n=n.toLowerCase()))switch(i=r[2].split(","),r[1]){case"hsl":return e(parseFloat(i[0]),parseFloat(i[1])/100,parseFloat(i[2])/100);case"rgb":return t(Nn(i[0]),Nn(i[1]),Nn(i[2]))}return(u=ua.get(n))?t(u.r,u.g,u.b):(null==n||"#"!==n.charAt(0)||isNaN(u=parseInt(n.slice(1),16))||(4===n.length?(o=(3840&u)>>4,o=o>>4|o,a=240&u,a=a>>4|a,l=15&u,l=l<<4|l):7===n.length&&(o=(16711680&u)>>16,a=(65280&u)>>8,l=255&u)),t(o,a,l))}function wn(n,t,e){var r,i,u=Math.min(n/=255,t/=255,e/=255),o=Math.max(n,t,e),a=o-u,l=(o+u)/2;return a?(i=.5>l?a/(o+u):a/(2-o-u),r=n==o?(t-e)/a+(e>t?6:0):t==o?(e-n)/a+2:(n-t)/a+4,r*=60):(r=NaN,i=l>0&&1>l?0:r),new ln(r,i,l)}function Sn(n,t,e){n=kn(n),t=kn(t),e=kn(e);var r=dn((.4124564*n+.3575761*t+.1804375*e)/na),i=dn((.2126729*n+.7151522*t+.072175*e)/ta),u=dn((.0193339*n+.119192*t+.9503041*e)/ea);return hn(116*i-16,500*(r-i),200*(i-u))}function kn(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function Nn(n){var t=parseFloat(n);return"%"===n.charAt(n.length-1)?Math.round(2.55*t):t}function En(n){return"function"==typeof n?n:function(){return n}}function An(n){return function(t,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=null),Cn(t,e,n,r)}}function Cn(n,t,e,r){function i(){var n,t=l.status;if(!t&&Ln(l)||t>=200&&300>t||304===t){try{n=e.call(u,l)}catch(r){return void o.error.call(u,r)}o.load.call(u,n)}else o.error.call(u,l)}var u={},o=ao.dispatch("beforesend","progress","load","error"),a={},l=new XMLHttpRequest,c=null;return!this.XDomainRequest||"withCredentials"in l||!/^(http(s)?:)?\/\//.test(n)||(l=new XDomainRequest),"onload"in l?l.onload=l.onerror=i:l.onreadystatechange=function(){l.readyState>3&&i()},l.onprogress=function(n){var t=ao.event;ao.event=n;try{o.progress.call(u,l)}finally{ao.event=t}},u.header=function(n,t){return n=(n+"").toLowerCase(),arguments.length<2?a[n]:(null==t?delete a[n]:a[n]=t+"",u)},u.mimeType=function(n){return arguments.length?(t=null==n?null:n+"",u):t},u.responseType=function(n){return arguments.length?(c=n,u):c},u.response=function(n){return e=n,u},["get","post"].forEach(function(n){u[n]=function(){return u.send.apply(u,[n].concat(co(arguments)))}}),u.send=function(e,r,i){if(2===arguments.length&&"function"==typeof r&&(i=r,r=null),l.open(e,n,!0),null==t||"accept"in a||(a.accept=t+",*/*"),l.setRequestHeader)for(var f in a)l.setRequestHeader(f,a[f]);return null!=t&&l.overrideMimeType&&l.overrideMimeType(t),null!=c&&(l.responseType=c),null!=i&&u.on("error",i).on("load",function(n){i(null,n)}),o.beforesend.call(u,l),l.send(null==r?null:r),u},u.abort=function(){return l.abort(),u},ao.rebind(u,o,"on"),null==r?u:u.get(zn(r))}function zn(n){return 1===n.length?function(t,e){n(null==t?e:null)}:n}function Ln(n){var t=n.responseType;return t&&"text"!==t?n.response:n.responseText}function qn(n,t,e){var r=arguments.length;2>r&&(t=0),3>r&&(e=Date.now());var i=e+t,u={c:n,t:i,n:null};return aa?aa.n=u:oa=u,aa=u,la||(ca=clearTimeout(ca),la=1,fa(Tn)),u}function Tn(){var n=Rn(),t=Dn()-n;t>24?(isFinite(t)&&(clearTimeout(ca),ca=setTimeout(Tn,t)),la=0):(la=1,fa(Tn))}function Rn(){for(var n=Date.now(),t=oa;t;)n>=t.t&&t.c(n-t.t)&&(t.c=null),t=t.n;return n}function Dn(){for(var n,t=oa,e=1/0;t;)t.c?(t.t<e&&(e=t.t),t=(n=t).n):t=n?n.n=t.n:oa=t.n;return aa=n,e}function Pn(n,t){return t-(n?Math.ceil(Math.log(n)/Math.LN10):1)}function Un(n,t){var e=Math.pow(10,3*xo(8-t));return{scale:t>8?function(n){return n/e}:function(n){return n*e},symbol:n}}function jn(n){var t=n.decimal,e=n.thousands,r=n.grouping,i=n.currency,u=r&&e?function(n,t){for(var i=n.length,u=[],o=0,a=r[0],l=0;i>0&&a>0&&(l+a+1>t&&(a=Math.max(1,t-l)),u.push(n.substring(i-=a,i+a)),!((l+=a+1)>t));)a=r[o=(o+1)%r.length];return u.reverse().join(e)}:m;return function(n){var e=ha.exec(n),r=e[1]||" ",o=e[2]||">",a=e[3]||"-",l=e[4]||"",c=e[5],f=+e[6],s=e[7],h=e[8],p=e[9],g=1,v="",d="",y=!1,m=!0;switch(h&&(h=+h.substring(1)),(c||"0"===r&&"="===o)&&(c=r="0",o="="),p){case"n":s=!0,p="g";break;case"%":g=100,d="%",p="f";break;case"p":g=100,d="%",p="r";break;case"b":case"o":case"x":case"X":"#"===l&&(v="0"+p.toLowerCase());case"c":m=!1;case"d":y=!0,h=0;break;case"s":g=-1,p="r"}"$"===l&&(v=i[0],d=i[1]),"r"!=p||h||(p="g"),null!=h&&("g"==p?h=Math.max(1,Math.min(21,h)):"e"!=p&&"f"!=p||(h=Math.max(0,Math.min(20,h)))),p=pa.get(p)||Fn;var M=c&&s;return function(n){var e=d;if(y&&n%1)return"";var i=0>n||0===n&&0>1/n?(n=-n,"-"):"-"===a?"":a;if(0>g){var l=ao.formatPrefix(n,h);n=l.scale(n),e=l.symbol+d}else n*=g;n=p(n,h);var x,b,_=n.lastIndexOf(".");if(0>_){var w=m?n.lastIndexOf("e"):-1;0>w?(x=n,b=""):(x=n.substring(0,w),b=n.substring(w))}else x=n.substring(0,_),b=t+n.substring(_+1);!c&&s&&(x=u(x,1/0));var S=v.length+x.length+b.length+(M?0:i.length),k=f>S?new Array(S=f-S+1).join(r):"";return M&&(x=u(k+x,k.length?f-b.length:1/0)),i+=v,n=x+b,("<"===o?i+n+k:">"===o?k+i+n:"^"===o?k.substring(0,S>>=1)+i+n+k.substring(S):i+(M?n:k+n))+e}}}function Fn(n){return n+""}function Hn(){this._=new Date(arguments.length>1?Date.UTC.apply(this,arguments):arguments[0])}function On(n,t,e){function r(t){var e=n(t),r=u(e,1);return r-t>t-e?e:r}function i(e){return t(e=n(new va(e-1)),1),e}function u(n,e){return t(n=new va(+n),e),n}function o(n,r,u){var o=i(n),a=[];if(u>1)for(;r>o;)e(o)%u||a.push(new Date(+o)),t(o,1);else for(;r>o;)a.push(new Date(+o)),t(o,1);return a}function a(n,t,e){try{va=Hn;var r=new Hn;return r._=n,o(r,t,e)}finally{va=Date}}n.floor=n,n.round=r,n.ceil=i,n.offset=u,n.range=o;var l=n.utc=In(n);return l.floor=l,l.round=In(r),l.ceil=In(i),l.offset=In(u),l.range=a,n}function In(n){return function(t,e){try{va=Hn;var r=new Hn;return r._=t,n(r,e)._}finally{va=Date}}}function Yn(n){function t(n){function t(t){for(var e,i,u,o=[],a=-1,l=0;++a<r;)37===n.charCodeAt(a)&&(o.push(n.slice(l,a)),null!=(i=ya[e=n.charAt(++a)])&&(e=n.charAt(++a)),(u=A[e])&&(e=u(t,null==i?"e"===e?" ":"0":i)),o.push(e),l=a+1);return o.push(n.slice(l,a)),o.join("")}var r=n.length;return t.parse=function(t){var r={y:1900,m:0,d:1,H:0,M:0,S:0,L:0,Z:null},i=e(r,n,t,0);if(i!=t.length)return null;"p"in r&&(r.H=r.H%12+12*r.p);var u=null!=r.Z&&va!==Hn,o=new(u?Hn:va);return"j"in r?o.setFullYear(r.y,0,r.j):"W"in r||"U"in r?("w"in r||(r.w="W"in r?1:0),o.setFullYear(r.y,0,1),o.setFullYear(r.y,0,"W"in r?(r.w+6)%7+7*r.W-(o.getDay()+5)%7:r.w+7*r.U-(o.getDay()+6)%7)):o.setFullYear(r.y,r.m,r.d),o.setHours(r.H+(r.Z/100|0),r.M+r.Z%100,r.S,r.L),u?o._:o},t.toString=function(){return n},t}function e(n,t,e,r){for(var i,u,o,a=0,l=t.length,c=e.length;l>a;){if(r>=c)return-1;if(i=t.charCodeAt(a++),37===i){if(o=t.charAt(a++),u=C[o in ya?t.charAt(a++):o],!u||(r=u(n,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}function r(n,t,e){_.lastIndex=0;var r=_.exec(t.slice(e));return r?(n.w=w.get(r[0].toLowerCase()),e+r[0].length):-1}function i(n,t,e){x.lastIndex=0;var r=x.exec(t.slice(e));return r?(n.w=b.get(r[0].toLowerCase()),e+r[0].length):-1}function u(n,t,e){N.lastIndex=0;var r=N.exec(t.slice(e));return r?(n.m=E.get(r[0].toLowerCase()),e+r[0].length):-1}function o(n,t,e){S.lastIndex=0;var r=S.exec(t.slice(e));return r?(n.m=k.get(r[0].toLowerCase()),e+r[0].length):-1}function a(n,t,r){return e(n,A.c.toString(),t,r)}function l(n,t,r){return e(n,A.x.toString(),t,r)}function c(n,t,r){return e(n,A.X.toString(),t,r)}function f(n,t,e){var r=M.get(t.slice(e,e+=2).toLowerCase());return null==r?-1:(n.p=r,e)}var s=n.dateTime,h=n.date,p=n.time,g=n.periods,v=n.days,d=n.shortDays,y=n.months,m=n.shortMonths;t.utc=function(n){function e(n){try{va=Hn;var t=new va;return t._=n,r(t)}finally{va=Date}}var r=t(n);return e.parse=function(n){try{va=Hn;var t=r.parse(n);return t&&t._}finally{va=Date}},e.toString=r.toString,e},t.multi=t.utc.multi=ct;var M=ao.map(),x=Vn(v),b=Xn(v),_=Vn(d),w=Xn(d),S=Vn(y),k=Xn(y),N=Vn(m),E=Xn(m);g.forEach(function(n,t){M.set(n.toLowerCase(),t)});var A={a:function(n){return d[n.getDay()]},A:function(n){return v[n.getDay()]},b:function(n){return m[n.getMonth()]},B:function(n){return y[n.getMonth()]},c:t(s),d:function(n,t){return Zn(n.getDate(),t,2)},e:function(n,t){return Zn(n.getDate(),t,2)},H:function(n,t){return Zn(n.getHours(),t,2)},I:function(n,t){return Zn(n.getHours()%12||12,t,2)},j:function(n,t){return Zn(1+ga.dayOfYear(n),t,3)},L:function(n,t){return Zn(n.getMilliseconds(),t,3)},m:function(n,t){return Zn(n.getMonth()+1,t,2)},M:function(n,t){return Zn(n.getMinutes(),t,2)},p:function(n){return g[+(n.getHours()>=12)]},S:function(n,t){return Zn(n.getSeconds(),t,2)},U:function(n,t){return Zn(ga.sundayOfYear(n),t,2)},w:function(n){return n.getDay()},W:function(n,t){return Zn(ga.mondayOfYear(n),t,2)},x:t(h),X:t(p),y:function(n,t){return Zn(n.getFullYear()%100,t,2)},Y:function(n,t){return Zn(n.getFullYear()%1e4,t,4)},Z:at,"%":function(){return"%"}},C={a:r,A:i,b:u,B:o,c:a,d:tt,e:tt,H:rt,I:rt,j:et,L:ot,m:nt,M:it,p:f,S:ut,U:Bn,w:$n,W:Wn,x:l,X:c,y:Gn,Y:Jn,Z:Kn,"%":lt};return t}function Zn(n,t,e){var r=0>n?"-":"",i=(r?-n:n)+"",u=i.length;return r+(e>u?new Array(e-u+1).join(t)+i:i)}function Vn(n){return new RegExp("^(?:"+n.map(ao.requote).join("|")+")","i")}function Xn(n){for(var t=new c,e=-1,r=n.length;++e<r;)t.set(n[e].toLowerCase(),e);return t}function $n(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function Bn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.U=+r[0],e+r[0].length):-1}function Wn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e));return r?(n.W=+r[0],e+r[0].length):-1}function Jn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Gn(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.y=Qn(+r[0]),e+r[0].length):-1}function Kn(n,t,e){return/^[+-]\d{4}$/.test(t=t.slice(e,e+5))?(n.Z=-t,e+5):-1}function Qn(n){return n+(n>68?1900:2e3)}function nt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function tt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function et(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.j=+r[0],e+r[0].length):-1}function rt(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function it(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function ut(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function ot(n,t,e){ma.lastIndex=0;var r=ma.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function at(n){var t=n.getTimezoneOffset(),e=t>0?"-":"+",r=xo(t)/60|0,i=xo(t)%60;return e+Zn(r,"0",2)+Zn(i,"0",2)}function lt(n,t,e){Ma.lastIndex=0;var r=Ma.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function ct(n){for(var t=n.length,e=-1;++e<t;)n[e][0]=this(n[e][0]);return function(t){for(var e=0,r=n[e];!r[1](t);)r=n[++e];return r[0](t)}}function ft(){}function st(n,t,e){var r=e.s=n+t,i=r-n,u=r-i;e.t=n-u+(t-i)}function ht(n,t){n&&wa.hasOwnProperty(n.type)&&wa[n.type](n,t)}function pt(n,t,e){var r,i=-1,u=n.length-e;for(t.lineStart();++i<u;)r=n[i],t.point(r[0],r[1],r[2]);t.lineEnd()}function gt(n,t){var e=-1,r=n.length;for(t.polygonStart();++e<r;)pt(n[e],t,1);t.polygonEnd()}function vt(){function n(n,t){n*=Yo,t=t*Yo/2+Fo/4;var e=n-r,o=e>=0?1:-1,a=o*e,l=Math.cos(t),c=Math.sin(t),f=u*c,s=i*l+f*Math.cos(a),h=f*o*Math.sin(a);ka.add(Math.atan2(h,s)),r=n,i=l,u=c}var t,e,r,i,u;Na.point=function(o,a){Na.point=n,r=(t=o)*Yo,i=Math.cos(a=(e=a)*Yo/2+Fo/4),u=Math.sin(a)},Na.lineEnd=function(){n(t,e)}}function dt(n){var t=n[0],e=n[1],r=Math.cos(e);return[r*Math.cos(t),r*Math.sin(t),Math.sin(e)]}function yt(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function mt(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function Mt(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function xt(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function bt(n){var t=Math.sqrt(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function _t(n){return[Math.atan2(n[1],n[0]),tn(n[2])]}function wt(n,t){return xo(n[0]-t[0])<Uo&&xo(n[1]-t[1])<Uo}function St(n,t){n*=Yo;var e=Math.cos(t*=Yo);kt(e*Math.cos(n),e*Math.sin(n),Math.sin(t))}function kt(n,t,e){++Ea,Ca+=(n-Ca)/Ea,za+=(t-za)/Ea,La+=(e-La)/Ea}function Nt(){function n(n,i){n*=Yo;var u=Math.cos(i*=Yo),o=u*Math.cos(n),a=u*Math.sin(n),l=Math.sin(i),c=Math.atan2(Math.sqrt((c=e*l-r*a)*c+(c=r*o-t*l)*c+(c=t*a-e*o)*c),t*o+e*a+r*l);Aa+=c,qa+=c*(t+(t=o)),Ta+=c*(e+(e=a)),Ra+=c*(r+(r=l)),kt(t,e,r)}var t,e,r;ja.point=function(i,u){i*=Yo;var o=Math.cos(u*=Yo);t=o*Math.cos(i),e=o*Math.sin(i),r=Math.sin(u),ja.point=n,kt(t,e,r)}}function Et(){ja.point=St}function At(){function n(n,t){n*=Yo;var e=Math.cos(t*=Yo),o=e*Math.cos(n),a=e*Math.sin(n),l=Math.sin(t),c=i*l-u*a,f=u*o-r*l,s=r*a-i*o,h=Math.sqrt(c*c+f*f+s*s),p=r*o+i*a+u*l,g=h&&-nn(p)/h,v=Math.atan2(h,p);Da+=g*c,Pa+=g*f,Ua+=g*s,Aa+=v,qa+=v*(r+(r=o)),Ta+=v*(i+(i=a)),Ra+=v*(u+(u=l)),kt(r,i,u)}var t,e,r,i,u;ja.point=function(o,a){t=o,e=a,ja.point=n,o*=Yo;var l=Math.cos(a*=Yo);r=l*Math.cos(o),i=l*Math.sin(o),u=Math.sin(a),kt(r,i,u)},ja.lineEnd=function(){n(t,e),ja.lineEnd=Et,ja.point=St}}function Ct(n,t){function e(e,r){return e=n(e,r),t(e[0],e[1])}return n.invert&&t.invert&&(e.invert=function(e,r){return e=t.invert(e,r),e&&n.invert(e[0],e[1])}),e}function zt(){return!0}function Lt(n,t,e,r,i){var u=[],o=[];if(n.forEach(function(n){if(!((t=n.length-1)<=0)){var t,e=n[0],r=n[t];if(wt(e,r)){i.lineStart();for(var a=0;t>a;++a)i.point((e=n[a])[0],e[1]);return void i.lineEnd()}var l=new Tt(e,n,null,!0),c=new Tt(e,null,l,!1);l.o=c,u.push(l),o.push(c),l=new Tt(r,n,null,!1),c=new Tt(r,null,l,!0),l.o=c,u.push(l),o.push(c)}}),o.sort(t),qt(u),qt(o),u.length){for(var a=0,l=e,c=o.length;c>a;++a)o[a].e=l=!l;for(var f,s,h=u[0];;){for(var p=h,g=!0;p.v;)if((p=p.n)===h)return;f=p.z,i.lineStart();do{if(p.v=p.o.v=!0,p.e){if(g)for(var a=0,c=f.length;c>a;++a)i.point((s=f[a])[0],s[1]);else r(p.x,p.n.x,1,i);p=p.n}else{if(g){f=p.p.z;for(var a=f.length-1;a>=0;--a)i.point((s=f[a])[0],s[1])}else r(p.x,p.p.x,-1,i);p=p.p}p=p.o,f=p.z,g=!g}while(!p.v);i.lineEnd()}}}function qt(n){if(t=n.length){for(var t,e,r=0,i=n[0];++r<t;)i.n=e=n[r],e.p=i,i=e;i.n=e=n[0],e.p=i}}function Tt(n,t,e,r){this.x=n,this.z=t,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function Rt(n,t,e,r){return function(i,u){function o(t,e){var r=i(t,e);n(t=r[0],e=r[1])&&u.point(t,e)}function a(n,t){var e=i(n,t);d.point(e[0],e[1])}function l(){m.point=a,d.lineStart()}function c(){m.point=o,d.lineEnd()}function f(n,t){v.push([n,t]);var e=i(n,t);x.point(e[0],e[1])}function s(){x.lineStart(),v=[]}function h(){f(v[0][0],v[0][1]),x.lineEnd();var n,t=x.clean(),e=M.buffer(),r=e.length;if(v.pop(),g.push(v),v=null,r)if(1&t){n=e[0];var i,r=n.length-1,o=-1;if(r>0){for(b||(u.polygonStart(),b=!0),u.lineStart();++o<r;)u.point((i=n[o])[0],i[1]);u.lineEnd()}}else r>1&&2&t&&e.push(e.pop().concat(e.shift())),p.push(e.filter(Dt))}var p,g,v,d=t(u),y=i.invert(r[0],r[1]),m={point:o,lineStart:l,lineEnd:c,polygonStart:function(){m.point=f,m.lineStart=s,m.lineEnd=h,p=[],g=[]},polygonEnd:function(){m.point=o,m.lineStart=l,m.lineEnd=c,p=ao.merge(p);var n=Ot(y,g);p.length?(b||(u.polygonStart(),b=!0),Lt(p,Ut,n,e,u)):n&&(b||(u.polygonStart(),b=!0),u.lineStart(),e(null,null,1,u),u.lineEnd()),b&&(u.polygonEnd(),b=!1),p=g=null},sphere:function(){u.polygonStart(),u.lineStart(),e(null,null,1,u),u.lineEnd(),u.polygonEnd()}},M=Pt(),x=t(M),b=!1;return m}}function Dt(n){return n.length>1}function Pt(){var n,t=[];return{lineStart:function(){t.push(n=[])},point:function(t,e){n.push([t,e])},lineEnd:b,buffer:function(){var e=t;return t=[],n=null,e},rejoin:function(){t.length>1&&t.push(t.pop().concat(t.shift()))}}}function Ut(n,t){return((n=n.x)[0]<0?n[1]-Io-Uo:Io-n[1])-((t=t.x)[0]<0?t[1]-Io-Uo:Io-t[1])}function jt(n){var t,e=NaN,r=NaN,i=NaN;return{lineStart:function(){n.lineStart(),t=1},point:function(u,o){var a=u>0?Fo:-Fo,l=xo(u-e);xo(l-Fo)<Uo?(n.point(e,r=(r+o)/2>0?Io:-Io),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),n.point(u,r),t=0):i!==a&&l>=Fo&&(xo(e-i)<Uo&&(e-=i*Uo),xo(u-a)<Uo&&(u-=a*Uo),r=Ft(e,r,u,o),n.point(i,r),n.lineEnd(),n.lineStart(),n.point(a,r),t=0),n.point(e=u,r=o),i=a},lineEnd:function(){n.lineEnd(),e=r=NaN},clean:function(){return 2-t}}}function Ft(n,t,e,r){var i,u,o=Math.sin(n-e);return xo(o)>Uo?Math.atan((Math.sin(t)*(u=Math.cos(r))*Math.sin(e)-Math.sin(r)*(i=Math.cos(t))*Math.sin(n))/(i*u*o)):(t+r)/2}function Ht(n,t,e,r){var i;if(null==n)i=e*Io,r.point(-Fo,i),r.point(0,i),r.point(Fo,i),r.point(Fo,0),r.point(Fo,-i),r.point(0,-i),r.point(-Fo,-i),r.point(-Fo,0),r.point(-Fo,i);else if(xo(n[0]-t[0])>Uo){var u=n[0]<t[0]?Fo:-Fo;i=e*u/2,r.point(-u,i),r.point(0,i),r.point(u,i)}else r.point(t[0],t[1])}function Ot(n,t){var e=n[0],r=n[1],i=[Math.sin(e),-Math.cos(e),0],u=0,o=0;ka.reset();for(var a=0,l=t.length;l>a;++a){var c=t[a],f=c.length;if(f)for(var s=c[0],h=s[0],p=s[1]/2+Fo/4,g=Math.sin(p),v=Math.cos(p),d=1;;){d===f&&(d=0),n=c[d];var y=n[0],m=n[1]/2+Fo/4,M=Math.sin(m),x=Math.cos(m),b=y-h,_=b>=0?1:-1,w=_*b,S=w>Fo,k=g*M;if(ka.add(Math.atan2(k*_*Math.sin(w),v*x+k*Math.cos(w))),u+=S?b+_*Ho:b,S^h>=e^y>=e){var N=mt(dt(s),dt(n));bt(N);var E=mt(i,N);bt(E);var A=(S^b>=0?-1:1)*tn(E[2]);(r>A||r===A&&(N[0]||N[1]))&&(o+=S^b>=0?1:-1)}if(!d++)break;h=y,g=M,v=x,s=n}}return(-Uo>u||Uo>u&&-Uo>ka)^1&o}function It(n){function t(n,t){return Math.cos(n)*Math.cos(t)>u}function e(n){var e,u,l,c,f;return{lineStart:function(){c=l=!1,f=1},point:function(s,h){var p,g=[s,h],v=t(s,h),d=o?v?0:i(s,h):v?i(s+(0>s?Fo:-Fo),h):0;if(!e&&(c=l=v)&&n.lineStart(),v!==l&&(p=r(e,g),(wt(e,p)||wt(g,p))&&(g[0]+=Uo,g[1]+=Uo,v=t(g[0],g[1]))),v!==l)f=0,v?(n.lineStart(),p=r(g,e),n.point(p[0],p[1])):(p=r(e,g),n.point(p[0],p[1]),n.lineEnd()),e=p;else if(a&&e&&o^v){var y;d&u||!(y=r(g,e,!0))||(f=0,o?(n.lineStart(),n.point(y[0][0],y[0][1]),n.point(y[1][0],y[1][1]),n.lineEnd()):(n.point(y[1][0],y[1][1]),n.lineEnd(),n.lineStart(),n.point(y[0][0],y[0][1])))}!v||e&&wt(e,g)||n.point(g[0],g[1]),e=g,l=v,u=d},lineEnd:function(){l&&n.lineEnd(),e=null},clean:function(){return f|(c&&l)<<1}}}function r(n,t,e){var r=dt(n),i=dt(t),o=[1,0,0],a=mt(r,i),l=yt(a,a),c=a[0],f=l-c*c;if(!f)return!e&&n;var s=u*l/f,h=-u*c/f,p=mt(o,a),g=xt(o,s),v=xt(a,h);Mt(g,v);var d=p,y=yt(g,d),m=yt(d,d),M=y*y-m*(yt(g,g)-1);if(!(0>M)){var x=Math.sqrt(M),b=xt(d,(-y-x)/m);if(Mt(b,g),b=_t(b),!e)return b;var _,w=n[0],S=t[0],k=n[1],N=t[1];w>S&&(_=w,w=S,S=_);var E=S-w,A=xo(E-Fo)<Uo,C=A||Uo>E;if(!A&&k>N&&(_=k,k=N,N=_),C?A?k+N>0^b[1]<(xo(b[0]-w)<Uo?k:N):k<=b[1]&&b[1]<=N:E>Fo^(w<=b[0]&&b[0]<=S)){var z=xt(d,(-y+x)/m);return Mt(z,g),[b,_t(z)]}}}function i(t,e){var r=o?n:Fo-n,i=0;return-r>t?i|=1:t>r&&(i|=2),-r>e?i|=4:e>r&&(i|=8),i}var u=Math.cos(n),o=u>0,a=xo(u)>Uo,l=ve(n,6*Yo);return Rt(t,e,l,o?[0,-n]:[-Fo,n-Fo])}function Yt(n,t,e,r){return function(i){var u,o=i.a,a=i.b,l=o.x,c=o.y,f=a.x,s=a.y,h=0,p=1,g=f-l,v=s-c;if(u=n-l,g||!(u>0)){if(u/=g,0>g){if(h>u)return;p>u&&(p=u)}else if(g>0){if(u>p)return;u>h&&(h=u)}if(u=e-l,g||!(0>u)){if(u/=g,0>g){if(u>p)return;u>h&&(h=u)}else if(g>0){if(h>u)return;p>u&&(p=u)}if(u=t-c,v||!(u>0)){if(u/=v,0>v){if(h>u)return;p>u&&(p=u)}else if(v>0){if(u>p)return;u>h&&(h=u)}if(u=r-c,v||!(0>u)){if(u/=v,0>v){if(u>p)return;u>h&&(h=u)}else if(v>0){if(h>u)return;p>u&&(p=u)}return h>0&&(i.a={x:l+h*g,y:c+h*v}),1>p&&(i.b={x:l+p*g,y:c+p*v}),i}}}}}}function Zt(n,t,e,r){function i(r,i){return xo(r[0]-n)<Uo?i>0?0:3:xo(r[0]-e)<Uo?i>0?2:1:xo(r[1]-t)<Uo?i>0?1:0:i>0?3:2}function u(n,t){return o(n.x,t.x)}function o(n,t){var e=i(n,1),r=i(t,1);return e!==r?e-r:0===e?t[1]-n[1]:1===e?n[0]-t[0]:2===e?n[1]-t[1]:t[0]-n[0]}return function(a){function l(n){for(var t=0,e=d.length,r=n[1],i=0;e>i;++i)for(var u,o=1,a=d[i],l=a.length,c=a[0];l>o;++o)u=a[o],c[1]<=r?u[1]>r&&Q(c,u,n)>0&&++t:u[1]<=r&&Q(c,u,n)<0&&--t,c=u;return 0!==t}function c(u,a,l,c){var f=0,s=0;if(null==u||(f=i(u,l))!==(s=i(a,l))||o(u,a)<0^l>0){do c.point(0===f||3===f?n:e,f>1?r:t);while((f=(f+l+4)%4)!==s)}else c.point(a[0],a[1])}function f(i,u){return i>=n&&e>=i&&u>=t&&r>=u}function s(n,t){f(n,t)&&a.point(n,t)}function h(){C.point=g,d&&d.push(y=[]),S=!0,w=!1,b=_=NaN}function p(){v&&(g(m,M),x&&w&&E.rejoin(),v.push(E.buffer())),C.point=s,w&&a.lineEnd()}function g(n,t){n=Math.max(-Ha,Math.min(Ha,n)),t=Math.max(-Ha,Math.min(Ha,t));var e=f(n,t);if(d&&y.push([n,t]),S)m=n,M=t,x=e,S=!1,e&&(a.lineStart(),a.point(n,t));else if(e&&w)a.point(n,t);else{var r={a:{x:b,y:_},b:{x:n,y:t}};A(r)?(w||(a.lineStart(),a.point(r.a.x,r.a.y)),a.point(r.b.x,r.b.y),e||a.lineEnd(),k=!1):e&&(a.lineStart(),a.point(n,t),k=!1)}b=n,_=t,w=e}var v,d,y,m,M,x,b,_,w,S,k,N=a,E=Pt(),A=Yt(n,t,e,r),C={point:s,lineStart:h,lineEnd:p,polygonStart:function(){a=E,v=[],d=[],k=!0},polygonEnd:function(){a=N,v=ao.merge(v);var t=l([n,r]),e=k&&t,i=v.length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),c(null,null,1,a),a.lineEnd()),i&&Lt(v,u,t,c,a),a.polygonEnd()),v=d=y=null}};return C}}function Vt(n){var t=0,e=Fo/3,r=ae(n),i=r(t,e);return i.parallels=function(n){return arguments.length?r(t=n[0]*Fo/180,e=n[1]*Fo/180):[t/Fo*180,e/Fo*180]},i}function Xt(n,t){function e(n,t){var e=Math.sqrt(u-2*i*Math.sin(t))/i;return[e*Math.sin(n*=i),o-e*Math.cos(n)]}var r=Math.sin(n),i=(r+Math.sin(t))/2,u=1+r*(2*i-r),o=Math.sqrt(u)/i;return e.invert=function(n,t){var e=o-t;return[Math.atan2(n,e)/i,tn((u-(n*n+e*e)*i*i)/(2*i))]},e}function $t(){function n(n,t){Ia+=i*n-r*t,r=n,i=t}var t,e,r,i;$a.point=function(u,o){$a.point=n,t=r=u,e=i=o},$a.lineEnd=function(){n(t,e)}}function Bt(n,t){Ya>n&&(Ya=n),n>Va&&(Va=n),Za>t&&(Za=t),t>Xa&&(Xa=t)}function Wt(){function n(n,t){o.push("M",n,",",t,u)}function t(n,t){o.push("M",n,",",t),a.point=e}function e(n,t){o.push("L",n,",",t)}function r(){a.point=n}function i(){o.push("Z")}var u=Jt(4.5),o=[],a={point:n,lineStart:function(){a.point=t},lineEnd:r,polygonStart:function(){a.lineEnd=i},polygonEnd:function(){a.lineEnd=r,a.point=n},pointRadius:function(n){return u=Jt(n),a},result:function(){if(o.length){var n=o.join("");return o=[],n}}};return a}function Jt(n){return"m0,"+n+"a"+n+","+n+" 0 1,1 0,"+-2*n+"a"+n+","+n+" 0 1,1 0,"+2*n+"z"}function Gt(n,t){Ca+=n,za+=t,++La}function Kt(){function n(n,r){var i=n-t,u=r-e,o=Math.sqrt(i*i+u*u);qa+=o*(t+n)/2,Ta+=o*(e+r)/2,Ra+=o,Gt(t=n,e=r)}var t,e;Wa.point=function(r,i){Wa.point=n,Gt(t=r,e=i)}}function Qt(){Wa.point=Gt}function ne(){function n(n,t){var e=n-r,u=t-i,o=Math.sqrt(e*e+u*u);qa+=o*(r+n)/2,Ta+=o*(i+t)/2,Ra+=o,o=i*n-r*t,Da+=o*(r+n),Pa+=o*(i+t),Ua+=3*o,Gt(r=n,i=t)}var t,e,r,i;Wa.point=function(u,o){Wa.point=n,Gt(t=r=u,e=i=o)},Wa.lineEnd=function(){n(t,e)}}function te(n){function t(t,e){n.moveTo(t+o,e),n.arc(t,e,o,0,Ho)}function e(t,e){n.moveTo(t,e),a.point=r}function r(t,e){n.lineTo(t,e)}function i(){a.point=t}function u(){n.closePath()}var o=4.5,a={point:t,lineStart:function(){a.point=e},lineEnd:i,polygonStart:function(){a.lineEnd=u},polygonEnd:function(){a.lineEnd=i,a.point=t},pointRadius:function(n){return o=n,a},result:b};return a}function ee(n){function t(n){return(a?r:e)(n)}function e(t){return ue(t,function(e,r){e=n(e,r),t.point(e[0],e[1])})}function r(t){function e(e,r){e=n(e,r),t.point(e[0],e[1])}function r(){M=NaN,S.point=u,t.lineStart()}function u(e,r){var u=dt([e,r]),o=n(e,r);i(M,x,m,b,_,w,M=o[0],x=o[1],m=e,b=u[0],_=u[1],w=u[2],a,t),t.point(M,x)}function o(){S.point=e,t.lineEnd()}function l(){
+r(),S.point=c,S.lineEnd=f}function c(n,t){u(s=n,h=t),p=M,g=x,v=b,d=_,y=w,S.point=u}function f(){i(M,x,m,b,_,w,p,g,s,v,d,y,a,t),S.lineEnd=o,o()}var s,h,p,g,v,d,y,m,M,x,b,_,w,S={point:e,lineStart:r,lineEnd:o,polygonStart:function(){t.polygonStart(),S.lineStart=l},polygonEnd:function(){t.polygonEnd(),S.lineStart=r}};return S}function i(t,e,r,a,l,c,f,s,h,p,g,v,d,y){var m=f-t,M=s-e,x=m*m+M*M;if(x>4*u&&d--){var b=a+p,_=l+g,w=c+v,S=Math.sqrt(b*b+_*_+w*w),k=Math.asin(w/=S),N=xo(xo(w)-1)<Uo||xo(r-h)<Uo?(r+h)/2:Math.atan2(_,b),E=n(N,k),A=E[0],C=E[1],z=A-t,L=C-e,q=M*z-m*L;(q*q/x>u||xo((m*z+M*L)/x-.5)>.3||o>a*p+l*g+c*v)&&(i(t,e,r,a,l,c,A,C,N,b/=S,_/=S,w,d,y),y.point(A,C),i(A,C,N,b,_,w,f,s,h,p,g,v,d,y))}}var u=.5,o=Math.cos(30*Yo),a=16;return t.precision=function(n){return arguments.length?(a=(u=n*n)>0&&16,t):Math.sqrt(u)},t}function re(n){var t=ee(function(t,e){return n([t*Zo,e*Zo])});return function(n){return le(t(n))}}function ie(n){this.stream=n}function ue(n,t){return{point:t,sphere:function(){n.sphere()},lineStart:function(){n.lineStart()},lineEnd:function(){n.lineEnd()},polygonStart:function(){n.polygonStart()},polygonEnd:function(){n.polygonEnd()}}}function oe(n){return ae(function(){return n})()}function ae(n){function t(n){return n=a(n[0]*Yo,n[1]*Yo),[n[0]*h+l,c-n[1]*h]}function e(n){return n=a.invert((n[0]-l)/h,(c-n[1])/h),n&&[n[0]*Zo,n[1]*Zo]}function r(){a=Ct(o=se(y,M,x),u);var n=u(v,d);return l=p-n[0]*h,c=g+n[1]*h,i()}function i(){return f&&(f.valid=!1,f=null),t}var u,o,a,l,c,f,s=ee(function(n,t){return n=u(n,t),[n[0]*h+l,c-n[1]*h]}),h=150,p=480,g=250,v=0,d=0,y=0,M=0,x=0,b=Fa,_=m,w=null,S=null;return t.stream=function(n){return f&&(f.valid=!1),f=le(b(o,s(_(n)))),f.valid=!0,f},t.clipAngle=function(n){return arguments.length?(b=null==n?(w=n,Fa):It((w=+n)*Yo),i()):w},t.clipExtent=function(n){return arguments.length?(S=n,_=n?Zt(n[0][0],n[0][1],n[1][0],n[1][1]):m,i()):S},t.scale=function(n){return arguments.length?(h=+n,r()):h},t.translate=function(n){return arguments.length?(p=+n[0],g=+n[1],r()):[p,g]},t.center=function(n){return arguments.length?(v=n[0]%360*Yo,d=n[1]%360*Yo,r()):[v*Zo,d*Zo]},t.rotate=function(n){return arguments.length?(y=n[0]%360*Yo,M=n[1]%360*Yo,x=n.length>2?n[2]%360*Yo:0,r()):[y*Zo,M*Zo,x*Zo]},ao.rebind(t,s,"precision"),function(){return u=n.apply(this,arguments),t.invert=u.invert&&e,r()}}function le(n){return ue(n,function(t,e){n.point(t*Yo,e*Yo)})}function ce(n,t){return[n,t]}function fe(n,t){return[n>Fo?n-Ho:-Fo>n?n+Ho:n,t]}function se(n,t,e){return n?t||e?Ct(pe(n),ge(t,e)):pe(n):t||e?ge(t,e):fe}function he(n){return function(t,e){return t+=n,[t>Fo?t-Ho:-Fo>t?t+Ho:t,e]}}function pe(n){var t=he(n);return t.invert=he(-n),t}function ge(n,t){function e(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*r+a*i;return[Math.atan2(l*u-f*o,a*r-c*i),tn(f*u+l*o)]}var r=Math.cos(n),i=Math.sin(n),u=Math.cos(t),o=Math.sin(t);return e.invert=function(n,t){var e=Math.cos(t),a=Math.cos(n)*e,l=Math.sin(n)*e,c=Math.sin(t),f=c*u-l*o;return[Math.atan2(l*u+c*o,a*r+f*i),tn(f*r-a*i)]},e}function ve(n,t){var e=Math.cos(n),r=Math.sin(n);return function(i,u,o,a){var l=o*t;null!=i?(i=de(e,i),u=de(e,u),(o>0?u>i:i>u)&&(i+=o*Ho)):(i=n+o*Ho,u=n-.5*l);for(var c,f=i;o>0?f>u:u>f;f-=l)a.point((c=_t([e,-r*Math.cos(f),-r*Math.sin(f)]))[0],c[1])}}function de(n,t){var e=dt(t);e[0]-=n,bt(e);var r=nn(-e[1]);return((-e[2]<0?-r:r)+2*Math.PI-Uo)%(2*Math.PI)}function ye(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[n,t]})}}function me(n,t,e){var r=ao.range(n,t-Uo,e).concat(t);return function(n){return r.map(function(t){return[t,n]})}}function Me(n){return n.source}function xe(n){return n.target}function be(n,t,e,r){var i=Math.cos(t),u=Math.sin(t),o=Math.cos(r),a=Math.sin(r),l=i*Math.cos(n),c=i*Math.sin(n),f=o*Math.cos(e),s=o*Math.sin(e),h=2*Math.asin(Math.sqrt(on(r-t)+i*o*on(e-n))),p=1/Math.sin(h),g=h?function(n){var t=Math.sin(n*=h)*p,e=Math.sin(h-n)*p,r=e*l+t*f,i=e*c+t*s,o=e*u+t*a;return[Math.atan2(i,r)*Zo,Math.atan2(o,Math.sqrt(r*r+i*i))*Zo]}:function(){return[n*Zo,t*Zo]};return g.distance=h,g}function _e(){function n(n,i){var u=Math.sin(i*=Yo),o=Math.cos(i),a=xo((n*=Yo)-t),l=Math.cos(a);Ja+=Math.atan2(Math.sqrt((a=o*Math.sin(a))*a+(a=r*u-e*o*l)*a),e*u+r*o*l),t=n,e=u,r=o}var t,e,r;Ga.point=function(i,u){t=i*Yo,e=Math.sin(u*=Yo),r=Math.cos(u),Ga.point=n},Ga.lineEnd=function(){Ga.point=Ga.lineEnd=b}}function we(n,t){function e(t,e){var r=Math.cos(t),i=Math.cos(e),u=n(r*i);return[u*i*Math.sin(t),u*Math.sin(e)]}return e.invert=function(n,e){var r=Math.sqrt(n*n+e*e),i=t(r),u=Math.sin(i),o=Math.cos(i);return[Math.atan2(n*u,r*o),Math.asin(r&&e*u/r)]},e}function Se(n,t){function e(n,t){o>0?-Io+Uo>t&&(t=-Io+Uo):t>Io-Uo&&(t=Io-Uo);var e=o/Math.pow(i(t),u);return[e*Math.sin(u*n),o-e*Math.cos(u*n)]}var r=Math.cos(n),i=function(n){return Math.tan(Fo/4+n/2)},u=n===t?Math.sin(n):Math.log(r/Math.cos(t))/Math.log(i(t)/i(n)),o=r*Math.pow(i(n),u)/u;return u?(e.invert=function(n,t){var e=o-t,r=K(u)*Math.sqrt(n*n+e*e);return[Math.atan2(n,e)/u,2*Math.atan(Math.pow(o/r,1/u))-Io]},e):Ne}function ke(n,t){function e(n,t){var e=u-t;return[e*Math.sin(i*n),u-e*Math.cos(i*n)]}var r=Math.cos(n),i=n===t?Math.sin(n):(r-Math.cos(t))/(t-n),u=r/i+n;return xo(i)<Uo?ce:(e.invert=function(n,t){var e=u-t;return[Math.atan2(n,e)/i,u-K(i)*Math.sqrt(n*n+e*e)]},e)}function Ne(n,t){return[n,Math.log(Math.tan(Fo/4+t/2))]}function Ee(n){var t,e=oe(n),r=e.scale,i=e.translate,u=e.clipExtent;return e.scale=function(){var n=r.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.translate=function(){var n=i.apply(e,arguments);return n===e?t?e.clipExtent(null):e:n},e.clipExtent=function(n){var o=u.apply(e,arguments);if(o===e){if(t=null==n){var a=Fo*r(),l=i();u([[l[0]-a,l[1]-a],[l[0]+a,l[1]+a]])}}else t&&(o=null);return o},e.clipExtent(null)}function Ae(n,t){return[Math.log(Math.tan(Fo/4+t/2)),-n]}function Ce(n){return n[0]}function ze(n){return n[1]}function Le(n){for(var t=n.length,e=[0,1],r=2,i=2;t>i;i++){for(;r>1&&Q(n[e[r-2]],n[e[r-1]],n[i])<=0;)--r;e[r++]=i}return e.slice(0,r)}function qe(n,t){return n[0]-t[0]||n[1]-t[1]}function Te(n,t,e){return(e[0]-t[0])*(n[1]-t[1])<(e[1]-t[1])*(n[0]-t[0])}function Re(n,t,e,r){var i=n[0],u=e[0],o=t[0]-i,a=r[0]-u,l=n[1],c=e[1],f=t[1]-l,s=r[1]-c,h=(a*(l-c)-s*(i-u))/(s*o-a*f);return[i+h*o,l+h*f]}function De(n){var t=n[0],e=n[n.length-1];return!(t[0]-e[0]||t[1]-e[1])}function Pe(){rr(this),this.edge=this.site=this.circle=null}function Ue(n){var t=cl.pop()||new Pe;return t.site=n,t}function je(n){Be(n),ol.remove(n),cl.push(n),rr(n)}function Fe(n){var t=n.circle,e=t.x,r=t.cy,i={x:e,y:r},u=n.P,o=n.N,a=[n];je(n);for(var l=u;l.circle&&xo(e-l.circle.x)<Uo&&xo(r-l.circle.cy)<Uo;)u=l.P,a.unshift(l),je(l),l=u;a.unshift(l),Be(l);for(var c=o;c.circle&&xo(e-c.circle.x)<Uo&&xo(r-c.circle.cy)<Uo;)o=c.N,a.push(c),je(c),c=o;a.push(c),Be(c);var f,s=a.length;for(f=1;s>f;++f)c=a[f],l=a[f-1],nr(c.edge,l.site,c.site,i);l=a[0],c=a[s-1],c.edge=Ke(l.site,c.site,null,i),$e(l),$e(c)}function He(n){for(var t,e,r,i,u=n.x,o=n.y,a=ol._;a;)if(r=Oe(a,o)-u,r>Uo)a=a.L;else{if(i=u-Ie(a,o),!(i>Uo)){r>-Uo?(t=a.P,e=a):i>-Uo?(t=a,e=a.N):t=e=a;break}if(!a.R){t=a;break}a=a.R}var l=Ue(n);if(ol.insert(t,l),t||e){if(t===e)return Be(t),e=Ue(t.site),ol.insert(l,e),l.edge=e.edge=Ke(t.site,l.site),$e(t),void $e(e);if(!e)return void(l.edge=Ke(t.site,l.site));Be(t),Be(e);var c=t.site,f=c.x,s=c.y,h=n.x-f,p=n.y-s,g=e.site,v=g.x-f,d=g.y-s,y=2*(h*d-p*v),m=h*h+p*p,M=v*v+d*d,x={x:(d*m-p*M)/y+f,y:(h*M-v*m)/y+s};nr(e.edge,c,g,x),l.edge=Ke(c,n,null,x),e.edge=Ke(n,g,null,x),$e(t),$e(e)}}function Oe(n,t){var e=n.site,r=e.x,i=e.y,u=i-t;if(!u)return r;var o=n.P;if(!o)return-(1/0);e=o.site;var a=e.x,l=e.y,c=l-t;if(!c)return a;var f=a-r,s=1/u-1/c,h=f/c;return s?(-h+Math.sqrt(h*h-2*s*(f*f/(-2*c)-l+c/2+i-u/2)))/s+r:(r+a)/2}function Ie(n,t){var e=n.N;if(e)return Oe(e,t);var r=n.site;return r.y===t?r.x:1/0}function Ye(n){this.site=n,this.edges=[]}function Ze(n){for(var t,e,r,i,u,o,a,l,c,f,s=n[0][0],h=n[1][0],p=n[0][1],g=n[1][1],v=ul,d=v.length;d--;)if(u=v[d],u&&u.prepare())for(a=u.edges,l=a.length,o=0;l>o;)f=a[o].end(),r=f.x,i=f.y,c=a[++o%l].start(),t=c.x,e=c.y,(xo(r-t)>Uo||xo(i-e)>Uo)&&(a.splice(o,0,new tr(Qe(u.site,f,xo(r-s)<Uo&&g-i>Uo?{x:s,y:xo(t-s)<Uo?e:g}:xo(i-g)<Uo&&h-r>Uo?{x:xo(e-g)<Uo?t:h,y:g}:xo(r-h)<Uo&&i-p>Uo?{x:h,y:xo(t-h)<Uo?e:p}:xo(i-p)<Uo&&r-s>Uo?{x:xo(e-p)<Uo?t:s,y:p}:null),u.site,null)),++l)}function Ve(n,t){return t.angle-n.angle}function Xe(){rr(this),this.x=this.y=this.arc=this.site=this.cy=null}function $e(n){var t=n.P,e=n.N;if(t&&e){var r=t.site,i=n.site,u=e.site;if(r!==u){var o=i.x,a=i.y,l=r.x-o,c=r.y-a,f=u.x-o,s=u.y-a,h=2*(l*s-c*f);if(!(h>=-jo)){var p=l*l+c*c,g=f*f+s*s,v=(s*p-c*g)/h,d=(l*g-f*p)/h,s=d+a,y=fl.pop()||new Xe;y.arc=n,y.site=i,y.x=v+o,y.y=s+Math.sqrt(v*v+d*d),y.cy=s,n.circle=y;for(var m=null,M=ll._;M;)if(y.y<M.y||y.y===M.y&&y.x<=M.x){if(!M.L){m=M.P;break}M=M.L}else{if(!M.R){m=M;break}M=M.R}ll.insert(m,y),m||(al=y)}}}}function Be(n){var t=n.circle;t&&(t.P||(al=t.N),ll.remove(t),fl.push(t),rr(t),n.circle=null)}function We(n){for(var t,e=il,r=Yt(n[0][0],n[0][1],n[1][0],n[1][1]),i=e.length;i--;)t=e[i],(!Je(t,n)||!r(t)||xo(t.a.x-t.b.x)<Uo&&xo(t.a.y-t.b.y)<Uo)&&(t.a=t.b=null,e.splice(i,1))}function Je(n,t){var e=n.b;if(e)return!0;var r,i,u=n.a,o=t[0][0],a=t[1][0],l=t[0][1],c=t[1][1],f=n.l,s=n.r,h=f.x,p=f.y,g=s.x,v=s.y,d=(h+g)/2,y=(p+v)/2;if(v===p){if(o>d||d>=a)return;if(h>g){if(u){if(u.y>=c)return}else u={x:d,y:l};e={x:d,y:c}}else{if(u){if(u.y<l)return}else u={x:d,y:c};e={x:d,y:l}}}else if(r=(h-g)/(v-p),i=y-r*d,-1>r||r>1)if(h>g){if(u){if(u.y>=c)return}else u={x:(l-i)/r,y:l};e={x:(c-i)/r,y:c}}else{if(u){if(u.y<l)return}else u={x:(c-i)/r,y:c};e={x:(l-i)/r,y:l}}else if(v>p){if(u){if(u.x>=a)return}else u={x:o,y:r*o+i};e={x:a,y:r*a+i}}else{if(u){if(u.x<o)return}else u={x:a,y:r*a+i};e={x:o,y:r*o+i}}return n.a=u,n.b=e,!0}function Ge(n,t){this.l=n,this.r=t,this.a=this.b=null}function Ke(n,t,e,r){var i=new Ge(n,t);return il.push(i),e&&nr(i,n,t,e),r&&nr(i,t,n,r),ul[n.i].edges.push(new tr(i,n,t)),ul[t.i].edges.push(new tr(i,t,n)),i}function Qe(n,t,e){var r=new Ge(n,null);return r.a=t,r.b=e,il.push(r),r}function nr(n,t,e,r){n.a||n.b?n.l===e?n.b=r:n.a=r:(n.a=r,n.l=t,n.r=e)}function tr(n,t,e){var r=n.a,i=n.b;this.edge=n,this.site=t,this.angle=e?Math.atan2(e.y-t.y,e.x-t.x):n.l===t?Math.atan2(i.x-r.x,r.y-i.y):Math.atan2(r.x-i.x,i.y-r.y)}function er(){this._=null}function rr(n){n.U=n.C=n.L=n.R=n.P=n.N=null}function ir(n,t){var e=t,r=t.R,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.R=r.L,e.R&&(e.R.U=e),r.L=e}function ur(n,t){var e=t,r=t.L,i=e.U;i?i.L===e?i.L=r:i.R=r:n._=r,r.U=i,e.U=r,e.L=r.R,e.L&&(e.L.U=e),r.R=e}function or(n){for(;n.L;)n=n.L;return n}function ar(n,t){var e,r,i,u=n.sort(lr).pop();for(il=[],ul=new Array(n.length),ol=new er,ll=new er;;)if(i=al,u&&(!i||u.y<i.y||u.y===i.y&&u.x<i.x))u.x===e&&u.y===r||(ul[u.i]=new Ye(u),He(u),e=u.x,r=u.y),u=n.pop();else{if(!i)break;Fe(i.arc)}t&&(We(t),Ze(t));var o={cells:ul,edges:il};return ol=ll=il=ul=null,o}function lr(n,t){return t.y-n.y||t.x-n.x}function cr(n,t,e){return(n.x-e.x)*(t.y-n.y)-(n.x-t.x)*(e.y-n.y)}function fr(n){return n.x}function sr(n){return n.y}function hr(){return{leaf:!0,nodes:[],point:null,x:null,y:null}}function pr(n,t,e,r,i,u){if(!n(t,e,r,i,u)){var o=.5*(e+i),a=.5*(r+u),l=t.nodes;l[0]&&pr(n,l[0],e,r,o,a),l[1]&&pr(n,l[1],o,r,i,a),l[2]&&pr(n,l[2],e,a,o,u),l[3]&&pr(n,l[3],o,a,i,u)}}function gr(n,t,e,r,i,u,o){var a,l=1/0;return function c(n,f,s,h,p){if(!(f>u||s>o||r>h||i>p)){if(g=n.point){var g,v=t-n.x,d=e-n.y,y=v*v+d*d;if(l>y){var m=Math.sqrt(l=y);r=t-m,i=e-m,u=t+m,o=e+m,a=g}}for(var M=n.nodes,x=.5*(f+h),b=.5*(s+p),_=t>=x,w=e>=b,S=w<<1|_,k=S+4;k>S;++S)if(n=M[3&S])switch(3&S){case 0:c(n,f,s,x,b);break;case 1:c(n,x,s,h,b);break;case 2:c(n,f,b,x,p);break;case 3:c(n,x,b,h,p)}}}(n,r,i,u,o),a}function vr(n,t){n=ao.rgb(n),t=ao.rgb(t);var e=n.r,r=n.g,i=n.b,u=t.r-e,o=t.g-r,a=t.b-i;return function(n){return"#"+bn(Math.round(e+u*n))+bn(Math.round(r+o*n))+bn(Math.round(i+a*n))}}function dr(n,t){var e,r={},i={};for(e in n)e in t?r[e]=Mr(n[e],t[e]):i[e]=n[e];for(e in t)e in n||(i[e]=t[e]);return function(n){for(e in r)i[e]=r[e](n);return i}}function yr(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function mr(n,t){var e,r,i,u=hl.lastIndex=pl.lastIndex=0,o=-1,a=[],l=[];for(n+="",t+="";(e=hl.exec(n))&&(r=pl.exec(t));)(i=r.index)>u&&(i=t.slice(u,i),a[o]?a[o]+=i:a[++o]=i),(e=e[0])===(r=r[0])?a[o]?a[o]+=r:a[++o]=r:(a[++o]=null,l.push({i:o,x:yr(e,r)})),u=pl.lastIndex;return u<t.length&&(i=t.slice(u),a[o]?a[o]+=i:a[++o]=i),a.length<2?l[0]?(t=l[0].x,function(n){return t(n)+""}):function(){return t}:(t=l.length,function(n){for(var e,r=0;t>r;++r)a[(e=l[r]).i]=e.x(n);return a.join("")})}function Mr(n,t){for(var e,r=ao.interpolators.length;--r>=0&&!(e=ao.interpolators[r](n,t)););return e}function xr(n,t){var e,r=[],i=[],u=n.length,o=t.length,a=Math.min(n.length,t.length);for(e=0;a>e;++e)r.push(Mr(n[e],t[e]));for(;u>e;++e)i[e]=n[e];for(;o>e;++e)i[e]=t[e];return function(n){for(e=0;a>e;++e)i[e]=r[e](n);return i}}function br(n){return function(t){return 0>=t?0:t>=1?1:n(t)}}function _r(n){return function(t){return 1-n(1-t)}}function wr(n){return function(t){return.5*(.5>t?n(2*t):2-n(2-2*t))}}function Sr(n){return n*n}function kr(n){return n*n*n}function Nr(n){if(0>=n)return 0;if(n>=1)return 1;var t=n*n,e=t*n;return 4*(.5>n?e:3*(n-t)+e-.75)}function Er(n){return function(t){return Math.pow(t,n)}}function Ar(n){return 1-Math.cos(n*Io)}function Cr(n){return Math.pow(2,10*(n-1))}function zr(n){return 1-Math.sqrt(1-n*n)}function Lr(n,t){var e;return arguments.length<2&&(t=.45),arguments.length?e=t/Ho*Math.asin(1/n):(n=1,e=t/4),function(r){return 1+n*Math.pow(2,-10*r)*Math.sin((r-e)*Ho/t)}}function qr(n){return n||(n=1.70158),function(t){return t*t*((n+1)*t-n)}}function Tr(n){return 1/2.75>n?7.5625*n*n:2/2.75>n?7.5625*(n-=1.5/2.75)*n+.75:2.5/2.75>n?7.5625*(n-=2.25/2.75)*n+.9375:7.5625*(n-=2.625/2.75)*n+.984375}function Rr(n,t){n=ao.hcl(n),t=ao.hcl(t);var e=n.h,r=n.c,i=n.l,u=t.h-e,o=t.c-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.c:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return sn(e+u*n,r+o*n,i+a*n)+""}}function Dr(n,t){n=ao.hsl(n),t=ao.hsl(t);var e=n.h,r=n.s,i=n.l,u=t.h-e,o=t.s-r,a=t.l-i;return isNaN(o)&&(o=0,r=isNaN(r)?t.s:r),isNaN(u)?(u=0,e=isNaN(e)?t.h:e):u>180?u-=360:-180>u&&(u+=360),function(n){return cn(e+u*n,r+o*n,i+a*n)+""}}function Pr(n,t){n=ao.lab(n),t=ao.lab(t);var e=n.l,r=n.a,i=n.b,u=t.l-e,o=t.a-r,a=t.b-i;return function(n){return pn(e+u*n,r+o*n,i+a*n)+""}}function Ur(n,t){return t-=n,function(e){return Math.round(n+t*e)}}function jr(n){var t=[n.a,n.b],e=[n.c,n.d],r=Hr(t),i=Fr(t,e),u=Hr(Or(e,t,-i))||0;t[0]*e[1]<e[0]*t[1]&&(t[0]*=-1,t[1]*=-1,r*=-1,i*=-1),this.rotate=(r?Math.atan2(t[1],t[0]):Math.atan2(-e[0],e[1]))*Zo,this.translate=[n.e,n.f],this.scale=[r,u],this.skew=u?Math.atan2(i,u)*Zo:0}function Fr(n,t){return n[0]*t[0]+n[1]*t[1]}function Hr(n){var t=Math.sqrt(Fr(n,n));return t&&(n[0]/=t,n[1]/=t),t}function Or(n,t,e){return n[0]+=e*t[0],n[1]+=e*t[1],n}function Ir(n){return n.length?n.pop()+",":""}function Yr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push("translate(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else(t[0]||t[1])&&e.push("translate("+t+")")}function Zr(n,t,e,r){n!==t?(n-t>180?t+=360:t-n>180&&(n+=360),r.push({i:e.push(Ir(e)+"rotate(",null,")")-2,x:yr(n,t)})):t&&e.push(Ir(e)+"rotate("+t+")")}function Vr(n,t,e,r){n!==t?r.push({i:e.push(Ir(e)+"skewX(",null,")")-2,x:yr(n,t)}):t&&e.push(Ir(e)+"skewX("+t+")")}function Xr(n,t,e,r){if(n[0]!==t[0]||n[1]!==t[1]){var i=e.push(Ir(e)+"scale(",null,",",null,")");r.push({i:i-4,x:yr(n[0],t[0])},{i:i-2,x:yr(n[1],t[1])})}else 1===t[0]&&1===t[1]||e.push(Ir(e)+"scale("+t+")")}function $r(n,t){var e=[],r=[];return n=ao.transform(n),t=ao.transform(t),Yr(n.translate,t.translate,e,r),Zr(n.rotate,t.rotate,e,r),Vr(n.skew,t.skew,e,r),Xr(n.scale,t.scale,e,r),n=t=null,function(n){for(var t,i=-1,u=r.length;++i<u;)e[(t=r[i]).i]=t.x(n);return e.join("")}}function Br(n,t){return t=(t-=n=+n)||1/t,function(e){return(e-n)/t}}function Wr(n,t){return t=(t-=n=+n)||1/t,function(e){return Math.max(0,Math.min(1,(e-n)/t))}}function Jr(n){for(var t=n.source,e=n.target,r=Kr(t,e),i=[t];t!==r;)t=t.parent,i.push(t);for(var u=i.length;e!==r;)i.splice(u,0,e),e=e.parent;return i}function Gr(n){for(var t=[],e=n.parent;null!=e;)t.push(n),n=e,e=e.parent;return t.push(n),t}function Kr(n,t){if(n===t)return n;for(var e=Gr(n),r=Gr(t),i=e.pop(),u=r.pop(),o=null;i===u;)o=i,i=e.pop(),u=r.pop();return o}function Qr(n){n.fixed|=2}function ni(n){n.fixed&=-7}function ti(n){n.fixed|=4,n.px=n.x,n.py=n.y}function ei(n){n.fixed&=-5}function ri(n,t,e){var r=0,i=0;if(n.charge=0,!n.leaf)for(var u,o=n.nodes,a=o.length,l=-1;++l<a;)u=o[l],null!=u&&(ri(u,t,e),n.charge+=u.charge,r+=u.charge*u.cx,i+=u.charge*u.cy);if(n.point){n.leaf||(n.point.x+=Math.random()-.5,n.point.y+=Math.random()-.5);var c=t*e[n.point.index];n.charge+=n.pointCharge=c,r+=c*n.point.x,i+=c*n.point.y}n.cx=r/n.charge,n.cy=i/n.charge}function ii(n,t){return ao.rebind(n,t,"sort","children","value"),n.nodes=n,n.links=fi,n}function ui(n,t){for(var e=[n];null!=(n=e.pop());)if(t(n),(i=n.children)&&(r=i.length))for(var r,i;--r>=0;)e.push(i[r])}function oi(n,t){for(var e=[n],r=[];null!=(n=e.pop());)if(r.push(n),(u=n.children)&&(i=u.length))for(var i,u,o=-1;++o<i;)e.push(u[o]);for(;null!=(n=r.pop());)t(n)}function ai(n){return n.children}function li(n){return n.value}function ci(n,t){return t.value-n.value}function fi(n){return ao.merge(n.map(function(n){return(n.children||[]).map(function(t){return{source:n,target:t}})}))}function si(n){return n.x}function hi(n){return n.y}function pi(n,t,e){n.y0=t,n.y=e}function gi(n){return ao.range(n.length)}function vi(n){for(var t=-1,e=n[0].length,r=[];++t<e;)r[t]=0;return r}function di(n){for(var t,e=1,r=0,i=n[0][1],u=n.length;u>e;++e)(t=n[e][1])>i&&(r=e,i=t);return r}function yi(n){return n.reduce(mi,0)}function mi(n,t){return n+t[1]}function Mi(n,t){return xi(n,Math.ceil(Math.log(t.length)/Math.LN2+1))}function xi(n,t){for(var e=-1,r=+n[0],i=(n[1]-r)/t,u=[];++e<=t;)u[e]=i*e+r;return u}function bi(n){return[ao.min(n),ao.max(n)]}function _i(n,t){return n.value-t.value}function wi(n,t){var e=n._pack_next;n._pack_next=t,t._pack_prev=n,t._pack_next=e,e._pack_prev=t}function Si(n,t){n._pack_next=t,t._pack_prev=n}function ki(n,t){var e=t.x-n.x,r=t.y-n.y,i=n.r+t.r;return.999*i*i>e*e+r*r}function Ni(n){function t(n){f=Math.min(n.x-n.r,f),s=Math.max(n.x+n.r,s),h=Math.min(n.y-n.r,h),p=Math.max(n.y+n.r,p)}if((e=n.children)&&(c=e.length)){var e,r,i,u,o,a,l,c,f=1/0,s=-(1/0),h=1/0,p=-(1/0);if(e.forEach(Ei),r=e[0],r.x=-r.r,r.y=0,t(r),c>1&&(i=e[1],i.x=i.r,i.y=0,t(i),c>2))for(u=e[2],zi(r,i,u),t(u),wi(r,u),r._pack_prev=u,wi(u,i),i=r._pack_next,o=3;c>o;o++){zi(r,i,u=e[o]);var g=0,v=1,d=1;for(a=i._pack_next;a!==i;a=a._pack_next,v++)if(ki(a,u)){g=1;break}if(1==g)for(l=r._pack_prev;l!==a._pack_prev&&!ki(l,u);l=l._pack_prev,d++);g?(d>v||v==d&&i.r<r.r?Si(r,i=a):Si(r=l,i),o--):(wi(r,u),i=u,t(u))}var y=(f+s)/2,m=(h+p)/2,M=0;for(o=0;c>o;o++)u=e[o],u.x-=y,u.y-=m,M=Math.max(M,u.r+Math.sqrt(u.x*u.x+u.y*u.y));n.r=M,e.forEach(Ai)}}function Ei(n){n._pack_next=n._pack_prev=n}function Ai(n){delete n._pack_next,delete n._pack_prev}function Ci(n,t,e,r){var i=n.children;if(n.x=t+=r*n.x,n.y=e+=r*n.y,n.r*=r,i)for(var u=-1,o=i.length;++u<o;)Ci(i[u],t,e,r)}function zi(n,t,e){var r=n.r+e.r,i=t.x-n.x,u=t.y-n.y;if(r&&(i||u)){var o=t.r+e.r,a=i*i+u*u;o*=o,r*=r;var l=.5+(r-o)/(2*a),c=Math.sqrt(Math.max(0,2*o*(r+a)-(r-=a)*r-o*o))/(2*a);e.x=n.x+l*i+c*u,e.y=n.y+l*u-c*i}else e.x=n.x+r,e.y=n.y}function Li(n,t){return n.parent==t.parent?1:2}function qi(n){var t=n.children;return t.length?t[0]:n.t}function Ti(n){var t,e=n.children;return(t=e.length)?e[t-1]:n.t}function Ri(n,t,e){var r=e/(t.i-n.i);t.c-=r,t.s+=e,n.c+=r,t.z+=e,t.m+=e}function Di(n){for(var t,e=0,r=0,i=n.children,u=i.length;--u>=0;)t=i[u],t.z+=e,t.m+=e,e+=t.s+(r+=t.c)}function Pi(n,t,e){return n.a.parent===t.parent?n.a:e}function Ui(n){return 1+ao.max(n,function(n){return n.y})}function ji(n){return n.reduce(function(n,t){return n+t.x},0)/n.length}function Fi(n){var t=n.children;return t&&t.length?Fi(t[0]):n}function Hi(n){var t,e=n.children;return e&&(t=e.length)?Hi(e[t-1]):n}function Oi(n){return{x:n.x,y:n.y,dx:n.dx,dy:n.dy}}function Ii(n,t){var e=n.x+t[3],r=n.y+t[0],i=n.dx-t[1]-t[3],u=n.dy-t[0]-t[2];return 0>i&&(e+=i/2,i=0),0>u&&(r+=u/2,u=0),{x:e,y:r,dx:i,dy:u}}function Yi(n){var t=n[0],e=n[n.length-1];return e>t?[t,e]:[e,t]}function Zi(n){return n.rangeExtent?n.rangeExtent():Yi(n.range())}function Vi(n,t,e,r){var i=e(n[0],n[1]),u=r(t[0],t[1]);return function(n){return u(i(n))}}function Xi(n,t){var e,r=0,i=n.length-1,u=n[r],o=n[i];return u>o&&(e=r,r=i,i=e,e=u,u=o,o=e),n[r]=t.floor(u),n[i]=t.ceil(o),n}function $i(n){return n?{floor:function(t){return Math.floor(t/n)*n},ceil:function(t){return Math.ceil(t/n)*n}}:Sl}function Bi(n,t,e,r){var i=[],u=[],o=0,a=Math.min(n.length,t.length)-1;for(n[a]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<=a;)i.push(e(n[o-1],n[o])),u.push(r(t[o-1],t[o]));return function(t){var e=ao.bisect(n,t,1,a)-1;return u[e](i[e](t))}}function Wi(n,t,e,r){function i(){var i=Math.min(n.length,t.length)>2?Bi:Vi,l=r?Wr:Br;return o=i(n,t,l,e),a=i(t,n,l,Mr),u}function u(n){return o(n)}var o,a;return u.invert=function(n){return a(n)},u.domain=function(t){return arguments.length?(n=t.map(Number),i()):n},u.range=function(n){return arguments.length?(t=n,i()):t},u.rangeRound=function(n){return u.range(n).interpolate(Ur)},u.clamp=function(n){return arguments.length?(r=n,i()):r},u.interpolate=function(n){return arguments.length?(e=n,i()):e},u.ticks=function(t){return Qi(n,t)},u.tickFormat=function(t,e){return nu(n,t,e)},u.nice=function(t){return Gi(n,t),i()},u.copy=function(){return Wi(n,t,e,r)},i()}function Ji(n,t){return ao.rebind(n,t,"range","rangeRound","interpolate","clamp")}function Gi(n,t){return Xi(n,$i(Ki(n,t)[2])),Xi(n,$i(Ki(n,t)[2])),n}function Ki(n,t){null==t&&(t=10);var e=Yi(n),r=e[1]-e[0],i=Math.pow(10,Math.floor(Math.log(r/t)/Math.LN10)),u=t/r*i;return.15>=u?i*=10:.35>=u?i*=5:.75>=u&&(i*=2),e[0]=Math.ceil(e[0]/i)*i,e[1]=Math.floor(e[1]/i)*i+.5*i,e[2]=i,e}function Qi(n,t){return ao.range.apply(ao,Ki(n,t))}function nu(n,t,e){var r=Ki(n,t);if(e){var i=ha.exec(e);if(i.shift(),"s"===i[8]){var u=ao.formatPrefix(Math.max(xo(r[0]),xo(r[1])));return i[7]||(i[7]="."+tu(u.scale(r[2]))),i[8]="f",e=ao.format(i.join("")),function(n){return e(u.scale(n))+u.symbol}}i[7]||(i[7]="."+eu(i[8],r)),e=i.join("")}else e=",."+tu(r[2])+"f";return ao.format(e)}function tu(n){return-Math.floor(Math.log(n)/Math.LN10+.01)}function eu(n,t){var e=tu(t[2]);return n in kl?Math.abs(e-tu(Math.max(xo(t[0]),xo(t[1]))))+ +("e"!==n):e-2*("%"===n)}function ru(n,t,e,r){function i(n){return(e?Math.log(0>n?0:n):-Math.log(n>0?0:-n))/Math.log(t)}function u(n){return e?Math.pow(t,n):-Math.pow(t,-n)}function o(t){return n(i(t))}return o.invert=function(t){return u(n.invert(t))},o.domain=function(t){return arguments.length?(e=t[0]>=0,n.domain((r=t.map(Number)).map(i)),o):r},o.base=function(e){return arguments.length?(t=+e,n.domain(r.map(i)),o):t},o.nice=function(){var t=Xi(r.map(i),e?Math:El);return n.domain(t),r=t.map(u),o},o.ticks=function(){var n=Yi(r),o=[],a=n[0],l=n[1],c=Math.floor(i(a)),f=Math.ceil(i(l)),s=t%1?2:t;if(isFinite(f-c)){if(e){for(;f>c;c++)for(var h=1;s>h;h++)o.push(u(c)*h);o.push(u(c))}else for(o.push(u(c));c++<f;)for(var h=s-1;h>0;h--)o.push(u(c)*h);for(c=0;o[c]<a;c++);for(f=o.length;o[f-1]>l;f--);o=o.slice(c,f)}return o},o.tickFormat=function(n,e){if(!arguments.length)return Nl;arguments.length<2?e=Nl:"function"!=typeof e&&(e=ao.format(e));var r=Math.max(1,t*n/o.ticks().length);return function(n){var o=n/u(Math.round(i(n)));return t-.5>o*t&&(o*=t),r>=o?e(n):""}},o.copy=function(){return ru(n.copy(),t,e,r)},Ji(o,n)}function iu(n,t,e){function r(t){return n(i(t))}var i=uu(t),u=uu(1/t);return r.invert=function(t){return u(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain((e=t.map(Number)).map(i)),r):e},r.ticks=function(n){return Qi(e,n)},r.tickFormat=function(n,t){return nu(e,n,t)},r.nice=function(n){return r.domain(Gi(e,n))},r.exponent=function(o){return arguments.length?(i=uu(t=o),u=uu(1/t),n.domain(e.map(i)),r):t},r.copy=function(){return iu(n.copy(),t,e)},Ji(r,n)}function uu(n){return function(t){return 0>t?-Math.pow(-t,n):Math.pow(t,n)}}function ou(n,t){function e(e){return u[((i.get(e)||("range"===t.t?i.set(e,n.push(e)):NaN))-1)%u.length]}function r(t,e){return ao.range(n.length).map(function(n){return t+e*n})}var i,u,o;return e.domain=function(r){if(!arguments.length)return n;n=[],i=new c;for(var u,o=-1,a=r.length;++o<a;)i.has(u=r[o])||i.set(u,n.push(u));return e[t.t].apply(e,t.a)},e.range=function(n){return arguments.length?(u=n,o=0,t={t:"range",a:arguments},e):u},e.rangePoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=(l+c)/2,0):(c-l)/(n.length-1+a);return u=r(l+f*a/2,f),o=0,t={t:"rangePoints",a:arguments},e},e.rangeRoundPoints=function(i,a){arguments.length<2&&(a=0);var l=i[0],c=i[1],f=n.length<2?(l=c=Math.round((l+c)/2),0):(c-l)/(n.length-1+a)|0;return u=r(l+Math.round(f*a/2+(c-l-(n.length-1+a)*f)/2),f),o=0,t={t:"rangeRoundPoints",a:arguments},e},e.rangeBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=(s-f)/(n.length-a+2*l);return u=r(f+h*l,h),c&&u.reverse(),o=h*(1-a),t={t:"rangeBands",a:arguments},e},e.rangeRoundBands=function(i,a,l){arguments.length<2&&(a=0),arguments.length<3&&(l=a);var c=i[1]<i[0],f=i[c-0],s=i[1-c],h=Math.floor((s-f)/(n.length-a+2*l));return u=r(f+Math.round((s-f-(n.length-a)*h)/2),h),c&&u.reverse(),o=Math.round(h*(1-a)),t={t:"rangeRoundBands",a:arguments},e},e.rangeBand=function(){return o},e.rangeExtent=function(){return Yi(t.a[0])},e.copy=function(){return ou(n,t)},e.domain(n)}function au(n,t){function u(){var e=0,r=t.length;for(a=[];++e<r;)a[e-1]=ao.quantile(n,e/r);return o}function o(n){return isNaN(n=+n)?void 0:t[ao.bisect(a,n)]}var a;return o.domain=function(t){return arguments.length?(n=t.map(r).filter(i).sort(e),u()):n},o.range=function(n){return arguments.length?(t=n,u()):t},o.quantiles=function(){return a},o.invertExtent=function(e){return e=t.indexOf(e),0>e?[NaN,NaN]:[e>0?a[e-1]:n[0],e<a.length?a[e]:n[n.length-1]]},o.copy=function(){return au(n,t)},u()}function lu(n,t,e){function r(t){return e[Math.max(0,Math.min(o,Math.floor(u*(t-n))))]}function i(){return u=e.length/(t-n),o=e.length-1,r}var u,o;return r.domain=function(e){return arguments.length?(n=+e[0],t=+e[e.length-1],i()):[n,t]},r.range=function(n){return arguments.length?(e=n,i()):e},r.invertExtent=function(t){return t=e.indexOf(t),t=0>t?NaN:t/u+n,[t,t+1/u]},r.copy=function(){return lu(n,t,e)},i()}function cu(n,t){function e(e){return e>=e?t[ao.bisect(n,e)]:void 0}return e.domain=function(t){return arguments.length?(n=t,e):n},e.range=function(n){return arguments.length?(t=n,e):t},e.invertExtent=function(e){return e=t.indexOf(e),[n[e-1],n[e]]},e.copy=function(){return cu(n,t)},e}function fu(n){function t(n){return+n}return t.invert=t,t.domain=t.range=function(e){return arguments.length?(n=e.map(t),t):n},t.ticks=function(t){return Qi(n,t)},t.tickFormat=function(t,e){return nu(n,t,e)},t.copy=function(){return fu(n)},t}function su(){return 0}function hu(n){return n.innerRadius}function pu(n){return n.outerRadius}function gu(n){return n.startAngle}function vu(n){return n.endAngle}function du(n){return n&&n.padAngle}function yu(n,t,e,r){return(n-e)*t-(t-r)*n>0?0:1}function mu(n,t,e,r,i){var u=n[0]-t[0],o=n[1]-t[1],a=(i?r:-r)/Math.sqrt(u*u+o*o),l=a*o,c=-a*u,f=n[0]+l,s=n[1]+c,h=t[0]+l,p=t[1]+c,g=(f+h)/2,v=(s+p)/2,d=h-f,y=p-s,m=d*d+y*y,M=e-r,x=f*p-h*s,b=(0>y?-1:1)*Math.sqrt(Math.max(0,M*M*m-x*x)),_=(x*y-d*b)/m,w=(-x*d-y*b)/m,S=(x*y+d*b)/m,k=(-x*d+y*b)/m,N=_-g,E=w-v,A=S-g,C=k-v;return N*N+E*E>A*A+C*C&&(_=S,w=k),[[_-l,w-c],[_*e/M,w*e/M]]}function Mu(n){function t(t){function o(){c.push("M",u(n(f),a))}for(var l,c=[],f=[],s=-1,h=t.length,p=En(e),g=En(r);++s<h;)i.call(this,l=t[s],s)?f.push([+p.call(this,l,s),+g.call(this,l,s)]):f.length&&(o(),f=[]);return f.length&&o(),c.length?c.join(""):null}var e=Ce,r=ze,i=zt,u=xu,o=u.key,a=.7;return t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t.defined=function(n){return arguments.length?(i=n,t):i},t.interpolate=function(n){return arguments.length?(o="function"==typeof n?u=n:(u=Tl.get(n)||xu).key,t):o},t.tension=function(n){return arguments.length?(a=n,t):a},t}function xu(n){return n.length>1?n.join("L"):n+"Z"}function bu(n){return n.join("L")+"Z"}function _u(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r[0]+(r=n[t])[0])/2,"V",r[1]);return e>1&&i.push("H",r[0]),i.join("")}function wu(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("V",(r=n[t])[1],"H",r[0]);return i.join("")}function Su(n){for(var t=0,e=n.length,r=n[0],i=[r[0],",",r[1]];++t<e;)i.push("H",(r=n[t])[0],"V",r[1]);return i.join("")}function ku(n,t){return n.length<4?xu(n):n[1]+Au(n.slice(1,-1),Cu(n,t))}function Nu(n,t){return n.length<3?bu(n):n[0]+Au((n.push(n[0]),n),Cu([n[n.length-2]].concat(n,[n[1]]),t))}function Eu(n,t){return n.length<3?xu(n):n[0]+Au(n,Cu(n,t))}function Au(n,t){if(t.length<1||n.length!=t.length&&n.length!=t.length+2)return xu(n);var e=n.length!=t.length,r="",i=n[0],u=n[1],o=t[0],a=o,l=1;if(e&&(r+="Q"+(u[0]-2*o[0]/3)+","+(u[1]-2*o[1]/3)+","+u[0]+","+u[1],i=n[1],l=2),t.length>1){a=t[1],u=n[l],l++,r+="C"+(i[0]+o[0])+","+(i[1]+o[1])+","+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1];for(var c=2;c<t.length;c++,l++)u=n[l],a=t[c],r+="S"+(u[0]-a[0])+","+(u[1]-a[1])+","+u[0]+","+u[1]}if(e){var f=n[l];r+="Q"+(u[0]+2*a[0]/3)+","+(u[1]+2*a[1]/3)+","+f[0]+","+f[1]}return r}function Cu(n,t){for(var e,r=[],i=(1-t)/2,u=n[0],o=n[1],a=1,l=n.length;++a<l;)e=u,u=o,o=n[a],r.push([i*(o[0]-e[0]),i*(o[1]-e[1])]);return r}function zu(n){if(n.length<3)return xu(n);var t=1,e=n.length,r=n[0],i=r[0],u=r[1],o=[i,i,i,(r=n[1])[0]],a=[u,u,u,r[1]],l=[i,",",u,"L",Ru(Pl,o),",",Ru(Pl,a)];for(n.push(n[e-1]);++t<=e;)r=n[t],o.shift(),o.push(r[0]),a.shift(),a.push(r[1]),Du(l,o,a);return n.pop(),l.push("L",r),l.join("")}function Lu(n){if(n.length<4)return xu(n);for(var t,e=[],r=-1,i=n.length,u=[0],o=[0];++r<3;)t=n[r],u.push(t[0]),o.push(t[1]);for(e.push(Ru(Pl,u)+","+Ru(Pl,o)),--r;++r<i;)t=n[r],u.shift(),u.push(t[0]),o.shift(),o.push(t[1]),Du(e,u,o);return e.join("")}function qu(n){for(var t,e,r=-1,i=n.length,u=i+4,o=[],a=[];++r<4;)e=n[r%i],o.push(e[0]),a.push(e[1]);for(t=[Ru(Pl,o),",",Ru(Pl,a)],--r;++r<u;)e=n[r%i],o.shift(),o.push(e[0]),a.shift(),a.push(e[1]),Du(t,o,a);return t.join("")}function Tu(n,t){var e=n.length-1;if(e)for(var r,i,u=n[0][0],o=n[0][1],a=n[e][0]-u,l=n[e][1]-o,c=-1;++c<=e;)r=n[c],i=c/e,r[0]=t*r[0]+(1-t)*(u+i*a),r[1]=t*r[1]+(1-t)*(o+i*l);return zu(n)}function Ru(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]+n[3]*t[3]}function Du(n,t,e){n.push("C",Ru(Rl,t),",",Ru(Rl,e),",",Ru(Dl,t),",",Ru(Dl,e),",",Ru(Pl,t),",",Ru(Pl,e))}function Pu(n,t){return(t[1]-n[1])/(t[0]-n[0])}function Uu(n){for(var t=0,e=n.length-1,r=[],i=n[0],u=n[1],o=r[0]=Pu(i,u);++t<e;)r[t]=(o+(o=Pu(i=u,u=n[t+1])))/2;return r[t]=o,r}function ju(n){for(var t,e,r,i,u=[],o=Uu(n),a=-1,l=n.length-1;++a<l;)t=Pu(n[a],n[a+1]),xo(t)<Uo?o[a]=o[a+1]=0:(e=o[a]/t,r=o[a+1]/t,i=e*e+r*r,i>9&&(i=3*t/Math.sqrt(i),o[a]=i*e,o[a+1]=i*r));for(a=-1;++a<=l;)i=(n[Math.min(l,a+1)][0]-n[Math.max(0,a-1)][0])/(6*(1+o[a]*o[a])),u.push([i||0,o[a]*i||0]);return u}function Fu(n){return n.length<3?xu(n):n[0]+Au(n,ju(n))}function Hu(n){for(var t,e,r,i=-1,u=n.length;++i<u;)t=n[i],e=t[0],r=t[1]-Io,t[0]=e*Math.cos(r),t[1]=e*Math.sin(r);return n}function Ou(n){function t(t){function l(){v.push("M",a(n(y),s),f,c(n(d.reverse()),s),"Z")}for(var h,p,g,v=[],d=[],y=[],m=-1,M=t.length,x=En(e),b=En(i),_=e===r?function(){
+return p}:En(r),w=i===u?function(){return g}:En(u);++m<M;)o.call(this,h=t[m],m)?(d.push([p=+x.call(this,h,m),g=+b.call(this,h,m)]),y.push([+_.call(this,h,m),+w.call(this,h,m)])):d.length&&(l(),d=[],y=[]);return d.length&&l(),v.length?v.join(""):null}var e=Ce,r=Ce,i=0,u=ze,o=zt,a=xu,l=a.key,c=a,f="L",s=.7;return t.x=function(n){return arguments.length?(e=r=n,t):r},t.x0=function(n){return arguments.length?(e=n,t):e},t.x1=function(n){return arguments.length?(r=n,t):r},t.y=function(n){return arguments.length?(i=u=n,t):u},t.y0=function(n){return arguments.length?(i=n,t):i},t.y1=function(n){return arguments.length?(u=n,t):u},t.defined=function(n){return arguments.length?(o=n,t):o},t.interpolate=function(n){return arguments.length?(l="function"==typeof n?a=n:(a=Tl.get(n)||xu).key,c=a.reverse||a,f=a.closed?"M":"L",t):l},t.tension=function(n){return arguments.length?(s=n,t):s},t}function Iu(n){return n.radius}function Yu(n){return[n.x,n.y]}function Zu(n){return function(){var t=n.apply(this,arguments),e=t[0],r=t[1]-Io;return[e*Math.cos(r),e*Math.sin(r)]}}function Vu(){return 64}function Xu(){return"circle"}function $u(n){var t=Math.sqrt(n/Fo);return"M0,"+t+"A"+t+","+t+" 0 1,1 0,"+-t+"A"+t+","+t+" 0 1,1 0,"+t+"Z"}function Bu(n){return function(){var t,e,r;(t=this[n])&&(r=t[e=t.active])&&(r.timer.c=null,r.timer.t=NaN,--t.count?delete t[e]:delete this[n],t.active+=.5,r.event&&r.event.interrupt.call(this,this.__data__,r.index))}}function Wu(n,t,e){return ko(n,Yl),n.namespace=t,n.id=e,n}function Ju(n,t,e,r){var i=n.id,u=n.namespace;return Y(n,"function"==typeof e?function(n,o,a){n[u][i].tween.set(t,r(e.call(n,n.__data__,o,a)))}:(e=r(e),function(n){n[u][i].tween.set(t,e)}))}function Gu(n){return null==n&&(n=""),function(){this.textContent=n}}function Ku(n){return null==n?"__transition__":"__transition_"+n+"__"}function Qu(n,t,e,r,i){function u(n){var t=v.delay;return f.t=t+l,n>=t?o(n-t):void(f.c=o)}function o(e){var i=g.active,u=g[i];u&&(u.timer.c=null,u.timer.t=NaN,--g.count,delete g[i],u.event&&u.event.interrupt.call(n,n.__data__,u.index));for(var o in g)if(r>+o){var c=g[o];c.timer.c=null,c.timer.t=NaN,--g.count,delete g[o]}f.c=a,qn(function(){return f.c&&a(e||1)&&(f.c=null,f.t=NaN),1},0,l),g.active=r,v.event&&v.event.start.call(n,n.__data__,t),p=[],v.tween.forEach(function(e,r){(r=r.call(n,n.__data__,t))&&p.push(r)}),h=v.ease,s=v.duration}function a(i){for(var u=i/s,o=h(u),a=p.length;a>0;)p[--a].call(n,o);return u>=1?(v.event&&v.event.end.call(n,n.__data__,t),--g.count?delete g[r]:delete n[e],1):void 0}var l,f,s,h,p,g=n[e]||(n[e]={active:0,count:0}),v=g[r];v||(l=i.time,f=qn(u,0,l),v=g[r]={tween:new c,time:l,timer:f,delay:i.delay,duration:i.duration,ease:i.ease,index:t},i=null,++g.count)}function no(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate("+(isFinite(r)?r:e(n))+",0)"})}function to(n,t,e){n.attr("transform",function(n){var r=t(n);return"translate(0,"+(isFinite(r)?r:e(n))+")"})}function eo(n){return n.toISOString()}function ro(n,t,e){function r(t){return n(t)}function i(n,e){var r=n[1]-n[0],i=r/e,u=ao.bisect(Kl,i);return u==Kl.length?[t.year,Ki(n.map(function(n){return n/31536e6}),e)[2]]:u?t[i/Kl[u-1]<Kl[u]/i?u-1:u]:[tc,Ki(n,e)[2]]}return r.invert=function(t){return io(n.invert(t))},r.domain=function(t){return arguments.length?(n.domain(t),r):n.domain().map(io)},r.nice=function(n,t){function e(e){return!isNaN(e)&&!n.range(e,io(+e+1),t).length}var u=r.domain(),o=Yi(u),a=null==n?i(o,10):"number"==typeof n&&i(o,n);return a&&(n=a[0],t=a[1]),r.domain(Xi(u,t>1?{floor:function(t){for(;e(t=n.floor(t));)t=io(t-1);return t},ceil:function(t){for(;e(t=n.ceil(t));)t=io(+t+1);return t}}:n))},r.ticks=function(n,t){var e=Yi(r.domain()),u=null==n?i(e,10):"number"==typeof n?i(e,n):!n.range&&[{range:n},t];return u&&(n=u[0],t=u[1]),n.range(e[0],io(+e[1]+1),1>t?1:t)},r.tickFormat=function(){return e},r.copy=function(){return ro(n.copy(),t,e)},Ji(r,n)}function io(n){return new Date(n)}function uo(n){return JSON.parse(n.responseText)}function oo(n){var t=fo.createRange();return t.selectNode(fo.body),t.createContextualFragment(n.responseText)}var ao={version:"3.5.17"},lo=[].slice,co=function(n){return lo.call(n)},fo=this.document;if(fo)try{co(fo.documentElement.childNodes)[0].nodeType}catch(so){co=function(n){for(var t=n.length,e=new Array(t);t--;)e[t]=n[t];return e}}if(Date.now||(Date.now=function(){return+new Date}),fo)try{fo.createElement("DIV").style.setProperty("opacity",0,"")}catch(ho){var po=this.Element.prototype,go=po.setAttribute,vo=po.setAttributeNS,yo=this.CSSStyleDeclaration.prototype,mo=yo.setProperty;po.setAttribute=function(n,t){go.call(this,n,t+"")},po.setAttributeNS=function(n,t,e){vo.call(this,n,t,e+"")},yo.setProperty=function(n,t,e){mo.call(this,n,t+"",e)}}ao.ascending=e,ao.descending=function(n,t){return n>t?-1:t>n?1:t>=n?0:NaN},ao.min=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&e>r&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&e>r&&(e=r)}return e},ao.max=function(n,t){var e,r,i=-1,u=n.length;if(1===arguments.length){for(;++i<u;)if(null!=(r=n[i])&&r>=r){e=r;break}for(;++i<u;)null!=(r=n[i])&&r>e&&(e=r)}else{for(;++i<u;)if(null!=(r=t.call(n,n[i],i))&&r>=r){e=r;break}for(;++i<u;)null!=(r=t.call(n,n[i],i))&&r>e&&(e=r)}return e},ao.extent=function(n,t){var e,r,i,u=-1,o=n.length;if(1===arguments.length){for(;++u<o;)if(null!=(r=n[u])&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=n[u])&&(e>r&&(e=r),r>i&&(i=r))}else{for(;++u<o;)if(null!=(r=t.call(n,n[u],u))&&r>=r){e=i=r;break}for(;++u<o;)null!=(r=t.call(n,n[u],u))&&(e>r&&(e=r),r>i&&(i=r))}return[e,i]},ao.sum=function(n,t){var e,r=0,u=n.length,o=-1;if(1===arguments.length)for(;++o<u;)i(e=+n[o])&&(r+=e);else for(;++o<u;)i(e=+t.call(n,n[o],o))&&(r+=e);return r},ao.mean=function(n,t){var e,u=0,o=n.length,a=-1,l=o;if(1===arguments.length)for(;++a<o;)i(e=r(n[a]))?u+=e:--l;else for(;++a<o;)i(e=r(t.call(n,n[a],a)))?u+=e:--l;return l?u/l:void 0},ao.quantile=function(n,t){var e=(n.length-1)*t+1,r=Math.floor(e),i=+n[r-1],u=e-r;return u?i+u*(n[r]-i):i},ao.median=function(n,t){var u,o=[],a=n.length,l=-1;if(1===arguments.length)for(;++l<a;)i(u=r(n[l]))&&o.push(u);else for(;++l<a;)i(u=r(t.call(n,n[l],l)))&&o.push(u);return o.length?ao.quantile(o.sort(e),.5):void 0},ao.variance=function(n,t){var e,u,o=n.length,a=0,l=0,c=-1,f=0;if(1===arguments.length)for(;++c<o;)i(e=r(n[c]))&&(u=e-a,a+=u/++f,l+=u*(e-a));else for(;++c<o;)i(e=r(t.call(n,n[c],c)))&&(u=e-a,a+=u/++f,l+=u*(e-a));return f>1?l/(f-1):void 0},ao.deviation=function(){var n=ao.variance.apply(this,arguments);return n?Math.sqrt(n):n};var Mo=u(e);ao.bisectLeft=Mo.left,ao.bisect=ao.bisectRight=Mo.right,ao.bisector=function(n){return u(1===n.length?function(t,r){return e(n(t),r)}:n)},ao.shuffle=function(n,t,e){(u=arguments.length)<3&&(e=n.length,2>u&&(t=0));for(var r,i,u=e-t;u;)i=Math.random()*u--|0,r=n[u+t],n[u+t]=n[i+t],n[i+t]=r;return n},ao.permute=function(n,t){for(var e=t.length,r=new Array(e);e--;)r[e]=n[t[e]];return r},ao.pairs=function(n){for(var t,e=0,r=n.length-1,i=n[0],u=new Array(0>r?0:r);r>e;)u[e]=[t=i,i=n[++e]];return u},ao.transpose=function(n){if(!(i=n.length))return[];for(var t=-1,e=ao.min(n,o),r=new Array(e);++t<e;)for(var i,u=-1,a=r[t]=new Array(i);++u<i;)a[u]=n[u][t];return r},ao.zip=function(){return ao.transpose(arguments)},ao.keys=function(n){var t=[];for(var e in n)t.push(e);return t},ao.values=function(n){var t=[];for(var e in n)t.push(n[e]);return t},ao.entries=function(n){var t=[];for(var e in n)t.push({key:e,value:n[e]});return t},ao.merge=function(n){for(var t,e,r,i=n.length,u=-1,o=0;++u<i;)o+=n[u].length;for(e=new Array(o);--i>=0;)for(r=n[i],t=r.length;--t>=0;)e[--o]=r[t];return e};var xo=Math.abs;ao.range=function(n,t,e){if(arguments.length<3&&(e=1,arguments.length<2&&(t=n,n=0)),(t-n)/e===1/0)throw new Error("infinite range");var r,i=[],u=a(xo(e)),o=-1;if(n*=u,t*=u,e*=u,0>e)for(;(r=n+e*++o)>t;)i.push(r/u);else for(;(r=n+e*++o)<t;)i.push(r/u);return i},ao.map=function(n,t){var e=new c;if(n instanceof c)n.forEach(function(n,t){e.set(n,t)});else if(Array.isArray(n)){var r,i=-1,u=n.length;if(1===arguments.length)for(;++i<u;)e.set(i,n[i]);else for(;++i<u;)e.set(t.call(n,r=n[i],i),r)}else for(var o in n)e.set(o,n[o]);return e};var bo="__proto__",_o="\x00";l(c,{has:h,get:function(n){return this._[f(n)]},set:function(n,t){return this._[f(n)]=t},remove:p,keys:g,values:function(){var n=[];for(var t in this._)n.push(this._[t]);return n},entries:function(){var n=[];for(var t in this._)n.push({key:s(t),value:this._[t]});return n},size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t),this._[t])}}),ao.nest=function(){function n(t,o,a){if(a>=u.length)return r?r.call(i,o):e?o.sort(e):o;for(var l,f,s,h,p=-1,g=o.length,v=u[a++],d=new c;++p<g;)(h=d.get(l=v(f=o[p])))?h.push(f):d.set(l,[f]);return t?(f=t(),s=function(e,r){f.set(e,n(t,r,a))}):(f={},s=function(e,r){f[e]=n(t,r,a)}),d.forEach(s),f}function t(n,e){if(e>=u.length)return n;var r=[],i=o[e++];return n.forEach(function(n,i){r.push({key:n,values:t(i,e)})}),i?r.sort(function(n,t){return i(n.key,t.key)}):r}var e,r,i={},u=[],o=[];return i.map=function(t,e){return n(e,t,0)},i.entries=function(e){return t(n(ao.map,e,0),0)},i.key=function(n){return u.push(n),i},i.sortKeys=function(n){return o[u.length-1]=n,i},i.sortValues=function(n){return e=n,i},i.rollup=function(n){return r=n,i},i},ao.set=function(n){var t=new y;if(n)for(var e=0,r=n.length;r>e;++e)t.add(n[e]);return t},l(y,{has:h,add:function(n){return this._[f(n+="")]=!0,n},remove:p,values:g,size:v,empty:d,forEach:function(n){for(var t in this._)n.call(this,s(t))}}),ao.behavior={},ao.rebind=function(n,t){for(var e,r=1,i=arguments.length;++r<i;)n[e=arguments[r]]=M(n,t,t[e]);return n};var wo=["webkit","ms","moz","Moz","o","O"];ao.dispatch=function(){for(var n=new _,t=-1,e=arguments.length;++t<e;)n[arguments[t]]=w(n);return n},_.prototype.on=function(n,t){var e=n.indexOf("."),r="";if(e>=0&&(r=n.slice(e+1),n=n.slice(0,e)),n)return arguments.length<2?this[n].on(r):this[n].on(r,t);if(2===arguments.length){if(null==t)for(n in this)this.hasOwnProperty(n)&&this[n].on(r,null);return this}},ao.event=null,ao.requote=function(n){return n.replace(So,"\\$&")};var So=/[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g,ko={}.__proto__?function(n,t){n.__proto__=t}:function(n,t){for(var e in t)n[e]=t[e]},No=function(n,t){return t.querySelector(n)},Eo=function(n,t){return t.querySelectorAll(n)},Ao=function(n,t){var e=n.matches||n[x(n,"matchesSelector")];return(Ao=function(n,t){return e.call(n,t)})(n,t)};"function"==typeof Sizzle&&(No=function(n,t){return Sizzle(n,t)[0]||null},Eo=Sizzle,Ao=Sizzle.matchesSelector),ao.selection=function(){return ao.select(fo.documentElement)};var Co=ao.selection.prototype=[];Co.select=function(n){var t,e,r,i,u=[];n=A(n);for(var o=-1,a=this.length;++o<a;){u.push(t=[]),t.parentNode=(r=this[o]).parentNode;for(var l=-1,c=r.length;++l<c;)(i=r[l])?(t.push(e=n.call(i,i.__data__,l,o)),e&&"__data__"in i&&(e.__data__=i.__data__)):t.push(null)}return E(u)},Co.selectAll=function(n){var t,e,r=[];n=C(n);for(var i=-1,u=this.length;++i<u;)for(var o=this[i],a=-1,l=o.length;++a<l;)(e=o[a])&&(r.push(t=co(n.call(e,e.__data__,a,i))),t.parentNode=e);return E(r)};var zo="http://www.w3.org/1999/xhtml",Lo={svg:"http://www.w3.org/2000/svg",xhtml:zo,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};ao.ns={prefix:Lo,qualify:function(n){var t=n.indexOf(":"),e=n;return t>=0&&"xmlns"!==(e=n.slice(0,t))&&(n=n.slice(t+1)),Lo.hasOwnProperty(e)?{space:Lo[e],local:n}:n}},Co.attr=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node();return n=ao.ns.qualify(n),n.local?e.getAttributeNS(n.space,n.local):e.getAttribute(n)}for(t in n)this.each(z(t,n[t]));return this}return this.each(z(n,t))},Co.classed=function(n,t){if(arguments.length<2){if("string"==typeof n){var e=this.node(),r=(n=T(n)).length,i=-1;if(t=e.classList){for(;++i<r;)if(!t.contains(n[i]))return!1}else for(t=e.getAttribute("class");++i<r;)if(!q(n[i]).test(t))return!1;return!0}for(t in n)this.each(R(t,n[t]));return this}return this.each(R(n,t))},Co.style=function(n,e,r){var i=arguments.length;if(3>i){if("string"!=typeof n){2>i&&(e="");for(r in n)this.each(P(r,n[r],e));return this}if(2>i){var u=this.node();return t(u).getComputedStyle(u,null).getPropertyValue(n)}r=""}return this.each(P(n,e,r))},Co.property=function(n,t){if(arguments.length<2){if("string"==typeof n)return this.node()[n];for(t in n)this.each(U(t,n[t]));return this}return this.each(U(n,t))},Co.text=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.textContent=null==t?"":t}:null==n?function(){this.textContent=""}:function(){this.textContent=n}):this.node().textContent},Co.html=function(n){return arguments.length?this.each("function"==typeof n?function(){var t=n.apply(this,arguments);this.innerHTML=null==t?"":t}:null==n?function(){this.innerHTML=""}:function(){this.innerHTML=n}):this.node().innerHTML},Co.append=function(n){return n=j(n),this.select(function(){return this.appendChild(n.apply(this,arguments))})},Co.insert=function(n,t){return n=j(n),t=A(t),this.select(function(){return this.insertBefore(n.apply(this,arguments),t.apply(this,arguments)||null)})},Co.remove=function(){return this.each(F)},Co.data=function(n,t){function e(n,e){var r,i,u,o=n.length,s=e.length,h=Math.min(o,s),p=new Array(s),g=new Array(s),v=new Array(o);if(t){var d,y=new c,m=new Array(o);for(r=-1;++r<o;)(i=n[r])&&(y.has(d=t.call(i,i.__data__,r))?v[r]=i:y.set(d,i),m[r]=d);for(r=-1;++r<s;)(i=y.get(d=t.call(e,u=e[r],r)))?i!==!0&&(p[r]=i,i.__data__=u):g[r]=H(u),y.set(d,!0);for(r=-1;++r<o;)r in m&&y.get(m[r])!==!0&&(v[r]=n[r])}else{for(r=-1;++r<h;)i=n[r],u=e[r],i?(i.__data__=u,p[r]=i):g[r]=H(u);for(;s>r;++r)g[r]=H(e[r]);for(;o>r;++r)v[r]=n[r]}g.update=p,g.parentNode=p.parentNode=v.parentNode=n.parentNode,a.push(g),l.push(p),f.push(v)}var r,i,u=-1,o=this.length;if(!arguments.length){for(n=new Array(o=(r=this[0]).length);++u<o;)(i=r[u])&&(n[u]=i.__data__);return n}var a=Z([]),l=E([]),f=E([]);if("function"==typeof n)for(;++u<o;)e(r=this[u],n.call(r,r.parentNode.__data__,u));else for(;++u<o;)e(r=this[u],n);return l.enter=function(){return a},l.exit=function(){return f},l},Co.datum=function(n){return arguments.length?this.property("__data__",n):this.property("__data__")},Co.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]),t.parentNode=(e=this[u]).parentNode;for(var a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return E(i)},Co.order=function(){for(var n=-1,t=this.length;++n<t;)for(var e,r=this[n],i=r.length-1,u=r[i];--i>=0;)(e=r[i])&&(u&&u!==e.nextSibling&&u.parentNode.insertBefore(e,u),u=e);return this},Co.sort=function(n){n=I.apply(this,arguments);for(var t=-1,e=this.length;++t<e;)this[t].sort(n);return this.order()},Co.each=function(n){return Y(this,function(t,e,r){n.call(t,t.__data__,e,r)})},Co.call=function(n){var t=co(arguments);return n.apply(t[0]=this,t),this},Co.empty=function(){return!this.node()},Co.node=function(){for(var n=0,t=this.length;t>n;n++)for(var e=this[n],r=0,i=e.length;i>r;r++){var u=e[r];if(u)return u}return null},Co.size=function(){var n=0;return Y(this,function(){++n}),n};var qo=[];ao.selection.enter=Z,ao.selection.enter.prototype=qo,qo.append=Co.append,qo.empty=Co.empty,qo.node=Co.node,qo.call=Co.call,qo.size=Co.size,qo.select=function(n){for(var t,e,r,i,u,o=[],a=-1,l=this.length;++a<l;){r=(i=this[a]).update,o.push(t=[]),t.parentNode=i.parentNode;for(var c=-1,f=i.length;++c<f;)(u=i[c])?(t.push(r[c]=e=n.call(i.parentNode,u.__data__,c,a)),e.__data__=u.__data__):t.push(null)}return E(o)},qo.insert=function(n,t){return arguments.length<2&&(t=V(this)),Co.insert.call(this,n,t)},ao.select=function(t){var e;return"string"==typeof t?(e=[No(t,fo)],e.parentNode=fo.documentElement):(e=[t],e.parentNode=n(t)),E([e])},ao.selectAll=function(n){var t;return"string"==typeof n?(t=co(Eo(n,fo)),t.parentNode=fo.documentElement):(t=co(n),t.parentNode=null),E([t])},Co.on=function(n,t,e){var r=arguments.length;if(3>r){if("string"!=typeof n){2>r&&(t=!1);for(e in n)this.each(X(e,n[e],t));return this}if(2>r)return(r=this.node()["__on"+n])&&r._;e=!1}return this.each(X(n,t,e))};var To=ao.map({mouseenter:"mouseover",mouseleave:"mouseout"});fo&&To.forEach(function(n){"on"+n in fo&&To.remove(n)});var Ro,Do=0;ao.mouse=function(n){return J(n,k())};var Po=this.navigator&&/WebKit/.test(this.navigator.userAgent)?-1:0;ao.touch=function(n,t,e){if(arguments.length<3&&(e=t,t=k().changedTouches),t)for(var r,i=0,u=t.length;u>i;++i)if((r=t[i]).identifier===e)return J(n,r)},ao.behavior.drag=function(){function n(){this.on("mousedown.drag",u).on("touchstart.drag",o)}function e(n,t,e,u,o){return function(){function a(){var n,e,r=t(h,v);r&&(n=r[0]-M[0],e=r[1]-M[1],g|=n|e,M=r,p({type:"drag",x:r[0]+c[0],y:r[1]+c[1],dx:n,dy:e}))}function l(){t(h,v)&&(y.on(u+d,null).on(o+d,null),m(g),p({type:"dragend"}))}var c,f=this,s=ao.event.target.correspondingElement||ao.event.target,h=f.parentNode,p=r.of(f,arguments),g=0,v=n(),d=".drag"+(null==v?"":"-"+v),y=ao.select(e(s)).on(u+d,a).on(o+d,l),m=W(s),M=t(h,v);i?(c=i.apply(f,arguments),c=[c.x-M[0],c.y-M[1]]):c=[0,0],p({type:"dragstart"})}}var r=N(n,"drag","dragstart","dragend"),i=null,u=e(b,ao.mouse,t,"mousemove","mouseup"),o=e(G,ao.touch,m,"touchmove","touchend");return n.origin=function(t){return arguments.length?(i=t,n):i},ao.rebind(n,r,"on")},ao.touches=function(n,t){return arguments.length<2&&(t=k().touches),t?co(t).map(function(t){var e=J(n,t);return e.identifier=t.identifier,e}):[]};var Uo=1e-6,jo=Uo*Uo,Fo=Math.PI,Ho=2*Fo,Oo=Ho-Uo,Io=Fo/2,Yo=Fo/180,Zo=180/Fo,Vo=Math.SQRT2,Xo=2,$o=4;ao.interpolateZoom=function(n,t){var e,r,i=n[0],u=n[1],o=n[2],a=t[0],l=t[1],c=t[2],f=a-i,s=l-u,h=f*f+s*s;if(jo>h)r=Math.log(c/o)/Vo,e=function(n){return[i+n*f,u+n*s,o*Math.exp(Vo*n*r)]};else{var p=Math.sqrt(h),g=(c*c-o*o+$o*h)/(2*o*Xo*p),v=(c*c-o*o-$o*h)/(2*c*Xo*p),d=Math.log(Math.sqrt(g*g+1)-g),y=Math.log(Math.sqrt(v*v+1)-v);r=(y-d)/Vo,e=function(n){var t=n*r,e=rn(d),a=o/(Xo*p)*(e*un(Vo*t+d)-en(d));return[i+a*f,u+a*s,o*e/rn(Vo*t+d)]}}return e.duration=1e3*r,e},ao.behavior.zoom=function(){function n(n){n.on(L,s).on(Wo+".zoom",p).on("dblclick.zoom",g).on(R,h)}function e(n){return[(n[0]-k.x)/k.k,(n[1]-k.y)/k.k]}function r(n){return[n[0]*k.k+k.x,n[1]*k.k+k.y]}function i(n){k.k=Math.max(A[0],Math.min(A[1],n))}function u(n,t){t=r(t),k.x+=n[0]-t[0],k.y+=n[1]-t[1]}function o(t,e,r,o){t.__chart__={x:k.x,y:k.y,k:k.k},i(Math.pow(2,o)),u(d=e,r),t=ao.select(t),C>0&&(t=t.transition().duration(C)),t.call(n.event)}function a(){b&&b.domain(x.range().map(function(n){return(n-k.x)/k.k}).map(x.invert)),w&&w.domain(_.range().map(function(n){return(n-k.y)/k.k}).map(_.invert))}function l(n){z++||n({type:"zoomstart"})}function c(n){a(),n({type:"zoom",scale:k.k,translate:[k.x,k.y]})}function f(n){--z||(n({type:"zoomend"}),d=null)}function s(){function n(){a=1,u(ao.mouse(i),h),c(o)}function r(){s.on(q,null).on(T,null),p(a),f(o)}var i=this,o=D.of(i,arguments),a=0,s=ao.select(t(i)).on(q,n).on(T,r),h=e(ao.mouse(i)),p=W(i);Il.call(i),l(o)}function h(){function n(){var n=ao.touches(g);return p=k.k,n.forEach(function(n){n.identifier in d&&(d[n.identifier]=e(n))}),n}function t(){var t=ao.event.target;ao.select(t).on(x,r).on(b,a),_.push(t);for(var e=ao.event.changedTouches,i=0,u=e.length;u>i;++i)d[e[i].identifier]=null;var l=n(),c=Date.now();if(1===l.length){if(500>c-M){var f=l[0];o(g,f,d[f.identifier],Math.floor(Math.log(k.k)/Math.LN2)+1),S()}M=c}else if(l.length>1){var f=l[0],s=l[1],h=f[0]-s[0],p=f[1]-s[1];y=h*h+p*p}}function r(){var n,t,e,r,o=ao.touches(g);Il.call(g);for(var a=0,l=o.length;l>a;++a,r=null)if(e=o[a],r=d[e.identifier]){if(t)break;n=e,t=r}if(r){var f=(f=e[0]-n[0])*f+(f=e[1]-n[1])*f,s=y&&Math.sqrt(f/y);n=[(n[0]+e[0])/2,(n[1]+e[1])/2],t=[(t[0]+r[0])/2,(t[1]+r[1])/2],i(s*p)}M=null,u(n,t),c(v)}function a(){if(ao.event.touches.length){for(var t=ao.event.changedTouches,e=0,r=t.length;r>e;++e)delete d[t[e].identifier];for(var i in d)return void n()}ao.selectAll(_).on(m,null),w.on(L,s).on(R,h),N(),f(v)}var p,g=this,v=D.of(g,arguments),d={},y=0,m=".zoom-"+ao.event.changedTouches[0].identifier,x="touchmove"+m,b="touchend"+m,_=[],w=ao.select(g),N=W(g);t(),l(v),w.on(L,null).on(R,t)}function p(){var n=D.of(this,arguments);m?clearTimeout(m):(Il.call(this),v=e(d=y||ao.mouse(this)),l(n)),m=setTimeout(function(){m=null,f(n)},50),S(),i(Math.pow(2,.002*Bo())*k.k),u(d,v),c(n)}function g(){var n=ao.mouse(this),t=Math.log(k.k)/Math.LN2;o(this,n,e(n),ao.event.shiftKey?Math.ceil(t)-1:Math.floor(t)+1)}var v,d,y,m,M,x,b,_,w,k={x:0,y:0,k:1},E=[960,500],A=Jo,C=250,z=0,L="mousedown.zoom",q="mousemove.zoom",T="mouseup.zoom",R="touchstart.zoom",D=N(n,"zoomstart","zoom","zoomend");return Wo||(Wo="onwheel"in fo?(Bo=function(){return-ao.event.deltaY*(ao.event.deltaMode?120:1)},"wheel"):"onmousewheel"in fo?(Bo=function(){return ao.event.wheelDelta},"mousewheel"):(Bo=function(){return-ao.event.detail},"MozMousePixelScroll")),n.event=function(n){n.each(function(){var n=D.of(this,arguments),t=k;Hl?ao.select(this).transition().each("start.zoom",function(){k=this.__chart__||{x:0,y:0,k:1},l(n)}).tween("zoom:zoom",function(){var e=E[0],r=E[1],i=d?d[0]:e/2,u=d?d[1]:r/2,o=ao.interpolateZoom([(i-k.x)/k.k,(u-k.y)/k.k,e/k.k],[(i-t.x)/t.k,(u-t.y)/t.k,e/t.k]);return function(t){var r=o(t),a=e/r[2];this.__chart__=k={x:i-r[0]*a,y:u-r[1]*a,k:a},c(n)}}).each("interrupt.zoom",function(){f(n)}).each("end.zoom",function(){f(n)}):(this.__chart__=k,l(n),c(n),f(n))})},n.translate=function(t){return arguments.length?(k={x:+t[0],y:+t[1],k:k.k},a(),n):[k.x,k.y]},n.scale=function(t){return arguments.length?(k={x:k.x,y:k.y,k:null},i(+t),a(),n):k.k},n.scaleExtent=function(t){return arguments.length?(A=null==t?Jo:[+t[0],+t[1]],n):A},n.center=function(t){return arguments.length?(y=t&&[+t[0],+t[1]],n):y},n.size=function(t){return arguments.length?(E=t&&[+t[0],+t[1]],n):E},n.duration=function(t){return arguments.length?(C=+t,n):C},n.x=function(t){return arguments.length?(b=t,x=t.copy(),k={x:0,y:0,k:1},n):b},n.y=function(t){return arguments.length?(w=t,_=t.copy(),k={x:0,y:0,k:1},n):w},ao.rebind(n,D,"on")};var Bo,Wo,Jo=[0,1/0];ao.color=an,an.prototype.toString=function(){return this.rgb()+""},ao.hsl=ln;var Go=ln.prototype=new an;Go.brighter=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,this.l/n)},Go.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new ln(this.h,this.s,n*this.l)},Go.rgb=function(){return cn(this.h,this.s,this.l)},ao.hcl=fn;var Ko=fn.prototype=new an;Ko.brighter=function(n){return new fn(this.h,this.c,Math.min(100,this.l+Qo*(arguments.length?n:1)))},Ko.darker=function(n){return new fn(this.h,this.c,Math.max(0,this.l-Qo*(arguments.length?n:1)))},Ko.rgb=function(){return sn(this.h,this.c,this.l).rgb()},ao.lab=hn;var Qo=18,na=.95047,ta=1,ea=1.08883,ra=hn.prototype=new an;ra.brighter=function(n){return new hn(Math.min(100,this.l+Qo*(arguments.length?n:1)),this.a,this.b)},ra.darker=function(n){return new hn(Math.max(0,this.l-Qo*(arguments.length?n:1)),this.a,this.b)},ra.rgb=function(){return pn(this.l,this.a,this.b)},ao.rgb=mn;var ia=mn.prototype=new an;ia.brighter=function(n){n=Math.pow(.7,arguments.length?n:1);var t=this.r,e=this.g,r=this.b,i=30;return t||e||r?(t&&i>t&&(t=i),e&&i>e&&(e=i),r&&i>r&&(r=i),new mn(Math.min(255,t/n),Math.min(255,e/n),Math.min(255,r/n))):new mn(i,i,i)},ia.darker=function(n){return n=Math.pow(.7,arguments.length?n:1),new mn(n*this.r,n*this.g,n*this.b)},ia.hsl=function(){return wn(this.r,this.g,this.b)},ia.toString=function(){return"#"+bn(this.r)+bn(this.g)+bn(this.b)};var ua=ao.map({aliceblue:15792383,antiquewhite:16444375,aqua:65535,aquamarine:8388564,azure:15794175,beige:16119260,bisque:16770244,black:0,blanchedalmond:16772045,blue:255,blueviolet:9055202,brown:10824234,burlywood:14596231,cadetblue:6266528,chartreuse:8388352,chocolate:13789470,coral:16744272,cornflowerblue:6591981,cornsilk:16775388,crimson:14423100,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:12092939,darkgray:11119017,darkgreen:25600,darkgrey:11119017,darkkhaki:12433259,darkmagenta:9109643,darkolivegreen:5597999,darkorange:16747520,darkorchid:10040012,darkred:9109504,darksalmon:15308410,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:16716947,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:11674146,floralwhite:16775920,forestgreen:2263842,fuchsia:16711935,gainsboro:14474460,ghostwhite:16316671,gold:16766720,goldenrod:14329120,gray:8421504,green:32768,greenyellow:11403055,grey:8421504,honeydew:15794160,hotpink:16738740,indianred:13458524,indigo:4915330,ivory:16777200,khaki:15787660,lavender:15132410,lavenderblush:16773365,lawngreen:8190976,lemonchiffon:16775885,lightblue:11393254,lightcoral:15761536,lightcyan:14745599,lightgoldenrodyellow:16448210,lightgray:13882323,lightgreen:9498256,lightgrey:13882323,lightpink:16758465,lightsalmon:16752762,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:11584734,lightyellow:16777184,lime:65280,limegreen:3329330,linen:16445670,magenta:16711935,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:12211667,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:13047173,midnightblue:1644912,mintcream:16121850,mistyrose:16770273,moccasin:16770229,navajowhite:16768685,navy:128,oldlace:16643558,olive:8421376,olivedrab:7048739,orange:16753920,orangered:16729344,orchid:14315734,palegoldenrod:15657130,palegreen:10025880,paleturquoise:11529966,palevioletred:14381203,papayawhip:16773077,peachpuff:16767673,peru:13468991,pink:16761035,plum:14524637,powderblue:11591910,purple:8388736,rebeccapurple:6697881,red:16711680,rosybrown:12357519,royalblue:4286945,saddlebrown:9127187,salmon:16416882,sandybrown:16032864,seagreen:3050327,seashell:16774638,sienna:10506797,silver:12632256,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:16775930,springgreen:65407,steelblue:4620980,tan:13808780,teal:32896,thistle:14204888,tomato:16737095,turquoise:4251856,violet:15631086,wheat:16113331,white:16777215,whitesmoke:16119285,yellow:16776960,yellowgreen:10145074});ua.forEach(function(n,t){ua.set(n,Mn(t))}),ao.functor=En,ao.xhr=An(m),ao.dsv=function(n,t){function e(n,e,u){arguments.length<3&&(u=e,e=null);var o=Cn(n,t,null==e?r:i(e),u);return o.row=function(n){return arguments.length?o.response(null==(e=n)?r:i(n)):e},o}function r(n){return e.parse(n.responseText)}function i(n){return function(t){return e.parse(t.responseText,n)}}function u(t){return t.map(o).join(n)}function o(n){return a.test(n)?'"'+n.replace(/\"/g,'""')+'"':n}var a=new RegExp('["'+n+"\n]"),l=n.charCodeAt(0);return e.parse=function(n,t){var r;return e.parseRows(n,function(n,e){if(r)return r(n,e-1);var i=new Function("d","return {"+n.map(function(n,t){return JSON.stringify(n)+": d["+t+"]"}).join(",")+"}");r=t?function(n,e){return t(i(n),e)}:i})},e.parseRows=function(n,t){function e(){if(f>=c)return o;if(i)return i=!1,u;var t=f;if(34===n.charCodeAt(t)){for(var e=t;e++<c;)if(34===n.charCodeAt(e)){if(34!==n.charCodeAt(e+1))break;++e}f=e+2;var r=n.charCodeAt(e+1);return 13===r?(i=!0,10===n.charCodeAt(e+2)&&++f):10===r&&(i=!0),n.slice(t+1,e).replace(/""/g,'"')}for(;c>f;){var r=n.charCodeAt(f++),a=1;if(10===r)i=!0;else if(13===r)i=!0,10===n.charCodeAt(f)&&(++f,++a);else if(r!==l)continue;return n.slice(t,f-a)}return n.slice(t)}for(var r,i,u={},o={},a=[],c=n.length,f=0,s=0;(r=e())!==o;){for(var h=[];r!==u&&r!==o;)h.push(r),r=e();t&&null==(h=t(h,s++))||a.push(h)}return a},e.format=function(t){if(Array.isArray(t[0]))return e.formatRows(t);var r=new y,i=[];return t.forEach(function(n){for(var t in n)r.has(t)||i.push(r.add(t))}),[i.map(o).join(n)].concat(t.map(function(t){return i.map(function(n){return o(t[n])}).join(n)})).join("\n")},e.formatRows=function(n){return n.map(u).join("\n")},e},ao.csv=ao.dsv(",","text/csv"),ao.tsv=ao.dsv(" ","text/tab-separated-values");var oa,aa,la,ca,fa=this[x(this,"requestAnimationFrame")]||function(n){setTimeout(n,17)};ao.timer=function(){qn.apply(this,arguments)},ao.timer.flush=function(){Rn(),Dn()},ao.round=function(n,t){return t?Math.round(n*(t=Math.pow(10,t)))/t:Math.round(n)};var sa=["y","z","a","f","p","n","\xb5","m","","k","M","G","T","P","E","Z","Y"].map(Un);ao.formatPrefix=function(n,t){var e=0;return(n=+n)&&(0>n&&(n*=-1),t&&(n=ao.round(n,Pn(n,t))),e=1+Math.floor(1e-12+Math.log(n)/Math.LN10),e=Math.max(-24,Math.min(24,3*Math.floor((e-1)/3)))),sa[8+e/3]};var ha=/(?:([^{])?([<>=^]))?([+\- ])?([$#])?(0)?(\d+)?(,)?(\.-?\d+)?([a-z%])?/i,pa=ao.map({b:function(n){return n.toString(2)},c:function(n){return String.fromCharCode(n)},o:function(n){return n.toString(8)},x:function(n){return n.toString(16)},X:function(n){return n.toString(16).toUpperCase()},g:function(n,t){return n.toPrecision(t)},e:function(n,t){return n.toExponential(t)},f:function(n,t){return n.toFixed(t)},r:function(n,t){return(n=ao.round(n,Pn(n,t))).toFixed(Math.max(0,Math.min(20,Pn(n*(1+1e-15),t))))}}),ga=ao.time={},va=Date;Hn.prototype={getDate:function(){return this._.getUTCDate()},getDay:function(){return this._.getUTCDay()},getFullYear:function(){return this._.getUTCFullYear()},getHours:function(){return this._.getUTCHours()},getMilliseconds:function(){return this._.getUTCMilliseconds()},getMinutes:function(){return this._.getUTCMinutes()},getMonth:function(){return this._.getUTCMonth()},getSeconds:function(){return this._.getUTCSeconds()},getTime:function(){return this._.getTime()},getTimezoneOffset:function(){return 0},valueOf:function(){return this._.valueOf()},setDate:function(){da.setUTCDate.apply(this._,arguments)},setDay:function(){da.setUTCDay.apply(this._,arguments)},setFullYear:function(){da.setUTCFullYear.apply(this._,arguments)},setHours:function(){da.setUTCHours.apply(this._,arguments)},setMilliseconds:function(){da.setUTCMilliseconds.apply(this._,arguments)},setMinutes:function(){da.setUTCMinutes.apply(this._,arguments)},setMonth:function(){da.setUTCMonth.apply(this._,arguments)},setSeconds:function(){da.setUTCSeconds.apply(this._,arguments)},setTime:function(){da.setTime.apply(this._,arguments)}};var da=Date.prototype;ga.year=On(function(n){return n=ga.day(n),n.setMonth(0,1),n},function(n,t){n.setFullYear(n.getFullYear()+t)},function(n){return n.getFullYear()}),ga.years=ga.year.range,ga.years.utc=ga.year.utc.range,ga.day=On(function(n){var t=new va(2e3,0);return t.setFullYear(n.getFullYear(),n.getMonth(),n.getDate()),t},function(n,t){n.setDate(n.getDate()+t)},function(n){return n.getDate()-1}),ga.days=ga.day.range,ga.days.utc=ga.day.utc.range,ga.dayOfYear=function(n){var t=ga.year(n);return Math.floor((n-t-6e4*(n.getTimezoneOffset()-t.getTimezoneOffset()))/864e5)},["sunday","monday","tuesday","wednesday","thursday","friday","saturday"].forEach(function(n,t){t=7-t;var e=ga[n]=On(function(n){return(n=ga.day(n)).setDate(n.getDate()-(n.getDay()+t)%7),n},function(n,t){n.setDate(n.getDate()+7*Math.floor(t))},function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)-(e!==t)});ga[n+"s"]=e.range,ga[n+"s"].utc=e.utc.range,ga[n+"OfYear"]=function(n){var e=ga.year(n).getDay();return Math.floor((ga.dayOfYear(n)+(e+t)%7)/7)}}),ga.week=ga.sunday,ga.weeks=ga.sunday.range,ga.weeks.utc=ga.sunday.utc.range,ga.weekOfYear=ga.sundayOfYear;var ya={"-":"",_:" ",0:"0"},ma=/^\s*\d+/,Ma=/^%/;ao.locale=function(n){return{numberFormat:jn(n),timeFormat:Yn(n)}};var xa=ao.locale({decimal:".",thousands:",",grouping:[3],currency:["$",""],dateTime:"%a %b %e %X %Y",date:"%m/%d/%Y",time:"%H:%M:%S",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],
+shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});ao.format=xa.numberFormat,ao.geo={},ft.prototype={s:0,t:0,add:function(n){st(n,this.t,ba),st(ba.s,this.s,this),this.s?this.t+=ba.t:this.s=ba.t},reset:function(){this.s=this.t=0},valueOf:function(){return this.s}};var ba=new ft;ao.geo.stream=function(n,t){n&&_a.hasOwnProperty(n.type)?_a[n.type](n,t):ht(n,t)};var _a={Feature:function(n,t){ht(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,r=-1,i=e.length;++r<i;)ht(e[r].geometry,t)}},wa={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)n=e[r],t.point(n[0],n[1],n[2])},LineString:function(n,t){pt(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)pt(e[r],t,0)},Polygon:function(n,t){gt(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,r=-1,i=e.length;++r<i;)gt(e[r],t)},GeometryCollection:function(n,t){for(var e=n.geometries,r=-1,i=e.length;++r<i;)ht(e[r],t)}};ao.geo.area=function(n){return Sa=0,ao.geo.stream(n,Na),Sa};var Sa,ka=new ft,Na={sphere:function(){Sa+=4*Fo},point:b,lineStart:b,lineEnd:b,polygonStart:function(){ka.reset(),Na.lineStart=vt},polygonEnd:function(){var n=2*ka;Sa+=0>n?4*Fo+n:n,Na.lineStart=Na.lineEnd=Na.point=b}};ao.geo.bounds=function(){function n(n,t){M.push(x=[f=n,h=n]),s>t&&(s=t),t>p&&(p=t)}function t(t,e){var r=dt([t*Yo,e*Yo]);if(y){var i=mt(y,r),u=[i[1],-i[0],0],o=mt(u,i);bt(o),o=_t(o);var l=t-g,c=l>0?1:-1,v=o[0]*Zo*c,d=xo(l)>180;if(d^(v>c*g&&c*t>v)){var m=o[1]*Zo;m>p&&(p=m)}else if(v=(v+360)%360-180,d^(v>c*g&&c*t>v)){var m=-o[1]*Zo;s>m&&(s=m)}else s>e&&(s=e),e>p&&(p=e);d?g>t?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t):h>=f?(f>t&&(f=t),t>h&&(h=t)):t>g?a(f,t)>a(f,h)&&(h=t):a(t,h)>a(f,h)&&(f=t)}else n(t,e);y=r,g=t}function e(){b.point=t}function r(){x[0]=f,x[1]=h,b.point=n,y=null}function i(n,e){if(y){var r=n-g;m+=xo(r)>180?r+(r>0?360:-360):r}else v=n,d=e;Na.point(n,e),t(n,e)}function u(){Na.lineStart()}function o(){i(v,d),Na.lineEnd(),xo(m)>Uo&&(f=-(h=180)),x[0]=f,x[1]=h,y=null}function a(n,t){return(t-=n)<0?t+360:t}function l(n,t){return n[0]-t[0]}function c(n,t){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var f,s,h,p,g,v,d,y,m,M,x,b={point:n,lineStart:e,lineEnd:r,polygonStart:function(){b.point=i,b.lineStart=u,b.lineEnd=o,m=0,Na.polygonStart()},polygonEnd:function(){Na.polygonEnd(),b.point=n,b.lineStart=e,b.lineEnd=r,0>ka?(f=-(h=180),s=-(p=90)):m>Uo?p=90:-Uo>m&&(s=-90),x[0]=f,x[1]=h}};return function(n){p=h=-(f=s=1/0),M=[],ao.geo.stream(n,b);var t=M.length;if(t){M.sort(l);for(var e,r=1,i=M[0],u=[i];t>r;++r)e=M[r],c(e[0],i)||c(e[1],i)?(a(i[0],e[1])>a(i[0],i[1])&&(i[1]=e[1]),a(e[0],i[1])>a(i[0],i[1])&&(i[0]=e[0])):u.push(i=e);for(var o,e,g=-(1/0),t=u.length-1,r=0,i=u[t];t>=r;i=e,++r)e=u[r],(o=a(i[1],e[0]))>g&&(g=o,f=e[0],h=i[1])}return M=x=null,f===1/0||s===1/0?[[NaN,NaN],[NaN,NaN]]:[[f,s],[h,p]]}}(),ao.geo.centroid=function(n){Ea=Aa=Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,ja);var t=Da,e=Pa,r=Ua,i=t*t+e*e+r*r;return jo>i&&(t=qa,e=Ta,r=Ra,Uo>Aa&&(t=Ca,e=za,r=La),i=t*t+e*e+r*r,jo>i)?[NaN,NaN]:[Math.atan2(e,t)*Zo,tn(r/Math.sqrt(i))*Zo]};var Ea,Aa,Ca,za,La,qa,Ta,Ra,Da,Pa,Ua,ja={sphere:b,point:St,lineStart:Nt,lineEnd:Et,polygonStart:function(){ja.lineStart=At},polygonEnd:function(){ja.lineStart=Nt}},Fa=Rt(zt,jt,Ht,[-Fo,-Fo/2]),Ha=1e9;ao.geo.clipExtent=function(){var n,t,e,r,i,u,o={stream:function(n){return i&&(i.valid=!1),i=u(n),i.valid=!0,i},extent:function(a){return arguments.length?(u=Zt(n=+a[0][0],t=+a[0][1],e=+a[1][0],r=+a[1][1]),i&&(i.valid=!1,i=null),o):[[n,t],[e,r]]}};return o.extent([[0,0],[960,500]])},(ao.geo.conicEqualArea=function(){return Vt(Xt)}).raw=Xt,ao.geo.albers=function(){return ao.geo.conicEqualArea().rotate([96,0]).center([-.6,38.7]).parallels([29.5,45.5]).scale(1070)},ao.geo.albersUsa=function(){function n(n){var u=n[0],o=n[1];return t=null,e(u,o),t||(r(u,o),t)||i(u,o),t}var t,e,r,i,u=ao.geo.albers(),o=ao.geo.conicEqualArea().rotate([154,0]).center([-2,58.5]).parallels([55,65]),a=ao.geo.conicEqualArea().rotate([157,0]).center([-3,19.9]).parallels([8,18]),l={point:function(n,e){t=[n,e]}};return n.invert=function(n){var t=u.scale(),e=u.translate(),r=(n[0]-e[0])/t,i=(n[1]-e[1])/t;return(i>=.12&&.234>i&&r>=-.425&&-.214>r?o:i>=.166&&.234>i&&r>=-.214&&-.115>r?a:u).invert(n)},n.stream=function(n){var t=u.stream(n),e=o.stream(n),r=a.stream(n);return{point:function(n,i){t.point(n,i),e.point(n,i),r.point(n,i)},sphere:function(){t.sphere(),e.sphere(),r.sphere()},lineStart:function(){t.lineStart(),e.lineStart(),r.lineStart()},lineEnd:function(){t.lineEnd(),e.lineEnd(),r.lineEnd()},polygonStart:function(){t.polygonStart(),e.polygonStart(),r.polygonStart()},polygonEnd:function(){t.polygonEnd(),e.polygonEnd(),r.polygonEnd()}}},n.precision=function(t){return arguments.length?(u.precision(t),o.precision(t),a.precision(t),n):u.precision()},n.scale=function(t){return arguments.length?(u.scale(t),o.scale(.35*t),a.scale(t),n.translate(u.translate())):u.scale()},n.translate=function(t){if(!arguments.length)return u.translate();var c=u.scale(),f=+t[0],s=+t[1];return e=u.translate(t).clipExtent([[f-.455*c,s-.238*c],[f+.455*c,s+.238*c]]).stream(l).point,r=o.translate([f-.307*c,s+.201*c]).clipExtent([[f-.425*c+Uo,s+.12*c+Uo],[f-.214*c-Uo,s+.234*c-Uo]]).stream(l).point,i=a.translate([f-.205*c,s+.212*c]).clipExtent([[f-.214*c+Uo,s+.166*c+Uo],[f-.115*c-Uo,s+.234*c-Uo]]).stream(l).point,n},n.scale(1070)};var Oa,Ia,Ya,Za,Va,Xa,$a={point:b,lineStart:b,lineEnd:b,polygonStart:function(){Ia=0,$a.lineStart=$t},polygonEnd:function(){$a.lineStart=$a.lineEnd=$a.point=b,Oa+=xo(Ia/2)}},Ba={point:Bt,lineStart:b,lineEnd:b,polygonStart:b,polygonEnd:b},Wa={point:Gt,lineStart:Kt,lineEnd:Qt,polygonStart:function(){Wa.lineStart=ne},polygonEnd:function(){Wa.point=Gt,Wa.lineStart=Kt,Wa.lineEnd=Qt}};ao.geo.path=function(){function n(n){return n&&("function"==typeof a&&u.pointRadius(+a.apply(this,arguments)),o&&o.valid||(o=i(u)),ao.geo.stream(n,o)),u.result()}function t(){return o=null,n}var e,r,i,u,o,a=4.5;return n.area=function(n){return Oa=0,ao.geo.stream(n,i($a)),Oa},n.centroid=function(n){return Ca=za=La=qa=Ta=Ra=Da=Pa=Ua=0,ao.geo.stream(n,i(Wa)),Ua?[Da/Ua,Pa/Ua]:Ra?[qa/Ra,Ta/Ra]:La?[Ca/La,za/La]:[NaN,NaN]},n.bounds=function(n){return Va=Xa=-(Ya=Za=1/0),ao.geo.stream(n,i(Ba)),[[Ya,Za],[Va,Xa]]},n.projection=function(n){return arguments.length?(i=(e=n)?n.stream||re(n):m,t()):e},n.context=function(n){return arguments.length?(u=null==(r=n)?new Wt:new te(n),"function"!=typeof a&&u.pointRadius(a),t()):r},n.pointRadius=function(t){return arguments.length?(a="function"==typeof t?t:(u.pointRadius(+t),+t),n):a},n.projection(ao.geo.albersUsa()).context(null)},ao.geo.transform=function(n){return{stream:function(t){var e=new ie(t);for(var r in n)e[r]=n[r];return e}}},ie.prototype={point:function(n,t){this.stream.point(n,t)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}},ao.geo.projection=oe,ao.geo.projectionMutator=ae,(ao.geo.equirectangular=function(){return oe(ce)}).raw=ce.invert=ce,ao.geo.rotation=function(n){function t(t){return t=n(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t}return n=se(n[0]%360*Yo,n[1]*Yo,n.length>2?n[2]*Yo:0),t.invert=function(t){return t=n.invert(t[0]*Yo,t[1]*Yo),t[0]*=Zo,t[1]*=Zo,t},t},fe.invert=ce,ao.geo.circle=function(){function n(){var n="function"==typeof r?r.apply(this,arguments):r,t=se(-n[0]*Yo,-n[1]*Yo,0).invert,i=[];return e(null,null,1,{point:function(n,e){i.push(n=t(n,e)),n[0]*=Zo,n[1]*=Zo}}),{type:"Polygon",coordinates:[i]}}var t,e,r=[0,0],i=6;return n.origin=function(t){return arguments.length?(r=t,n):r},n.angle=function(r){return arguments.length?(e=ve((t=+r)*Yo,i*Yo),n):t},n.precision=function(r){return arguments.length?(e=ve(t*Yo,(i=+r)*Yo),n):i},n.angle(90)},ao.geo.distance=function(n,t){var e,r=(t[0]-n[0])*Yo,i=n[1]*Yo,u=t[1]*Yo,o=Math.sin(r),a=Math.cos(r),l=Math.sin(i),c=Math.cos(i),f=Math.sin(u),s=Math.cos(u);return Math.atan2(Math.sqrt((e=s*o)*e+(e=c*f-l*s*a)*e),l*f+c*s*a)},ao.geo.graticule=function(){function n(){return{type:"MultiLineString",coordinates:t()}}function t(){return ao.range(Math.ceil(u/d)*d,i,d).map(h).concat(ao.range(Math.ceil(c/y)*y,l,y).map(p)).concat(ao.range(Math.ceil(r/g)*g,e,g).filter(function(n){return xo(n%d)>Uo}).map(f)).concat(ao.range(Math.ceil(a/v)*v,o,v).filter(function(n){return xo(n%y)>Uo}).map(s))}var e,r,i,u,o,a,l,c,f,s,h,p,g=10,v=g,d=90,y=360,m=2.5;return n.lines=function(){return t().map(function(n){return{type:"LineString",coordinates:n}})},n.outline=function(){return{type:"Polygon",coordinates:[h(u).concat(p(l).slice(1),h(i).reverse().slice(1),p(c).reverse().slice(1))]}},n.extent=function(t){return arguments.length?n.majorExtent(t).minorExtent(t):n.minorExtent()},n.majorExtent=function(t){return arguments.length?(u=+t[0][0],i=+t[1][0],c=+t[0][1],l=+t[1][1],u>i&&(t=u,u=i,i=t),c>l&&(t=c,c=l,l=t),n.precision(m)):[[u,c],[i,l]]},n.minorExtent=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],a=+t[0][1],o=+t[1][1],r>e&&(t=r,r=e,e=t),a>o&&(t=a,a=o,o=t),n.precision(m)):[[r,a],[e,o]]},n.step=function(t){return arguments.length?n.majorStep(t).minorStep(t):n.minorStep()},n.majorStep=function(t){return arguments.length?(d=+t[0],y=+t[1],n):[d,y]},n.minorStep=function(t){return arguments.length?(g=+t[0],v=+t[1],n):[g,v]},n.precision=function(t){return arguments.length?(m=+t,f=ye(a,o,90),s=me(r,e,m),h=ye(c,l,90),p=me(u,i,m),n):m},n.majorExtent([[-180,-90+Uo],[180,90-Uo]]).minorExtent([[-180,-80-Uo],[180,80+Uo]])},ao.geo.greatArc=function(){function n(){return{type:"LineString",coordinates:[t||r.apply(this,arguments),e||i.apply(this,arguments)]}}var t,e,r=Me,i=xe;return n.distance=function(){return ao.geo.distance(t||r.apply(this,arguments),e||i.apply(this,arguments))},n.source=function(e){return arguments.length?(r=e,t="function"==typeof e?null:e,n):r},n.target=function(t){return arguments.length?(i=t,e="function"==typeof t?null:t,n):i},n.precision=function(){return arguments.length?n:0},n},ao.geo.interpolate=function(n,t){return be(n[0]*Yo,n[1]*Yo,t[0]*Yo,t[1]*Yo)},ao.geo.length=function(n){return Ja=0,ao.geo.stream(n,Ga),Ja};var Ja,Ga={sphere:b,point:b,lineStart:_e,lineEnd:b,polygonStart:b,polygonEnd:b},Ka=we(function(n){return Math.sqrt(2/(1+n))},function(n){return 2*Math.asin(n/2)});(ao.geo.azimuthalEqualArea=function(){return oe(Ka)}).raw=Ka;var Qa=we(function(n){var t=Math.acos(n);return t&&t/Math.sin(t)},m);(ao.geo.azimuthalEquidistant=function(){return oe(Qa)}).raw=Qa,(ao.geo.conicConformal=function(){return Vt(Se)}).raw=Se,(ao.geo.conicEquidistant=function(){return Vt(ke)}).raw=ke;var nl=we(function(n){return 1/n},Math.atan);(ao.geo.gnomonic=function(){return oe(nl)}).raw=nl,Ne.invert=function(n,t){return[n,2*Math.atan(Math.exp(t))-Io]},(ao.geo.mercator=function(){return Ee(Ne)}).raw=Ne;var tl=we(function(){return 1},Math.asin);(ao.geo.orthographic=function(){return oe(tl)}).raw=tl;var el=we(function(n){return 1/(1+n)},function(n){return 2*Math.atan(n)});(ao.geo.stereographic=function(){return oe(el)}).raw=el,Ae.invert=function(n,t){return[-t,2*Math.atan(Math.exp(n))-Io]},(ao.geo.transverseMercator=function(){var n=Ee(Ae),t=n.center,e=n.rotate;return n.center=function(n){return n?t([-n[1],n[0]]):(n=t(),[n[1],-n[0]])},n.rotate=function(n){return n?e([n[0],n[1],n.length>2?n[2]+90:90]):(n=e(),[n[0],n[1],n[2]-90])},e([0,0,90])}).raw=Ae,ao.geom={},ao.geom.hull=function(n){function t(n){if(n.length<3)return[];var t,i=En(e),u=En(r),o=n.length,a=[],l=[];for(t=0;o>t;t++)a.push([+i.call(this,n[t],t),+u.call(this,n[t],t),t]);for(a.sort(qe),t=0;o>t;t++)l.push([a[t][0],-a[t][1]]);var c=Le(a),f=Le(l),s=f[0]===c[0],h=f[f.length-1]===c[c.length-1],p=[];for(t=c.length-1;t>=0;--t)p.push(n[a[c[t]][2]]);for(t=+s;t<f.length-h;++t)p.push(n[a[f[t]][2]]);return p}var e=Ce,r=ze;return arguments.length?t(n):(t.x=function(n){return arguments.length?(e=n,t):e},t.y=function(n){return arguments.length?(r=n,t):r},t)},ao.geom.polygon=function(n){return ko(n,rl),n};var rl=ao.geom.polygon.prototype=[];rl.area=function(){for(var n,t=-1,e=this.length,r=this[e-1],i=0;++t<e;)n=r,r=this[t],i+=n[1]*r[0]-n[0]*r[1];return.5*i},rl.centroid=function(n){var t,e,r=-1,i=this.length,u=0,o=0,a=this[i-1];for(arguments.length||(n=-1/(6*this.area()));++r<i;)t=a,a=this[r],e=t[0]*a[1]-a[0]*t[1],u+=(t[0]+a[0])*e,o+=(t[1]+a[1])*e;return[u*n,o*n]},rl.clip=function(n){for(var t,e,r,i,u,o,a=De(n),l=-1,c=this.length-De(this),f=this[c-1];++l<c;){for(t=n.slice(),n.length=0,i=this[l],u=t[(r=t.length-a)-1],e=-1;++e<r;)o=t[e],Te(o,f,i)?(Te(u,f,i)||n.push(Re(u,o,f,i)),n.push(o)):Te(u,f,i)&&n.push(Re(u,o,f,i)),u=o;a&&n.push(n[0]),f=i}return n};var il,ul,ol,al,ll,cl=[],fl=[];Ye.prototype.prepare=function(){for(var n,t=this.edges,e=t.length;e--;)n=t[e].edge,n.b&&n.a||t.splice(e,1);return t.sort(Ve),t.length},tr.prototype={start:function(){return this.edge.l===this.site?this.edge.a:this.edge.b},end:function(){return this.edge.l===this.site?this.edge.b:this.edge.a}},er.prototype={insert:function(n,t){var e,r,i;if(n){if(t.P=n,t.N=n.N,n.N&&(n.N.P=t),n.N=t,n.R){for(n=n.R;n.L;)n=n.L;n.L=t}else n.R=t;e=n}else this._?(n=or(this._),t.P=null,t.N=n,n.P=n.L=t,e=n):(t.P=t.N=null,this._=t,e=null);for(t.L=t.R=null,t.U=e,t.C=!0,n=t;e&&e.C;)r=e.U,e===r.L?(i=r.R,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.R&&(ir(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ur(this,r))):(i=r.L,i&&i.C?(e.C=i.C=!1,r.C=!0,n=r):(n===e.L&&(ur(this,e),n=e,e=n.U),e.C=!1,r.C=!0,ir(this,r))),e=n.U;this._.C=!1},remove:function(n){n.N&&(n.N.P=n.P),n.P&&(n.P.N=n.N),n.N=n.P=null;var t,e,r,i=n.U,u=n.L,o=n.R;if(e=u?o?or(o):u:o,i?i.L===n?i.L=e:i.R=e:this._=e,u&&o?(r=e.C,e.C=n.C,e.L=u,u.U=e,e!==o?(i=e.U,e.U=n.U,n=e.R,i.L=n,e.R=o,o.U=e):(e.U=i,i=e,n=e.R)):(r=n.C,n=e),n&&(n.U=i),!r){if(n&&n.C)return void(n.C=!1);do{if(n===this._)break;if(n===i.L){if(t=i.R,t.C&&(t.C=!1,i.C=!0,ir(this,i),t=i.R),t.L&&t.L.C||t.R&&t.R.C){t.R&&t.R.C||(t.L.C=!1,t.C=!0,ur(this,t),t=i.R),t.C=i.C,i.C=t.R.C=!1,ir(this,i),n=this._;break}}else if(t=i.L,t.C&&(t.C=!1,i.C=!0,ur(this,i),t=i.L),t.L&&t.L.C||t.R&&t.R.C){t.L&&t.L.C||(t.R.C=!1,t.C=!0,ir(this,t),t=i.L),t.C=i.C,i.C=t.L.C=!1,ur(this,i),n=this._;break}t.C=!0,n=i,i=i.U}while(!n.C);n&&(n.C=!1)}}},ao.geom.voronoi=function(n){function t(n){var t=new Array(n.length),r=a[0][0],i=a[0][1],u=a[1][0],o=a[1][1];return ar(e(n),a).cells.forEach(function(e,a){var l=e.edges,c=e.site,f=t[a]=l.length?l.map(function(n){var t=n.start();return[t.x,t.y]}):c.x>=r&&c.x<=u&&c.y>=i&&c.y<=o?[[r,o],[u,o],[u,i],[r,i]]:[];f.point=n[a]}),t}function e(n){return n.map(function(n,t){return{x:Math.round(u(n,t)/Uo)*Uo,y:Math.round(o(n,t)/Uo)*Uo,i:t}})}var r=Ce,i=ze,u=r,o=i,a=sl;return n?t(n):(t.links=function(n){return ar(e(n)).edges.filter(function(n){return n.l&&n.r}).map(function(t){return{source:n[t.l.i],target:n[t.r.i]}})},t.triangles=function(n){var t=[];return ar(e(n)).cells.forEach(function(e,r){for(var i,u,o=e.site,a=e.edges.sort(Ve),l=-1,c=a.length,f=a[c-1].edge,s=f.l===o?f.r:f.l;++l<c;)i=f,u=s,f=a[l].edge,s=f.l===o?f.r:f.l,r<u.i&&r<s.i&&cr(o,u,s)<0&&t.push([n[r],n[u.i],n[s.i]])}),t},t.x=function(n){return arguments.length?(u=En(r=n),t):r},t.y=function(n){return arguments.length?(o=En(i=n),t):i},t.clipExtent=function(n){return arguments.length?(a=null==n?sl:n,t):a===sl?null:a},t.size=function(n){return arguments.length?t.clipExtent(n&&[[0,0],n]):a===sl?null:a&&a[1]},t)};var sl=[[-1e6,-1e6],[1e6,1e6]];ao.geom.delaunay=function(n){return ao.geom.voronoi().triangles(n)},ao.geom.quadtree=function(n,t,e,r,i){function u(n){function u(n,t,e,r,i,u,o,a){if(!isNaN(e)&&!isNaN(r))if(n.leaf){var l=n.x,f=n.y;if(null!=l)if(xo(l-e)+xo(f-r)<.01)c(n,t,e,r,i,u,o,a);else{var s=n.point;n.x=n.y=n.point=null,c(n,s,l,f,i,u,o,a),c(n,t,e,r,i,u,o,a)}else n.x=e,n.y=r,n.point=t}else c(n,t,e,r,i,u,o,a)}function c(n,t,e,r,i,o,a,l){var c=.5*(i+a),f=.5*(o+l),s=e>=c,h=r>=f,p=h<<1|s;n.leaf=!1,n=n.nodes[p]||(n.nodes[p]=hr()),s?i=c:a=c,h?o=f:l=f,u(n,t,e,r,i,o,a,l)}var f,s,h,p,g,v,d,y,m,M=En(a),x=En(l);if(null!=t)v=t,d=e,y=r,m=i;else if(y=m=-(v=d=1/0),s=[],h=[],g=n.length,o)for(p=0;g>p;++p)f=n[p],f.x<v&&(v=f.x),f.y<d&&(d=f.y),f.x>y&&(y=f.x),f.y>m&&(m=f.y),s.push(f.x),h.push(f.y);else for(p=0;g>p;++p){var b=+M(f=n[p],p),_=+x(f,p);v>b&&(v=b),d>_&&(d=_),b>y&&(y=b),_>m&&(m=_),s.push(b),h.push(_)}var w=y-v,S=m-d;w>S?m=d+w:y=v+S;var k=hr();if(k.add=function(n){u(k,n,+M(n,++p),+x(n,p),v,d,y,m)},k.visit=function(n){pr(n,k,v,d,y,m)},k.find=function(n){return gr(k,n[0],n[1],v,d,y,m)},p=-1,null==t){for(;++p<g;)u(k,n[p],s[p],h[p],v,d,y,m);--p}else n.forEach(k.add);return s=h=n=f=null,k}var o,a=Ce,l=ze;return(o=arguments.length)?(a=fr,l=sr,3===o&&(i=e,r=t,e=t=0),u(n)):(u.x=function(n){return arguments.length?(a=n,u):a},u.y=function(n){return arguments.length?(l=n,u):l},u.extent=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=+n[0][0],e=+n[0][1],r=+n[1][0],i=+n[1][1]),u):null==t?null:[[t,e],[r,i]]},u.size=function(n){return arguments.length?(null==n?t=e=r=i=null:(t=e=0,r=+n[0],i=+n[1]),u):null==t?null:[r-t,i-e]},u)},ao.interpolateRgb=vr,ao.interpolateObject=dr,ao.interpolateNumber=yr,ao.interpolateString=mr;var hl=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,pl=new RegExp(hl.source,"g");ao.interpolate=Mr,ao.interpolators=[function(n,t){var e=typeof t;return("string"===e?ua.has(t.toLowerCase())||/^(#|rgb\(|hsl\()/i.test(t)?vr:mr:t instanceof an?vr:Array.isArray(t)?xr:"object"===e&&isNaN(t)?dr:yr)(n,t)}],ao.interpolateArray=xr;var gl=function(){return m},vl=ao.map({linear:gl,poly:Er,quad:function(){return Sr},cubic:function(){return kr},sin:function(){return Ar},exp:function(){return Cr},circle:function(){return zr},elastic:Lr,back:qr,bounce:function(){return Tr}}),dl=ao.map({"in":m,out:_r,"in-out":wr,"out-in":function(n){return wr(_r(n))}});ao.ease=function(n){var t=n.indexOf("-"),e=t>=0?n.slice(0,t):n,r=t>=0?n.slice(t+1):"in";return e=vl.get(e)||gl,r=dl.get(r)||m,br(r(e.apply(null,lo.call(arguments,1))))},ao.interpolateHcl=Rr,ao.interpolateHsl=Dr,ao.interpolateLab=Pr,ao.interpolateRound=Ur,ao.transform=function(n){var t=fo.createElementNS(ao.ns.prefix.svg,"g");return(ao.transform=function(n){if(null!=n){t.setAttribute("transform",n);var e=t.transform.baseVal.consolidate()}return new jr(e?e.matrix:yl)})(n)},jr.prototype.toString=function(){return"translate("+this.translate+")rotate("+this.rotate+")skewX("+this.skew+")scale("+this.scale+")"};var yl={a:1,b:0,c:0,d:1,e:0,f:0};ao.interpolateTransform=$r,ao.layout={},ao.layout.bundle=function(){return function(n){for(var t=[],e=-1,r=n.length;++e<r;)t.push(Jr(n[e]));return t}},ao.layout.chord=function(){function n(){var n,c,s,h,p,g={},v=[],d=ao.range(u),y=[];for(e=[],r=[],n=0,h=-1;++h<u;){for(c=0,p=-1;++p<u;)c+=i[h][p];v.push(c),y.push(ao.range(u)),n+=c}for(o&&d.sort(function(n,t){return o(v[n],v[t])}),a&&y.forEach(function(n,t){n.sort(function(n,e){return a(i[t][n],i[t][e])})}),n=(Ho-f*u)/n,c=0,h=-1;++h<u;){for(s=c,p=-1;++p<u;){var m=d[h],M=y[m][p],x=i[m][M],b=c,_=c+=x*n;g[m+"-"+M]={index:m,subindex:M,startAngle:b,endAngle:_,value:x}}r[m]={index:m,startAngle:s,endAngle:c,value:v[m]},c+=f}for(h=-1;++h<u;)for(p=h-1;++p<u;){var w=g[h+"-"+p],S=g[p+"-"+h];(w.value||S.value)&&e.push(w.value<S.value?{source:S,target:w}:{source:w,target:S})}l&&t()}function t(){e.sort(function(n,t){return l((n.source.value+n.target.value)/2,(t.source.value+t.target.value)/2)})}var e,r,i,u,o,a,l,c={},f=0;return c.matrix=function(n){return arguments.length?(u=(i=n)&&i.length,e=r=null,c):i},c.padding=function(n){return arguments.length?(f=n,e=r=null,c):f},c.sortGroups=function(n){return arguments.length?(o=n,e=r=null,c):o},c.sortSubgroups=function(n){return arguments.length?(a=n,e=null,c):a},c.sortChords=function(n){return arguments.length?(l=n,e&&t(),c):l},c.chords=function(){return e||n(),e},c.groups=function(){return r||n(),r},c},ao.layout.force=function(){function n(n){return function(t,e,r,i){if(t.point!==n){var u=t.cx-n.x,o=t.cy-n.y,a=i-e,l=u*u+o*o;if(l>a*a/y){if(v>l){var c=t.charge/l;n.px-=u*c,n.py-=o*c}return!0}if(t.point&&l&&v>l){var c=t.pointCharge/l;n.px-=u*c,n.py-=o*c}}return!t.charge}}function t(n){n.px=ao.event.x,n.py=ao.event.y,l.resume()}var e,r,i,u,o,a,l={},c=ao.dispatch("start","tick","end"),f=[1,1],s=.9,h=ml,p=Ml,g=-30,v=xl,d=.1,y=.64,M=[],x=[];return l.tick=function(){if((i*=.99)<.005)return e=null,c.end({type:"end",alpha:i=0}),!0;var t,r,l,h,p,v,y,m,b,_=M.length,w=x.length;for(r=0;w>r;++r)l=x[r],h=l.source,p=l.target,m=p.x-h.x,b=p.y-h.y,(v=m*m+b*b)&&(v=i*o[r]*((v=Math.sqrt(v))-u[r])/v,m*=v,b*=v,p.x-=m*(y=h.weight+p.weight?h.weight/(h.weight+p.weight):.5),p.y-=b*y,h.x+=m*(y=1-y),h.y+=b*y);if((y=i*d)&&(m=f[0]/2,b=f[1]/2,r=-1,y))for(;++r<_;)l=M[r],l.x+=(m-l.x)*y,l.y+=(b-l.y)*y;if(g)for(ri(t=ao.geom.quadtree(M),i,a),r=-1;++r<_;)(l=M[r]).fixed||t.visit(n(l));for(r=-1;++r<_;)l=M[r],l.fixed?(l.x=l.px,l.y=l.py):(l.x-=(l.px-(l.px=l.x))*s,l.y-=(l.py-(l.py=l.y))*s);c.tick({type:"tick",alpha:i})},l.nodes=function(n){return arguments.length?(M=n,l):M},l.links=function(n){return arguments.length?(x=n,l):x},l.size=function(n){return arguments.length?(f=n,l):f},l.linkDistance=function(n){return arguments.length?(h="function"==typeof n?n:+n,l):h},l.distance=l.linkDistance,l.linkStrength=function(n){return arguments.length?(p="function"==typeof n?n:+n,l):p},l.friction=function(n){return arguments.length?(s=+n,l):s},l.charge=function(n){return arguments.length?(g="function"==typeof n?n:+n,l):g},l.chargeDistance=function(n){return arguments.length?(v=n*n,l):Math.sqrt(v)},l.gravity=function(n){return arguments.length?(d=+n,l):d},l.theta=function(n){return arguments.length?(y=n*n,l):Math.sqrt(y)},l.alpha=function(n){return arguments.length?(n=+n,i?n>0?i=n:(e.c=null,e.t=NaN,e=null,c.end({type:"end",alpha:i=0})):n>0&&(c.start({type:"start",alpha:i=n}),e=qn(l.tick)),l):i},l.start=function(){function n(n,r){if(!e){for(e=new Array(i),l=0;i>l;++l)e[l]=[];for(l=0;c>l;++l){var u=x[l];e[u.source.index].push(u.target),e[u.target.index].push(u.source)}}for(var o,a=e[t],l=-1,f=a.length;++l<f;)if(!isNaN(o=a[l][n]))return o;return Math.random()*r}var t,e,r,i=M.length,c=x.length,s=f[0],v=f[1];for(t=0;i>t;++t)(r=M[t]).index=t,r.weight=0;for(t=0;c>t;++t)r=x[t],"number"==typeof r.source&&(r.source=M[r.source]),"number"==typeof r.target&&(r.target=M[r.target]),++r.source.weight,++r.target.weight;for(t=0;i>t;++t)r=M[t],isNaN(r.x)&&(r.x=n("x",s)),isNaN(r.y)&&(r.y=n("y",v)),isNaN(r.px)&&(r.px=r.x),isNaN(r.py)&&(r.py=r.y);if(u=[],"function"==typeof h)for(t=0;c>t;++t)u[t]=+h.call(this,x[t],t);else for(t=0;c>t;++t)u[t]=h;if(o=[],"function"==typeof p)for(t=0;c>t;++t)o[t]=+p.call(this,x[t],t);else for(t=0;c>t;++t)o[t]=p;if(a=[],"function"==typeof g)for(t=0;i>t;++t)a[t]=+g.call(this,M[t],t);else for(t=0;i>t;++t)a[t]=g;return l.resume()},l.resume=function(){return l.alpha(.1)},l.stop=function(){return l.alpha(0)},l.drag=function(){return r||(r=ao.behavior.drag().origin(m).on("dragstart.force",Qr).on("drag.force",t).on("dragend.force",ni)),arguments.length?void this.on("mouseover.force",ti).on("mouseout.force",ei).call(r):r},ao.rebind(l,c,"on")};var ml=20,Ml=1,xl=1/0;ao.layout.hierarchy=function(){function n(i){var u,o=[i],a=[];for(i.depth=0;null!=(u=o.pop());)if(a.push(u),(c=e.call(n,u,u.depth))&&(l=c.length)){for(var l,c,f;--l>=0;)o.push(f=c[l]),f.parent=u,f.depth=u.depth+1;r&&(u.value=0),u.children=c}else r&&(u.value=+r.call(n,u,u.depth)||0),delete u.children;return oi(i,function(n){var e,i;t&&(e=n.children)&&e.sort(t),r&&(i=n.parent)&&(i.value+=n.value)}),a}var t=ci,e=ai,r=li;return n.sort=function(e){return arguments.length?(t=e,n):t},n.children=function(t){return arguments.length?(e=t,n):e},n.value=function(t){return arguments.length?(r=t,n):r},n.revalue=function(t){return r&&(ui(t,function(n){n.children&&(n.value=0)}),oi(t,function(t){var e;t.children||(t.value=+r.call(n,t,t.depth)||0),(e=t.parent)&&(e.value+=t.value)})),t},n},ao.layout.partition=function(){function n(t,e,r,i){var u=t.children;if(t.x=e,t.y=t.depth*i,t.dx=r,t.dy=i,u&&(o=u.length)){var o,a,l,c=-1;for(r=t.value?r/t.value:0;++c<o;)n(a=u[c],e,l=a.value*r,i),e+=l}}function t(n){var e=n.children,r=0;if(e&&(i=e.length))for(var i,u=-1;++u<i;)r=Math.max(r,t(e[u]));return 1+r}function e(e,u){var o=r.call(this,e,u);return n(o[0],0,i[0],i[1]/t(o[0])),o}var r=ao.layout.hierarchy(),i=[1,1];return e.size=function(n){return arguments.length?(i=n,e):i},ii(e,r)},ao.layout.pie=function(){function n(o){var a,l=o.length,c=o.map(function(e,r){return+t.call(n,e,r)}),f=+("function"==typeof r?r.apply(this,arguments):r),s=("function"==typeof i?i.apply(this,arguments):i)-f,h=Math.min(Math.abs(s)/l,+("function"==typeof u?u.apply(this,arguments):u)),p=h*(0>s?-1:1),g=ao.sum(c),v=g?(s-l*p)/g:0,d=ao.range(l),y=[];return null!=e&&d.sort(e===bl?function(n,t){return c[t]-c[n]}:function(n,t){return e(o[n],o[t])}),d.forEach(function(n){y[n]={data:o[n],value:a=c[n],startAngle:f,endAngle:f+=a*v+p,padAngle:h}}),y}var t=Number,e=bl,r=0,i=Ho,u=0;return n.value=function(e){return arguments.length?(t=e,n):t},n.sort=function(t){return arguments.length?(e=t,n):e},n.startAngle=function(t){return arguments.length?(r=t,n):r},n.endAngle=function(t){return arguments.length?(i=t,n):i},n.padAngle=function(t){return arguments.length?(u=t,n):u},n};var bl={};ao.layout.stack=function(){function n(a,l){if(!(h=a.length))return a;var c=a.map(function(e,r){return t.call(n,e,r)}),f=c.map(function(t){return t.map(function(t,e){return[u.call(n,t,e),o.call(n,t,e)]})}),s=e.call(n,f,l);c=ao.permute(c,s),f=ao.permute(f,s);var h,p,g,v,d=r.call(n,f,l),y=c[0].length;for(g=0;y>g;++g)for(i.call(n,c[0][g],v=d[g],f[0][g][1]),p=1;h>p;++p)i.call(n,c[p][g],v+=f[p-1][g][1],f[p][g][1]);return a}var t=m,e=gi,r=vi,i=pi,u=si,o=hi;return n.values=function(e){return arguments.length?(t=e,n):t},n.order=function(t){return arguments.length?(e="function"==typeof t?t:_l.get(t)||gi,n):e},n.offset=function(t){return arguments.length?(r="function"==typeof t?t:wl.get(t)||vi,n):r},n.x=function(t){return arguments.length?(u=t,n):u},n.y=function(t){return arguments.length?(o=t,n):o},n.out=function(t){return arguments.length?(i=t,n):i},n};var _l=ao.map({"inside-out":function(n){var t,e,r=n.length,i=n.map(di),u=n.map(yi),o=ao.range(r).sort(function(n,t){return i[n]-i[t]}),a=0,l=0,c=[],f=[];for(t=0;r>t;++t)e=o[t],l>a?(a+=u[e],c.push(e)):(l+=u[e],f.push(e));return f.reverse().concat(c)},reverse:function(n){return ao.range(n.length).reverse()},"default":gi}),wl=ao.map({silhouette:function(n){var t,e,r,i=n.length,u=n[0].length,o=[],a=0,l=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];r>a&&(a=r),o.push(r)}for(e=0;u>e;++e)l[e]=(a-o[e])/2;return l},wiggle:function(n){var t,e,r,i,u,o,a,l,c,f=n.length,s=n[0],h=s.length,p=[];for(p[0]=l=c=0,e=1;h>e;++e){for(t=0,i=0;f>t;++t)i+=n[t][e][1];for(t=0,u=0,a=s[e][0]-s[e-1][0];f>t;++t){for(r=0,o=(n[t][e][1]-n[t][e-1][1])/(2*a);t>r;++r)o+=(n[r][e][1]-n[r][e-1][1])/a;u+=o*n[t][e][1]}p[e]=l-=i?u/i*a:0,c>l&&(c=l)}for(e=0;h>e;++e)p[e]-=c;return p},expand:function(n){var t,e,r,i=n.length,u=n[0].length,o=1/i,a=[];for(e=0;u>e;++e){for(t=0,r=0;i>t;t++)r+=n[t][e][1];if(r)for(t=0;i>t;t++)n[t][e][1]/=r;else for(t=0;i>t;t++)n[t][e][1]=o}for(e=0;u>e;++e)a[e]=0;return a},zero:vi});ao.layout.histogram=function(){function n(n,u){for(var o,a,l=[],c=n.map(e,this),f=r.call(this,c,u),s=i.call(this,f,c,u),u=-1,h=c.length,p=s.length-1,g=t?1:1/h;++u<p;)o=l[u]=[],o.dx=s[u+1]-(o.x=s[u]),o.y=0;if(p>0)for(u=-1;++u<h;)a=c[u],a>=f[0]&&a<=f[1]&&(o=l[ao.bisect(s,a,1,p)-1],o.y+=g,o.push(n[u]));return l}var t=!0,e=Number,r=bi,i=Mi;return n.value=function(t){return arguments.length?(e=t,n):e},n.range=function(t){return arguments.length?(r=En(t),n):r},n.bins=function(t){return arguments.length?(i="number"==typeof t?function(n){return xi(n,t)}:En(t),n):i},n.frequency=function(e){return arguments.length?(t=!!e,n):t},n},ao.layout.pack=function(){function n(n,u){var o=e.call(this,n,u),a=o[0],l=i[0],c=i[1],f=null==t?Math.sqrt:"function"==typeof t?t:function(){return t};if(a.x=a.y=0,oi(a,function(n){n.r=+f(n.value)}),oi(a,Ni),r){var s=r*(t?1:Math.max(2*a.r/l,2*a.r/c))/2;oi(a,function(n){n.r+=s}),oi(a,Ni),oi(a,function(n){n.r-=s})}return Ci(a,l/2,c/2,t?1:1/Math.max(2*a.r/l,2*a.r/c)),o}var t,e=ao.layout.hierarchy().sort(_i),r=0,i=[1,1];return n.size=function(t){return arguments.length?(i=t,n):i},n.radius=function(e){return arguments.length?(t=null==e||"function"==typeof e?e:+e,n):t},n.padding=function(t){return arguments.length?(r=+t,n):r},ii(n,e)},ao.layout.tree=function(){function n(n,i){var f=o.call(this,n,i),s=f[0],h=t(s);if(oi(h,e),h.parent.m=-h.z,ui(h,r),c)ui(s,u);else{var p=s,g=s,v=s;ui(s,function(n){n.x<p.x&&(p=n),n.x>g.x&&(g=n),n.depth>v.depth&&(v=n)});var d=a(p,g)/2-p.x,y=l[0]/(g.x+a(g,p)/2+d),m=l[1]/(v.depth||1);ui(s,function(n){n.x=(n.x+d)*y,n.y=n.depth*m})}return f}function t(n){for(var t,e={A:null,children:[n]},r=[e];null!=(t=r.pop());)for(var i,u=t.children,o=0,a=u.length;a>o;++o)r.push((u[o]=i={_:u[o],parent:t,children:(i=u[o].children)&&i.slice()||[],A:null,a:null,z:0,m:0,c:0,s:0,t:null,i:o}).a=i);return e.children[0]}function e(n){var t=n.children,e=n.parent.children,r=n.i?e[n.i-1]:null;if(t.length){Di(n);var u=(t[0].z+t[t.length-1].z)/2;r?(n.z=r.z+a(n._,r._),n.m=n.z-u):n.z=u}else r&&(n.z=r.z+a(n._,r._));n.parent.A=i(n,r,n.parent.A||e[0])}function r(n){n._.x=n.z+n.parent.m,n.m+=n.parent.m}function i(n,t,e){if(t){for(var r,i=n,u=n,o=t,l=i.parent.children[0],c=i.m,f=u.m,s=o.m,h=l.m;o=Ti(o),i=qi(i),o&&i;)l=qi(l),u=Ti(u),u.a=n,r=o.z+s-i.z-c+a(o._,i._),r>0&&(Ri(Pi(o,n,e),n,r),c+=r,f+=r),s+=o.m,c+=i.m,h+=l.m,f+=u.m;o&&!Ti(u)&&(u.t=o,u.m+=s-f),i&&!qi(l)&&(l.t=i,l.m+=c-h,e=n)}return e}function u(n){n.x*=l[0],n.y=n.depth*l[1]}var o=ao.layout.hierarchy().sort(null).value(null),a=Li,l=[1,1],c=null;return n.separation=function(t){return arguments.length?(a=t,n):a},n.size=function(t){return arguments.length?(c=null==(l=t)?u:null,n):c?null:l},n.nodeSize=function(t){return arguments.length?(c=null==(l=t)?null:u,n):c?l:null},ii(n,o)},ao.layout.cluster=function(){function n(n,u){var o,a=t.call(this,n,u),l=a[0],c=0;oi(l,function(n){var t=n.children;t&&t.length?(n.x=ji(t),n.y=Ui(t)):(n.x=o?c+=e(n,o):0,n.y=0,o=n)});var f=Fi(l),s=Hi(l),h=f.x-e(f,s)/2,p=s.x+e(s,f)/2;return oi(l,i?function(n){n.x=(n.x-l.x)*r[0],n.y=(l.y-n.y)*r[1]}:function(n){n.x=(n.x-h)/(p-h)*r[0],n.y=(1-(l.y?n.y/l.y:1))*r[1]}),a}var t=ao.layout.hierarchy().sort(null).value(null),e=Li,r=[1,1],i=!1;return n.separation=function(t){return arguments.length?(e=t,n):e},n.size=function(t){return arguments.length?(i=null==(r=t),n):i?null:r},n.nodeSize=function(t){return arguments.length?(i=null!=(r=t),n):i?r:null},ii(n,t)},ao.layout.treemap=function(){function n(n,t){for(var e,r,i=-1,u=n.length;++i<u;)r=(e=n[i]).value*(0>t?0:t),e.area=isNaN(r)||0>=r?0:r}function t(e){var u=e.children;if(u&&u.length){var o,a,l,c=s(e),f=[],h=u.slice(),g=1/0,v="slice"===p?c.dx:"dice"===p?c.dy:"slice-dice"===p?1&e.depth?c.dy:c.dx:Math.min(c.dx,c.dy);for(n(h,c.dx*c.dy/e.value),f.area=0;(l=h.length)>0;)f.push(o=h[l-1]),f.area+=o.area,"squarify"!==p||(a=r(f,v))<=g?(h.pop(),g=a):(f.area-=f.pop().area,i(f,v,c,!1),v=Math.min(c.dx,c.dy),f.length=f.area=0,g=1/0);f.length&&(i(f,v,c,!0),f.length=f.area=0),u.forEach(t)}}function e(t){var r=t.children;if(r&&r.length){var u,o=s(t),a=r.slice(),l=[];for(n(a,o.dx*o.dy/t.value),l.area=0;u=a.pop();)l.push(u),l.area+=u.area,null!=u.z&&(i(l,u.z?o.dx:o.dy,o,!a.length),l.length=l.area=0);r.forEach(e)}}function r(n,t){for(var e,r=n.area,i=0,u=1/0,o=-1,a=n.length;++o<a;)(e=n[o].area)&&(u>e&&(u=e),e>i&&(i=e));return r*=r,t*=t,r?Math.max(t*i*g/r,r/(t*u*g)):1/0}function i(n,t,e,r){var i,u=-1,o=n.length,a=e.x,c=e.y,f=t?l(n.area/t):0;
+if(t==e.dx){for((r||f>e.dy)&&(f=e.dy);++u<o;)i=n[u],i.x=a,i.y=c,i.dy=f,a+=i.dx=Math.min(e.x+e.dx-a,f?l(i.area/f):0);i.z=!0,i.dx+=e.x+e.dx-a,e.y+=f,e.dy-=f}else{for((r||f>e.dx)&&(f=e.dx);++u<o;)i=n[u],i.x=a,i.y=c,i.dx=f,c+=i.dy=Math.min(e.y+e.dy-c,f?l(i.area/f):0);i.z=!1,i.dy+=e.y+e.dy-c,e.x+=f,e.dx-=f}}function u(r){var i=o||a(r),u=i[0];return u.x=u.y=0,u.value?(u.dx=c[0],u.dy=c[1]):u.dx=u.dy=0,o&&a.revalue(u),n([u],u.dx*u.dy/u.value),(o?e:t)(u),h&&(o=i),i}var o,a=ao.layout.hierarchy(),l=Math.round,c=[1,1],f=null,s=Oi,h=!1,p="squarify",g=.5*(1+Math.sqrt(5));return u.size=function(n){return arguments.length?(c=n,u):c},u.padding=function(n){function t(t){var e=n.call(u,t,t.depth);return null==e?Oi(t):Ii(t,"number"==typeof e?[e,e,e,e]:e)}function e(t){return Ii(t,n)}if(!arguments.length)return f;var r;return s=null==(f=n)?Oi:"function"==(r=typeof n)?t:"number"===r?(n=[n,n,n,n],e):e,u},u.round=function(n){return arguments.length?(l=n?Math.round:Number,u):l!=Number},u.sticky=function(n){return arguments.length?(h=n,o=null,u):h},u.ratio=function(n){return arguments.length?(g=n,u):g},u.mode=function(n){return arguments.length?(p=n+"",u):p},ii(u,a)},ao.random={normal:function(n,t){var e=arguments.length;return 2>e&&(t=1),1>e&&(n=0),function(){var e,r,i;do e=2*Math.random()-1,r=2*Math.random()-1,i=e*e+r*r;while(!i||i>1);return n+t*e*Math.sqrt(-2*Math.log(i)/i)}},logNormal:function(){var n=ao.random.normal.apply(ao,arguments);return function(){return Math.exp(n())}},bates:function(n){var t=ao.random.irwinHall(n);return function(){return t()/n}},irwinHall:function(n){return function(){for(var t=0,e=0;n>e;e++)t+=Math.random();return t}}},ao.scale={};var Sl={floor:m,ceil:m};ao.scale.linear=function(){return Wi([0,1],[0,1],Mr,!1)};var kl={s:1,g:1,p:1,r:1,e:1};ao.scale.log=function(){return ru(ao.scale.linear().domain([0,1]),10,!0,[1,10])};var Nl=ao.format(".0e"),El={floor:function(n){return-Math.ceil(-n)},ceil:function(n){return-Math.floor(-n)}};ao.scale.pow=function(){return iu(ao.scale.linear(),1,[0,1])},ao.scale.sqrt=function(){return ao.scale.pow().exponent(.5)},ao.scale.ordinal=function(){return ou([],{t:"range",a:[[]]})},ao.scale.category10=function(){return ao.scale.ordinal().range(Al)},ao.scale.category20=function(){return ao.scale.ordinal().range(Cl)},ao.scale.category20b=function(){return ao.scale.ordinal().range(zl)},ao.scale.category20c=function(){return ao.scale.ordinal().range(Ll)};var Al=[2062260,16744206,2924588,14034728,9725885,9197131,14907330,8355711,12369186,1556175].map(xn),Cl=[2062260,11454440,16744206,16759672,2924588,10018698,14034728,16750742,9725885,12955861,9197131,12885140,14907330,16234194,8355711,13092807,12369186,14408589,1556175,10410725].map(xn),zl=[3750777,5395619,7040719,10264286,6519097,9216594,11915115,13556636,9202993,12426809,15186514,15190932,8666169,11356490,14049643,15177372,8077683,10834324,13528509,14589654].map(xn),Ll=[3244733,7057110,10406625,13032431,15095053,16616764,16625259,16634018,3253076,7652470,10607003,13101504,7695281,10394312,12369372,14342891,6513507,9868950,12434877,14277081].map(xn);ao.scale.quantile=function(){return au([],[])},ao.scale.quantize=function(){return lu(0,1,[0,1])},ao.scale.threshold=function(){return cu([.5],[0,1])},ao.scale.identity=function(){return fu([0,1])},ao.svg={},ao.svg.arc=function(){function n(){var n=Math.max(0,+e.apply(this,arguments)),c=Math.max(0,+r.apply(this,arguments)),f=o.apply(this,arguments)-Io,s=a.apply(this,arguments)-Io,h=Math.abs(s-f),p=f>s?0:1;if(n>c&&(g=c,c=n,n=g),h>=Oo)return t(c,p)+(n?t(n,1-p):"")+"Z";var g,v,d,y,m,M,x,b,_,w,S,k,N=0,E=0,A=[];if((y=(+l.apply(this,arguments)||0)/2)&&(d=u===ql?Math.sqrt(n*n+c*c):+u.apply(this,arguments),p||(E*=-1),c&&(E=tn(d/c*Math.sin(y))),n&&(N=tn(d/n*Math.sin(y)))),c){m=c*Math.cos(f+E),M=c*Math.sin(f+E),x=c*Math.cos(s-E),b=c*Math.sin(s-E);var C=Math.abs(s-f-2*E)<=Fo?0:1;if(E&&yu(m,M,x,b)===p^C){var z=(f+s)/2;m=c*Math.cos(z),M=c*Math.sin(z),x=b=null}}else m=M=0;if(n){_=n*Math.cos(s-N),w=n*Math.sin(s-N),S=n*Math.cos(f+N),k=n*Math.sin(f+N);var L=Math.abs(f-s+2*N)<=Fo?0:1;if(N&&yu(_,w,S,k)===1-p^L){var q=(f+s)/2;_=n*Math.cos(q),w=n*Math.sin(q),S=k=null}}else _=w=0;if(h>Uo&&(g=Math.min(Math.abs(c-n)/2,+i.apply(this,arguments)))>.001){v=c>n^p?0:1;var T=g,R=g;if(Fo>h){var D=null==S?[_,w]:null==x?[m,M]:Re([m,M],[S,k],[x,b],[_,w]),P=m-D[0],U=M-D[1],j=x-D[0],F=b-D[1],H=1/Math.sin(Math.acos((P*j+U*F)/(Math.sqrt(P*P+U*U)*Math.sqrt(j*j+F*F)))/2),O=Math.sqrt(D[0]*D[0]+D[1]*D[1]);R=Math.min(g,(n-O)/(H-1)),T=Math.min(g,(c-O)/(H+1))}if(null!=x){var I=mu(null==S?[_,w]:[S,k],[m,M],c,T,p),Y=mu([x,b],[_,w],c,T,p);g===T?A.push("M",I[0],"A",T,",",T," 0 0,",v," ",I[1],"A",c,",",c," 0 ",1-p^yu(I[1][0],I[1][1],Y[1][0],Y[1][1]),",",p," ",Y[1],"A",T,",",T," 0 0,",v," ",Y[0]):A.push("M",I[0],"A",T,",",T," 0 1,",v," ",Y[0])}else A.push("M",m,",",M);if(null!=S){var Z=mu([m,M],[S,k],n,-R,p),V=mu([_,w],null==x?[m,M]:[x,b],n,-R,p);g===R?A.push("L",V[0],"A",R,",",R," 0 0,",v," ",V[1],"A",n,",",n," 0 ",p^yu(V[1][0],V[1][1],Z[1][0],Z[1][1]),",",1-p," ",Z[1],"A",R,",",R," 0 0,",v," ",Z[0]):A.push("L",V[0],"A",R,",",R," 0 0,",v," ",Z[0])}else A.push("L",_,",",w)}else A.push("M",m,",",M),null!=x&&A.push("A",c,",",c," 0 ",C,",",p," ",x,",",b),A.push("L",_,",",w),null!=S&&A.push("A",n,",",n," 0 ",L,",",1-p," ",S,",",k);return A.push("Z"),A.join("")}function t(n,t){return"M0,"+n+"A"+n+","+n+" 0 1,"+t+" 0,"+-n+"A"+n+","+n+" 0 1,"+t+" 0,"+n}var e=hu,r=pu,i=su,u=ql,o=gu,a=vu,l=du;return n.innerRadius=function(t){return arguments.length?(e=En(t),n):e},n.outerRadius=function(t){return arguments.length?(r=En(t),n):r},n.cornerRadius=function(t){return arguments.length?(i=En(t),n):i},n.padRadius=function(t){return arguments.length?(u=t==ql?ql:En(t),n):u},n.startAngle=function(t){return arguments.length?(o=En(t),n):o},n.endAngle=function(t){return arguments.length?(a=En(t),n):a},n.padAngle=function(t){return arguments.length?(l=En(t),n):l},n.centroid=function(){var n=(+e.apply(this,arguments)+ +r.apply(this,arguments))/2,t=(+o.apply(this,arguments)+ +a.apply(this,arguments))/2-Io;return[Math.cos(t)*n,Math.sin(t)*n]},n};var ql="auto";ao.svg.line=function(){return Mu(m)};var Tl=ao.map({linear:xu,"linear-closed":bu,step:_u,"step-before":wu,"step-after":Su,basis:zu,"basis-open":Lu,"basis-closed":qu,bundle:Tu,cardinal:Eu,"cardinal-open":ku,"cardinal-closed":Nu,monotone:Fu});Tl.forEach(function(n,t){t.key=n,t.closed=/-closed$/.test(n)});var Rl=[0,2/3,1/3,0],Dl=[0,1/3,2/3,0],Pl=[0,1/6,2/3,1/6];ao.svg.line.radial=function(){var n=Mu(Hu);return n.radius=n.x,delete n.x,n.angle=n.y,delete n.y,n},wu.reverse=Su,Su.reverse=wu,ao.svg.area=function(){return Ou(m)},ao.svg.area.radial=function(){var n=Ou(Hu);return n.radius=n.x,delete n.x,n.innerRadius=n.x0,delete n.x0,n.outerRadius=n.x1,delete n.x1,n.angle=n.y,delete n.y,n.startAngle=n.y0,delete n.y0,n.endAngle=n.y1,delete n.y1,n},ao.svg.chord=function(){function n(n,a){var l=t(this,u,n,a),c=t(this,o,n,a);return"M"+l.p0+r(l.r,l.p1,l.a1-l.a0)+(e(l,c)?i(l.r,l.p1,l.r,l.p0):i(l.r,l.p1,c.r,c.p0)+r(c.r,c.p1,c.a1-c.a0)+i(c.r,c.p1,l.r,l.p0))+"Z"}function t(n,t,e,r){var i=t.call(n,e,r),u=a.call(n,i,r),o=l.call(n,i,r)-Io,f=c.call(n,i,r)-Io;return{r:u,a0:o,a1:f,p0:[u*Math.cos(o),u*Math.sin(o)],p1:[u*Math.cos(f),u*Math.sin(f)]}}function e(n,t){return n.a0==t.a0&&n.a1==t.a1}function r(n,t,e){return"A"+n+","+n+" 0 "+ +(e>Fo)+",1 "+t}function i(n,t,e,r){return"Q 0,0 "+r}var u=Me,o=xe,a=Iu,l=gu,c=vu;return n.radius=function(t){return arguments.length?(a=En(t),n):a},n.source=function(t){return arguments.length?(u=En(t),n):u},n.target=function(t){return arguments.length?(o=En(t),n):o},n.startAngle=function(t){return arguments.length?(l=En(t),n):l},n.endAngle=function(t){return arguments.length?(c=En(t),n):c},n},ao.svg.diagonal=function(){function n(n,i){var u=t.call(this,n,i),o=e.call(this,n,i),a=(u.y+o.y)/2,l=[u,{x:u.x,y:a},{x:o.x,y:a},o];return l=l.map(r),"M"+l[0]+"C"+l[1]+" "+l[2]+" "+l[3]}var t=Me,e=xe,r=Yu;return n.source=function(e){return arguments.length?(t=En(e),n):t},n.target=function(t){return arguments.length?(e=En(t),n):e},n.projection=function(t){return arguments.length?(r=t,n):r},n},ao.svg.diagonal.radial=function(){var n=ao.svg.diagonal(),t=Yu,e=n.projection;return n.projection=function(n){return arguments.length?e(Zu(t=n)):t},n},ao.svg.symbol=function(){function n(n,r){return(Ul.get(t.call(this,n,r))||$u)(e.call(this,n,r))}var t=Xu,e=Vu;return n.type=function(e){return arguments.length?(t=En(e),n):t},n.size=function(t){return arguments.length?(e=En(t),n):e},n};var Ul=ao.map({circle:$u,cross:function(n){var t=Math.sqrt(n/5)/2;return"M"+-3*t+","+-t+"H"+-t+"V"+-3*t+"H"+t+"V"+-t+"H"+3*t+"V"+t+"H"+t+"V"+3*t+"H"+-t+"V"+t+"H"+-3*t+"Z"},diamond:function(n){var t=Math.sqrt(n/(2*Fl)),e=t*Fl;return"M0,"+-t+"L"+e+",0 0,"+t+" "+-e+",0Z"},square:function(n){var t=Math.sqrt(n)/2;return"M"+-t+","+-t+"L"+t+","+-t+" "+t+","+t+" "+-t+","+t+"Z"},"triangle-down":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+e+"L"+t+","+-e+" "+-t+","+-e+"Z"},"triangle-up":function(n){var t=Math.sqrt(n/jl),e=t*jl/2;return"M0,"+-e+"L"+t+","+e+" "+-t+","+e+"Z"}});ao.svg.symbolTypes=Ul.keys();var jl=Math.sqrt(3),Fl=Math.tan(30*Yo);Co.transition=function(n){for(var t,e,r=Hl||++Zl,i=Ku(n),u=[],o=Ol||{time:Date.now(),ease:Nr,delay:0,duration:250},a=-1,l=this.length;++a<l;){u.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(e=c[f])&&Qu(e,f,i,r,o),t.push(e)}return Wu(u,i,r)},Co.interrupt=function(n){return this.each(null==n?Il:Bu(Ku(n)))};var Hl,Ol,Il=Bu(Ku()),Yl=[],Zl=0;Yl.call=Co.call,Yl.empty=Co.empty,Yl.node=Co.node,Yl.size=Co.size,ao.transition=function(n,t){return n&&n.transition?Hl?n.transition(t):n:ao.selection().transition(n)},ao.transition.prototype=Yl,Yl.select=function(n){var t,e,r,i=this.id,u=this.namespace,o=[];n=A(n);for(var a=-1,l=this.length;++a<l;){o.push(t=[]);for(var c=this[a],f=-1,s=c.length;++f<s;)(r=c[f])&&(e=n.call(r,r.__data__,f,a))?("__data__"in r&&(e.__data__=r.__data__),Qu(e,f,u,i,r[u][i]),t.push(e)):t.push(null)}return Wu(o,u,i)},Yl.selectAll=function(n){var t,e,r,i,u,o=this.id,a=this.namespace,l=[];n=C(n);for(var c=-1,f=this.length;++c<f;)for(var s=this[c],h=-1,p=s.length;++h<p;)if(r=s[h]){u=r[a][o],e=n.call(r,r.__data__,h,c),l.push(t=[]);for(var g=-1,v=e.length;++g<v;)(i=e[g])&&Qu(i,g,a,o,u),t.push(i)}return Wu(l,a,o)},Yl.filter=function(n){var t,e,r,i=[];"function"!=typeof n&&(n=O(n));for(var u=0,o=this.length;o>u;u++){i.push(t=[]);for(var e=this[u],a=0,l=e.length;l>a;a++)(r=e[a])&&n.call(r,r.__data__,a,u)&&t.push(r)}return Wu(i,this.namespace,this.id)},Yl.tween=function(n,t){var e=this.id,r=this.namespace;return arguments.length<2?this.node()[r][e].tween.get(n):Y(this,null==t?function(t){t[r][e].tween.remove(n)}:function(i){i[r][e].tween.set(n,t)})},Yl.attr=function(n,t){function e(){this.removeAttribute(a)}function r(){this.removeAttributeNS(a.space,a.local)}function i(n){return null==n?e:(n+="",function(){var t,e=this.getAttribute(a);return e!==n&&(t=o(e,n),function(n){this.setAttribute(a,t(n))})})}function u(n){return null==n?r:(n+="",function(){var t,e=this.getAttributeNS(a.space,a.local);return e!==n&&(t=o(e,n),function(n){this.setAttributeNS(a.space,a.local,t(n))})})}if(arguments.length<2){for(t in n)this.attr(t,n[t]);return this}var o="transform"==n?$r:Mr,a=ao.ns.qualify(n);return Ju(this,"attr."+n,t,a.local?u:i)},Yl.attrTween=function(n,t){function e(n,e){var r=t.call(this,n,e,this.getAttribute(i));return r&&function(n){this.setAttribute(i,r(n))}}function r(n,e){var r=t.call(this,n,e,this.getAttributeNS(i.space,i.local));return r&&function(n){this.setAttributeNS(i.space,i.local,r(n))}}var i=ao.ns.qualify(n);return this.tween("attr."+n,i.local?r:e)},Yl.style=function(n,e,r){function i(){this.style.removeProperty(n)}function u(e){return null==e?i:(e+="",function(){var i,u=t(this).getComputedStyle(this,null).getPropertyValue(n);return u!==e&&(i=Mr(u,e),function(t){this.style.setProperty(n,i(t),r)})})}var o=arguments.length;if(3>o){if("string"!=typeof n){2>o&&(e="");for(r in n)this.style(r,n[r],e);return this}r=""}return Ju(this,"style."+n,e,u)},Yl.styleTween=function(n,e,r){function i(i,u){var o=e.call(this,i,u,t(this).getComputedStyle(this,null).getPropertyValue(n));return o&&function(t){this.style.setProperty(n,o(t),r)}}return arguments.length<3&&(r=""),this.tween("style."+n,i)},Yl.text=function(n){return Ju(this,"text",n,Gu)},Yl.remove=function(){var n=this.namespace;return this.each("end.transition",function(){var t;this[n].count<2&&(t=this.parentNode)&&t.removeChild(this)})},Yl.ease=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].ease:("function"!=typeof n&&(n=ao.ease.apply(ao,arguments)),Y(this,function(r){r[e][t].ease=n}))},Yl.delay=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].delay:Y(this,"function"==typeof n?function(r,i,u){r[e][t].delay=+n.call(r,r.__data__,i,u)}:(n=+n,function(r){r[e][t].delay=n}))},Yl.duration=function(n){var t=this.id,e=this.namespace;return arguments.length<1?this.node()[e][t].duration:Y(this,"function"==typeof n?function(r,i,u){r[e][t].duration=Math.max(1,n.call(r,r.__data__,i,u))}:(n=Math.max(1,n),function(r){r[e][t].duration=n}))},Yl.each=function(n,t){var e=this.id,r=this.namespace;if(arguments.length<2){var i=Ol,u=Hl;try{Hl=e,Y(this,function(t,i,u){Ol=t[r][e],n.call(t,t.__data__,i,u)})}finally{Ol=i,Hl=u}}else Y(this,function(i){var u=i[r][e];(u.event||(u.event=ao.dispatch("start","end","interrupt"))).on(n,t)});return this},Yl.transition=function(){for(var n,t,e,r,i=this.id,u=++Zl,o=this.namespace,a=[],l=0,c=this.length;c>l;l++){a.push(n=[]);for(var t=this[l],f=0,s=t.length;s>f;f++)(e=t[f])&&(r=e[o][i],Qu(e,f,o,u,{time:r.time,ease:r.ease,delay:r.delay+r.duration,duration:r.duration})),n.push(e)}return Wu(a,o,u)},ao.svg.axis=function(){function n(n){n.each(function(){var n,c=ao.select(this),f=this.__chart__||e,s=this.__chart__=e.copy(),h=null==l?s.ticks?s.ticks.apply(s,a):s.domain():l,p=null==t?s.tickFormat?s.tickFormat.apply(s,a):m:t,g=c.selectAll(".tick").data(h,s),v=g.enter().insert("g",".domain").attr("class","tick").style("opacity",Uo),d=ao.transition(g.exit()).style("opacity",Uo).remove(),y=ao.transition(g.order()).style("opacity",1),M=Math.max(i,0)+o,x=Zi(s),b=c.selectAll(".domain").data([0]),_=(b.enter().append("path").attr("class","domain"),ao.transition(b));v.append("line"),v.append("text");var w,S,k,N,E=v.select("line"),A=y.select("line"),C=g.select("text").text(p),z=v.select("text"),L=y.select("text"),q="top"===r||"left"===r?-1:1;if("bottom"===r||"top"===r?(n=no,w="x",k="y",S="x2",N="y2",C.attr("dy",0>q?"0em":".71em").style("text-anchor","middle"),_.attr("d","M"+x[0]+","+q*u+"V0H"+x[1]+"V"+q*u)):(n=to,w="y",k="x",S="y2",N="x2",C.attr("dy",".32em").style("text-anchor",0>q?"end":"start"),_.attr("d","M"+q*u+","+x[0]+"H0V"+x[1]+"H"+q*u)),E.attr(N,q*i),z.attr(k,q*M),A.attr(S,0).attr(N,q*i),L.attr(w,0).attr(k,q*M),s.rangeBand){var T=s,R=T.rangeBand()/2;f=s=function(n){return T(n)+R}}else f.rangeBand?f=s:d.call(n,s,f);v.call(n,f,s),y.call(n,s,s)})}var t,e=ao.scale.linear(),r=Vl,i=6,u=6,o=3,a=[10],l=null;return n.scale=function(t){return arguments.length?(e=t,n):e},n.orient=function(t){return arguments.length?(r=t in Xl?t+"":Vl,n):r},n.ticks=function(){return arguments.length?(a=co(arguments),n):a},n.tickValues=function(t){return arguments.length?(l=t,n):l},n.tickFormat=function(e){return arguments.length?(t=e,n):t},n.tickSize=function(t){var e=arguments.length;return e?(i=+t,u=+arguments[e-1],n):i},n.innerTickSize=function(t){return arguments.length?(i=+t,n):i},n.outerTickSize=function(t){return arguments.length?(u=+t,n):u},n.tickPadding=function(t){return arguments.length?(o=+t,n):o},n.tickSubdivide=function(){return arguments.length&&n},n};var Vl="bottom",Xl={top:1,right:1,bottom:1,left:1};ao.svg.brush=function(){function n(t){t.each(function(){var t=ao.select(this).style("pointer-events","all").style("-webkit-tap-highlight-color","rgba(0,0,0,0)").on("mousedown.brush",u).on("touchstart.brush",u),o=t.selectAll(".background").data([0]);o.enter().append("rect").attr("class","background").style("visibility","hidden").style("cursor","crosshair"),t.selectAll(".extent").data([0]).enter().append("rect").attr("class","extent").style("cursor","move");var a=t.selectAll(".resize").data(v,m);a.exit().remove(),a.enter().append("g").attr("class",function(n){return"resize "+n}).style("cursor",function(n){return $l[n]}).append("rect").attr("x",function(n){return/[ew]$/.test(n)?-3:null}).attr("y",function(n){return/^[ns]/.test(n)?-3:null}).attr("width",6).attr("height",6).style("visibility","hidden"),a.style("display",n.empty()?"none":null);var l,s=ao.transition(t),h=ao.transition(o);c&&(l=Zi(c),h.attr("x",l[0]).attr("width",l[1]-l[0]),r(s)),f&&(l=Zi(f),h.attr("y",l[0]).attr("height",l[1]-l[0]),i(s)),e(s)})}function e(n){n.selectAll(".resize").attr("transform",function(n){return"translate("+s[+/e$/.test(n)]+","+h[+/^s/.test(n)]+")"})}function r(n){n.select(".extent").attr("x",s[0]),n.selectAll(".extent,.n>rect,.s>rect").attr("width",s[1]-s[0])}function i(n){n.select(".extent").attr("y",h[0]),n.selectAll(".extent,.e>rect,.w>rect").attr("height",h[1]-h[0])}function u(){function u(){32==ao.event.keyCode&&(C||(M=null,L[0]-=s[1],L[1]-=h[1],C=2),S())}function v(){32==ao.event.keyCode&&2==C&&(L[0]+=s[1],L[1]+=h[1],C=0,S())}function d(){var n=ao.mouse(b),t=!1;x&&(n[0]+=x[0],n[1]+=x[1]),C||(ao.event.altKey?(M||(M=[(s[0]+s[1])/2,(h[0]+h[1])/2]),L[0]=s[+(n[0]<M[0])],L[1]=h[+(n[1]<M[1])]):M=null),E&&y(n,c,0)&&(r(k),t=!0),A&&y(n,f,1)&&(i(k),t=!0),t&&(e(k),w({type:"brush",mode:C?"move":"resize"}))}function y(n,t,e){var r,i,u=Zi(t),l=u[0],c=u[1],f=L[e],v=e?h:s,d=v[1]-v[0];return C&&(l-=f,c-=d+f),r=(e?g:p)?Math.max(l,Math.min(c,n[e])):n[e],C?i=(r+=f)+d:(M&&(f=Math.max(l,Math.min(c,2*M[e]-r))),r>f?(i=r,r=f):i=f),v[0]!=r||v[1]!=i?(e?a=null:o=null,v[0]=r,v[1]=i,!0):void 0}function m(){d(),k.style("pointer-events","all").selectAll(".resize").style("display",n.empty()?"none":null),ao.select("body").style("cursor",null),q.on("mousemove.brush",null).on("mouseup.brush",null).on("touchmove.brush",null).on("touchend.brush",null).on("keydown.brush",null).on("keyup.brush",null),z(),w({type:"brushend"})}var M,x,b=this,_=ao.select(ao.event.target),w=l.of(b,arguments),k=ao.select(b),N=_.datum(),E=!/^(n|s)$/.test(N)&&c,A=!/^(e|w)$/.test(N)&&f,C=_.classed("extent"),z=W(b),L=ao.mouse(b),q=ao.select(t(b)).on("keydown.brush",u).on("keyup.brush",v);if(ao.event.changedTouches?q.on("touchmove.brush",d).on("touchend.brush",m):q.on("mousemove.brush",d).on("mouseup.brush",m),k.interrupt().selectAll("*").interrupt(),C)L[0]=s[0]-L[0],L[1]=h[0]-L[1];else if(N){var T=+/w$/.test(N),R=+/^n/.test(N);x=[s[1-T]-L[0],h[1-R]-L[1]],L[0]=s[T],L[1]=h[R]}else ao.event.altKey&&(M=L.slice());k.style("pointer-events","none").selectAll(".resize").style("display",null),ao.select("body").style("cursor",_.style("cursor")),w({type:"brushstart"}),d()}var o,a,l=N(n,"brushstart","brush","brushend"),c=null,f=null,s=[0,0],h=[0,0],p=!0,g=!0,v=Bl[0];return n.event=function(n){n.each(function(){var n=l.of(this,arguments),t={x:s,y:h,i:o,j:a},e=this.__chart__||t;this.__chart__=t,Hl?ao.select(this).transition().each("start.brush",function(){o=e.i,a=e.j,s=e.x,h=e.y,n({type:"brushstart"})}).tween("brush:brush",function(){var e=xr(s,t.x),r=xr(h,t.y);return o=a=null,function(i){s=t.x=e(i),h=t.y=r(i),n({type:"brush",mode:"resize"})}}).each("end.brush",function(){o=t.i,a=t.j,n({type:"brush",mode:"resize"}),n({type:"brushend"})}):(n({type:"brushstart"}),n({type:"brush",mode:"resize"}),n({type:"brushend"}))})},n.x=function(t){return arguments.length?(c=t,v=Bl[!c<<1|!f],n):c},n.y=function(t){return arguments.length?(f=t,v=Bl[!c<<1|!f],n):f},n.clamp=function(t){return arguments.length?(c&&f?(p=!!t[0],g=!!t[1]):c?p=!!t:f&&(g=!!t),n):c&&f?[p,g]:c?p:f?g:null},n.extent=function(t){var e,r,i,u,l;return arguments.length?(c&&(e=t[0],r=t[1],f&&(e=e[0],r=r[0]),o=[e,r],c.invert&&(e=c(e),r=c(r)),e>r&&(l=e,e=r,r=l),e==s[0]&&r==s[1]||(s=[e,r])),f&&(i=t[0],u=t[1],c&&(i=i[1],u=u[1]),a=[i,u],f.invert&&(i=f(i),u=f(u)),i>u&&(l=i,i=u,u=l),i==h[0]&&u==h[1]||(h=[i,u])),n):(c&&(o?(e=o[0],r=o[1]):(e=s[0],r=s[1],c.invert&&(e=c.invert(e),r=c.invert(r)),e>r&&(l=e,e=r,r=l))),f&&(a?(i=a[0],u=a[1]):(i=h[0],u=h[1],f.invert&&(i=f.invert(i),u=f.invert(u)),i>u&&(l=i,i=u,u=l))),c&&f?[[e,i],[r,u]]:c?[e,r]:f&&[i,u])},n.clear=function(){return n.empty()||(s=[0,0],h=[0,0],o=a=null),n},n.empty=function(){return!!c&&s[0]==s[1]||!!f&&h[0]==h[1]},ao.rebind(n,l,"on")};var $l={n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},Bl=[["n","e","s","w","nw","ne","se","sw"],["e","w"],["n","s"],[]],Wl=ga.format=xa.timeFormat,Jl=Wl.utc,Gl=Jl("%Y-%m-%dT%H:%M:%S.%LZ");Wl.iso=Date.prototype.toISOString&&+new Date("2000-01-01T00:00:00.000Z")?eo:Gl,eo.parse=function(n){var t=new Date(n);return isNaN(t)?null:t},eo.toString=Gl.toString,ga.second=On(function(n){return new va(1e3*Math.floor(n/1e3))},function(n,t){n.setTime(n.getTime()+1e3*Math.floor(t))},function(n){return n.getSeconds()}),ga.seconds=ga.second.range,ga.seconds.utc=ga.second.utc.range,ga.minute=On(function(n){return new va(6e4*Math.floor(n/6e4))},function(n,t){n.setTime(n.getTime()+6e4*Math.floor(t))},function(n){return n.getMinutes()}),ga.minutes=ga.minute.range,ga.minutes.utc=ga.minute.utc.range,ga.hour=On(function(n){var t=n.getTimezoneOffset()/60;return new va(36e5*(Math.floor(n/36e5-t)+t))},function(n,t){n.setTime(n.getTime()+36e5*Math.floor(t))},function(n){return n.getHours()}),ga.hours=ga.hour.range,ga.hours.utc=ga.hour.utc.range,ga.month=On(function(n){return n=ga.day(n),n.setDate(1),n},function(n,t){n.setMonth(n.getMonth()+t)},function(n){return n.getMonth()}),ga.months=ga.month.range,ga.months.utc=ga.month.utc.range;var Kl=[1e3,5e3,15e3,3e4,6e4,3e5,9e5,18e5,36e5,108e5,216e5,432e5,864e5,1728e5,6048e5,2592e6,7776e6,31536e6],Ql=[[ga.second,1],[ga.second,5],[ga.second,15],[ga.second,30],[ga.minute,1],[ga.minute,5],[ga.minute,15],[ga.minute,30],[ga.hour,1],[ga.hour,3],[ga.hour,6],[ga.hour,12],[ga.day,1],[ga.day,2],[ga.week,1],[ga.month,1],[ga.month,3],[ga.year,1]],nc=Wl.multi([[".%L",function(n){return n.getMilliseconds()}],[":%S",function(n){return n.getSeconds()}],["%I:%M",function(n){return n.getMinutes()}],["%I %p",function(n){return n.getHours()}],["%a %d",function(n){return n.getDay()&&1!=n.getDate()}],["%b %d",function(n){return 1!=n.getDate()}],["%B",function(n){return n.getMonth()}],["%Y",zt]]),tc={range:function(n,t,e){return ao.range(Math.ceil(n/e)*e,+t,e).map(io)},floor:m,ceil:m};Ql.year=ga.year,ga.scale=function(){return ro(ao.scale.linear(),Ql,nc)};var ec=Ql.map(function(n){return[n[0].utc,n[1]]}),rc=Jl.multi([[".%L",function(n){return n.getUTCMilliseconds()}],[":%S",function(n){return n.getUTCSeconds()}],["%I:%M",function(n){return n.getUTCMinutes()}],["%I %p",function(n){return n.getUTCHours()}],["%a %d",function(n){return n.getUTCDay()&&1!=n.getUTCDate()}],["%b %d",function(n){return 1!=n.getUTCDate()}],["%B",function(n){return n.getUTCMonth()}],["%Y",zt]]);ec.year=ga.year.utc,ga.scale.utc=function(){return ro(ao.scale.linear(),ec,rc)},ao.text=An(function(n){return n.responseText}),ao.json=function(n,t){return Cn(n,"application/json",uo,t)},ao.html=function(n,t){return Cn(n,"text/html",oo,t)},ao.xml=An(function(n){return n.responseXML}),"function"==typeof define&&define.amd?(this.d3=ao,define(ao)):"object"==typeof module&&module.exports?module.exports=ao:this.d3=ao}(); \ No newline at end of file
diff --git a/src/usr/local/www/vendor/nvd3/nv.d3.css b/src/usr/local/www/vendor/nvd3/nv.d3.css
index 252f472..bca7ab6 100644
--- a/src/usr/local/www/vendor/nvd3/nv.d3.css
+++ b/src/usr/local/www/vendor/nvd3/nv.d3.css
@@ -1,4 +1,4 @@
-/* nvd3 version 1.8.2 (https://github.com/novus/nvd3) 2016-01-24 */
+/* nvd3 version 1.8.3 (https://github.com/novus/nvd3) 2016-04-26 */
.nvd3 .nv-axis {
pointer-events:none;
opacity: 1;
@@ -164,6 +164,18 @@
}
+.nv-force-node {
+ stroke: #fff;
+ stroke-width: 1.5px;
+}
+.nv-force-link {
+ stroke: #999;
+ stroke-opacity: .6;
+}
+.nv-force-node text {
+ stroke-width: 0px
+}
+
.nvd3 .nv-legend .nv-disabled rect {
/*fill-opacity: 0;*/
}
@@ -333,6 +345,16 @@ svg.nvd3-svg {
fill-opacity: .7;
}
+/**********
+* Print
+*/
+
+@media print {
+ .nvd3 text {
+ stroke-width: 0;
+ fill-opacity: 1;
+ }
+}
.nvd3.nv-ohlcBar .nv-ticks .nv-tick {
stroke-width: 1px;
@@ -373,7 +395,7 @@ svg.nvd3-svg {
.nvd3 .nv-parallelCoordinates .hover {
fill-opacity: 1;
- stroke-width: 3px;
+ stroke-width: 3px;
}
diff --git a/src/usr/local/www/vendor/nvd3/nv.d3.js b/src/usr/local/www/vendor/nvd3/nv.d3.js
index 3f7b3c3..149621d 100644
--- a/src/usr/local/www/vendor/nvd3/nv.d3.js
+++ b/src/usr/local/www/vendor/nvd3/nv.d3.js
@@ -1,4 +1,4 @@
-/* nvd3 version 1.8.2 (https://github.com/novus/nvd3) 2016-01-24 */
+/* nvd3 version 1.8.3 (https://github.com/novus/nvd3) 2016-04-26 */
(function(){
// set up main nv object
@@ -13,6 +13,11 @@ nv.charts = {}; //stores all the ready to use charts
nv.logs = {}; //stores some statistics and potential error messages
nv.dom = {}; //DOM manipulation functions
+// Node/CommonJS - require D3
+if (typeof(module) !== 'undefined' && typeof(exports) !== 'undefined' && typeof(d3) == 'undefined') {
+ d3 = require('d3');
+}
+
nv.dispatch = d3.dispatch('render_start', 'render_end');
// Function bind polyfill
@@ -157,7 +162,7 @@ if (typeof(window) !== 'undefined') {
*/
nv.dom.write = function(callback) {
if (window.fastdom !== undefined) {
- return fastdom.write(callback);
+ return fastdom.mutate(callback);
}
return callback();
};
@@ -170,10 +175,11 @@ nv.dom.write = function(callback) {
*/
nv.dom.read = function(callback) {
if (window.fastdom !== undefined) {
- return fastdom.read(callback);
+ return fastdom.measure(callback);
}
return callback();
-};/* Utility class to handle creation of an interactive layer.
+};
+/* Utility class to handle creation of an interactive layer.
This places a rectangle on top of the chart. When you mouse move over it, it sends a dispatch
containing the X-coordinate. It can also render a vertical line where the mouse is located.
@@ -258,7 +264,8 @@ nv.interactiveGuideline = function() {
/* If mouseX/Y is outside of the chart's bounds,
trigger a mouseOut event.
*/
- if (mouseX < 0 || mouseY < 0
+ if (d3.event.type === 'mouseout'
+ || mouseX < 0 || mouseY < 0
|| mouseX > availableWidth || mouseY > availableHeight
|| (d3.event.relatedTarget && d3.event.relatedTarget.ownerSVGElement === undefined)
|| mouseOutAnyReason
@@ -642,11 +649,11 @@ nv.models.tooltip = function() {
var dataSeriesExists = function(d) {
if (d && d.series) {
- if (d.series instanceof Array) {
- return !!d.series.length;
+ if (nv.utils.isArray(d.series)) {
+ return true;
}
// if object, it's okay just convert to array of the object
- if (d.series instanceof Object) {
+ if (nv.utils.isObject(d.series)) {
d.series = [d.series];
return true;
}
@@ -754,18 +761,23 @@ nv.models.tooltip = function() {
// Creates new tooltip container, or uses existing one on DOM.
function initTooltip() {
- if (!tooltip) {
+ if (!tooltip || !tooltip.node()) {
var container = chartContainer ? chartContainer : document.body;
-
// Create new tooltip div if it doesn't exist on DOM.
- tooltip = d3.select(container).append("div")
- .attr("class", "nvtooltip " + (classes ? classes : "xy-tooltip"))
- .attr("id", id);
- tooltip.style("top", 0).style("left", 0);
- tooltip.style('opacity', 0);
- tooltip.style('position', 'fixed');
- tooltip.selectAll("div, table, td, tr").classed(nvPointerEventsClass, true);
- tooltip.classed(nvPointerEventsClass, true);
+
+ var data = [1];
+ tooltip = d3.select(container).selectAll('.nvtooltip').data(data);
+
+ tooltip.enter().append('div')
+ .attr("class", "nvtooltip " + (classes ? classes : "xy-tooltip"))
+ .attr("id", id)
+ .style("top", 0).style("left", 0)
+ .style('opacity', 0)
+ .style('position', 'fixed')
+ .selectAll("div, table, td, tr").classed(nvPointerEventsClass, true)
+ .classed(nvPointerEventsClass, true);
+
+ tooltip.exit().remove()
}
}
@@ -884,6 +896,25 @@ nv.utils.windowSize = function() {
return (size);
};
+
+/* handle dumb browser quirks... isinstance breaks if you use frames
+typeof returns 'object' for null, NaN is a number, etc.
+ */
+nv.utils.isArray = Array.isArray;
+nv.utils.isObject = function(a) {
+ return a !== null && typeof a === 'object';
+};
+nv.utils.isFunction = function(a) {
+ return typeof a === 'function';
+};
+nv.utils.isDate = function(a) {
+ return toString.call(a) === '[object Date]';
+};
+nv.utils.isNumber = function(a) {
+ return !isNaN(a) && typeof a === 'number';
+};
+
+
/*
Binds callback function to run when window is resized
*/
@@ -915,8 +946,7 @@ nv.utils.getColor = function(color) {
return nv.utils.defaultColor();
//if passed an array, turn it into a color scale
- // use isArray, instanceof fails if d3 range is created in an iframe
- } else if(Array.isArray(color)) {
+ } else if(nv.utils.isArray(color)) {
var color_scale = d3.scale.ordinal().range(color);
return function(d, i) {
var key = i === undefined ? d : i;
@@ -956,7 +986,7 @@ nv.utils.customTheme = function(dictionary, getKey, defaultColors) {
return function(series, index) {
var key = getKey(series);
- if (typeof dictionary[key] === 'function') {
+ if (nv.utils.isFunction(dictionary[key])) {
return dictionary[key]();
} else if (dictionary[key] !== undefined) {
return dictionary[key];
@@ -1010,12 +1040,10 @@ Most common instance is when the element is in a display:none; container.
Forumla is : text.length * font-size * constant_factor
*/
nv.utils.calcApproxTextWidth = function (svgTextElem) {
- if (typeof svgTextElem.style === 'function'
- && typeof svgTextElem.text === 'function') {
-
+ if (nv.utils.isFunction(svgTextElem.style) && nv.utils.isFunction(svgTextElem.text)) {
var fontSize = parseInt(svgTextElem.style("font-size").replace("px",""), 10);
var textLength = svgTextElem.text().length;
- return textLength * fontSize * 0.5;
+ return nv.utils.NaNtoZero(textLength * fontSize * 0.5);
}
return 0;
};
@@ -1025,7 +1053,7 @@ nv.utils.calcApproxTextWidth = function (svgTextElem) {
Numbers that are undefined, null or NaN, convert them to zeros.
*/
nv.utils.NaNtoZero = function(n) {
- if (typeof n !== 'number'
+ if (!nv.utils.isNumber(n)
|| isNaN(n)
|| n === null
|| n === Infinity
@@ -1143,9 +1171,9 @@ nv.utils.deepExtend = function(dst){
var sources = arguments.length > 1 ? [].slice.call(arguments, 1) : [];
sources.forEach(function(source) {
for (var key in source) {
- var isArray = dst[key] instanceof Array;
- var isObject = typeof dst[key] === 'object';
- var srcObj = typeof source[key] === 'object';
+ var isArray = nv.utils.isArray(dst[key]);
+ var isObject = nv.utils.isObject(dst[key]);
+ var srcObj = nv.utils.isObject(source[key]);
if (isObject && !isArray && srcObj) {
nv.utils.deepExtend(dst[key], source[key]);
@@ -1244,7 +1272,7 @@ chart.options = nv.utils.optionsFunc.bind(chart);
nv.utils.optionsFunc = function(args) {
if (args) {
d3.map(args).forEach((function(key,value) {
- if (typeof this[key] === "function") {
+ if (nv.utils.isFunction(this[key])) {
this[key](value);
}
}).bind(this));
@@ -1560,6 +1588,7 @@ nv.utils.arrayEquals = function (array1, array2) {
, isOrdinal = false
, ticks = null
, axisLabelDistance = 0
+ , fontSize = undefined
, duration = 250
, dispatch = d3.dispatch('renderEnd')
;
@@ -1607,6 +1636,11 @@ nv.utils.arrayEquals = function (array1, array2) {
.data([axisLabelText || null]);
axisLabel.exit().remove();
+ //only skip when fontSize is undefined so it can be cleared with a null or blank string
+ if (fontSize !== undefined) {
+ g.selectAll('g').select("text").style('font-size', fontSize);
+ }
+
var xLabelMargin;
var axisMaxMin;
var w;
@@ -1657,6 +1691,8 @@ nv.utils.arrayEquals = function (array1, array2) {
var xTicks = g.selectAll('g').select("text");
var rotateLabelsRule = '';
if (rotateLabels%360) {
+ //Reset transform on ticks so textHeight can be calculated correctly
+ xTicks.attr('transform', '');
//Calculate the longest xTick width
xTicks.each(function(d,i){
var box = this.getBoundingClientRect();
@@ -1896,6 +1932,7 @@ nv.utils.arrayEquals = function (array1, array2) {
height: {get: function(){return height;}, set: function(_){height=_;}},
ticks: {get: function(){return ticks;}, set: function(_){ticks=_;}},
width: {get: function(){return width;}, set: function(_){width=_;}},
+ fontSize: {get: function(){return fontSize;}, set: function(_){fontSize=_;}},
// options that require extra logic in the setter
margin: {get: function(){return margin;}, set: function(_){
@@ -1929,30 +1966,36 @@ nv.models.boxPlot = function() {
// Public Variables with Default Settings
//------------------------------------------------------------
- var margin = {top: 0, right: 0, bottom: 0, left: 0}
- , width = 960
- , height = 500
- , id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
- , x = d3.scale.ordinal()
- , y = d3.scale.linear()
- , getX = function(d) { return d.x }
- , getY = function(d) { return d.y }
- , color = nv.utils.defaultColor()
- , container = null
- , xDomain
- , yDomain
- , xRange
- , yRange
- , dispatch = d3.dispatch('elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd')
- , duration = 250
- , maxBoxWidth = null
- ;
+ var margin = {top: 0, right: 0, bottom: 0, left: 0},
+ width = 960,
+ height = 500,
+ id = Math.floor(Math.random() * 10000), // Create semi-unique ID in case user doesn't select one
+ xScale = d3.scale.ordinal(),
+ yScale = d3.scale.linear(),
+ getX = function(d) { return d.label }, // Default data model selectors.
+ getQ1 = function(d) { return d.values.Q1 },
+ getQ2 = function(d) { return d.values.Q2 },
+ getQ3 = function(d) { return d.values.Q3 },
+ getWl = function(d) { return d.values.whisker_low },
+ getWh = function(d) { return d.values.whisker_high },
+ getColor = function(d) { return d.color },
+ getOlItems = function(d) { return d.values.outliers },
+ getOlValue = function(d, i, j) { return d },
+ getOlLabel = function(d, i, j) { return d },
+ getOlColor = function(d, i, j) { return undefined },
+ color = nv.utils.defaultColor(),
+ container = null,
+ xDomain, xRange,
+ yDomain, yRange,
+ dispatch = d3.dispatch('elementMouseover', 'elementMouseout', 'elementMousemove', 'renderEnd'),
+ duration = 250,
+ maxBoxWidth = null;
//============================================================
// Private Variables
//------------------------------------------------------------
- var x0, y0;
+ var xScale0, yScale0;
var renderWatch = nv.utils.renderWatch(dispatch, duration);
function chart(selection) {
@@ -1965,45 +2008,38 @@ nv.models.boxPlot = function() {
nv.utils.initSVG(container);
// Setup Scales
- x .domain(xDomain || data.map(function(d,i) { return getX(d,i); }))
- .rangeBands(xRange || [0, availableWidth], .1);
+ xScale.domain(xDomain || data.map(function(d,i) { return getX(d,i); }))
+ .rangeBands(xRange || [0, availableWidth], 0.1);
// if we know yDomain, no need to calculate
var yData = []
if (!yDomain) {
// (y-range is based on quartiles, whiskers and outliers)
-
- // lower values
- var yMin = d3.min(data.map(function(d) {
- var min_arr = [];
-
- min_arr.push(d.values.Q1);
- if (d.values.hasOwnProperty('whisker_low') && d.values.whisker_low !== null) { min_arr.push(d.values.whisker_low); }
- if (d.values.hasOwnProperty('outliers') && d.values.outliers !== null) { min_arr = min_arr.concat(d.values.outliers); }
-
- return d3.min(min_arr);
- }));
-
- // upper values
- var yMax = d3.max(data.map(function(d) {
- var max_arr = [];
-
- max_arr.push(d.values.Q3);
- if (d.values.hasOwnProperty('whisker_high') && d.values.whisker_high !== null) { max_arr.push(d.values.whisker_high); }
- if (d.values.hasOwnProperty('outliers') && d.values.outliers !== null) { max_arr = max_arr.concat(d.values.outliers); }
-
- return d3.max(max_arr);
- }));
-
+ var values = [], yMin, yMax;
+ data.forEach(function (d, i) {
+ var q1 = getQ1(d), q3 = getQ3(d), wl = getWl(d), wh = getWh(d);
+ var olItems = getOlItems(d);
+ if (olItems) {
+ olItems.forEach(function (e, i) {
+ values.push(getOlValue(e, i, undefined));
+ });
+ }
+ if (wl) { values.push(wl) }
+ if (q1) { values.push(q1) }
+ if (q3) { values.push(q3) }
+ if (wh) { values.push(wh) }
+ });
+ yMin = d3.min(values);
+ yMax = d3.max(values);
yData = [ yMin, yMax ] ;
}
- y.domain(yDomain || yData);
- y.range(yRange || [availableHeight, 0]);
+ yScale.domain(yDomain || yData);
+ yScale.range(yRange || [availableHeight, 0]);
//store old scales if they exist
- x0 = x0 || x;
- y0 = y0 || y.copy().range([y(0),y(0)]);
+ xScale0 = xScale0 || xScale;
+ yScale0 = yScale0 || yScale.copy().range([yScale(0),yScale(0)]);
// Setup containers and skeleton of chart
var wrap = container.selectAll('g.nv-wrap').data([data]);
@@ -2014,15 +2050,15 @@ nv.models.boxPlot = function() {
var boxEnter = boxplots.enter().append('g').style('stroke-opacity', 1e-6).style('fill-opacity', 1e-6);
boxplots
.attr('class', 'nv-boxplot')
- .attr('transform', function(d,i,j) { return 'translate(' + (x(getX(d,i)) + x.rangeBand() * .05) + ', 0)'; })
+ .attr('transform', function(d,i,j) { return 'translate(' + (xScale(getX(d,i)) + xScale.rangeBand() * 0.05) + ', 0)'; })
.classed('hover', function(d) { return d.hover });
boxplots
.watchTransition(renderWatch, 'nv-boxplot: boxplots')
.style('stroke-opacity', 1)
- .style('fill-opacity', .75)
+ .style('fill-opacity', 0.75)
.delay(function(d,i) { return i * duration / data.length })
.attr('transform', function(d,i) {
- return 'translate(' + (x(getX(d,i)) + x.rangeBand() * .05) + ', 0)';
+ return 'translate(' + (xScale(getX(d,i)) + xScale.rangeBand() * 0.05) + ', 0)';
});
boxplots.exit().remove();
@@ -2030,97 +2066,62 @@ nv.models.boxPlot = function() {
// conditionally append whisker lines
boxEnter.each(function(d,i) {
- var box = d3.select(this);
-
- ['low', 'high'].forEach(function(key) {
- if (d.values.hasOwnProperty('whisker_' + key) && d.values['whisker_' + key] !== null) {
- box.append('line')
- .style('stroke', (d.color) ? d.color : color(d,i))
- .attr('class', 'nv-boxplot-whisker nv-boxplot-' + key);
-
- box.append('line')
- .style('stroke', (d.color) ? d.color : color(d,i))
- .attr('class', 'nv-boxplot-tick nv-boxplot-' + key);
- }
- });
- });
-
- // outliers
- // TODO: support custom colors here
- var outliers = boxplots.selectAll('.nv-boxplot-outlier').data(function(d) {
- if (d.values.hasOwnProperty('outliers') && d.values.outliers !== null) { return d.values.outliers; }
- else { return []; }
- });
- outliers.enter().append('circle')
- .style('fill', function(d,i,j) { return color(d,j) }).style('stroke', function(d,i,j) { return color(d,j) })
- .on('mouseover', function(d,i,j) {
- d3.select(this).classed('hover', true);
- dispatch.elementMouseover({
- series: { key: d, color: color(d,j) },
- e: d3.event
- });
- })
- .on('mouseout', function(d,i,j) {
- d3.select(this).classed('hover', false);
- dispatch.elementMouseout({
- series: { key: d, color: color(d,j) },
- e: d3.event
- });
- })
- .on('mousemove', function(d,i) {
- dispatch.elementMousemove({e: d3.event});
+ var box = d3.select(this);
+ [getWl, getWh].forEach(function (f) {
+ if (f(d)) {
+ var key = (f === getWl) ? 'low' : 'high';
+ box.append('line')
+ .style('stroke', getColor(d) || color(d,i))
+ .attr('class', 'nv-boxplot-whisker nv-boxplot-' + key);
+ box.append('line')
+ .style('stroke', getColor(d) || color(d,i))
+ .attr('class', 'nv-boxplot-tick nv-boxplot-' + key);
+ }
});
+ });
- outliers.attr('class', 'nv-boxplot-outlier');
- outliers
- .watchTransition(renderWatch, 'nv-boxplot: nv-boxplot-outlier')
- .attr('cx', x.rangeBand() * .45)
- .attr('cy', function(d,i,j) { return y(d); })
- .attr('r', '3');
- outliers.exit().remove();
-
- var box_width = function() { return (maxBoxWidth === null ? x.rangeBand() * .9 : Math.min(75, x.rangeBand() * .9)); };
- var box_left = function() { return x.rangeBand() * .45 - box_width()/2; };
- var box_right = function() { return x.rangeBand() * .45 + box_width()/2; };
+ var box_width = function() { return (maxBoxWidth === null ? xScale.rangeBand() * 0.9 : Math.min(75, xScale.rangeBand() * 0.9)); };
+ var box_left = function() { return xScale.rangeBand() * 0.45 - box_width()/2; };
+ var box_right = function() { return xScale.rangeBand() * 0.45 + box_width()/2; };
// update whisker lines and ticks
- ['low', 'high'].forEach(function(key) {
- var endpoint = (key === 'low') ? 'Q1' : 'Q3';
-
- boxplots.select('line.nv-boxplot-whisker.nv-boxplot-' + key)
- .watchTransition(renderWatch, 'nv-boxplot: boxplots')
- .attr('x1', x.rangeBand() * .45 )
- .attr('y1', function(d,i) { return y(d.values['whisker_' + key]); })
- .attr('x2', x.rangeBand() * .45 )
- .attr('y2', function(d,i) { return y(d.values[endpoint]); });
-
- boxplots.select('line.nv-boxplot-tick.nv-boxplot-' + key)
- .watchTransition(renderWatch, 'nv-boxplot: boxplots')
- .attr('x1', box_left )
- .attr('y1', function(d,i) { return y(d.values['whisker_' + key]); })
- .attr('x2', box_right )
- .attr('y2', function(d,i) { return y(d.values['whisker_' + key]); });
+ [getWl, getWh].forEach(function (f) {
+ var key = (f === getWl) ? 'low' : 'high';
+ var endpoint = (f === getWl) ? getQ1 : getQ3;
+ boxplots.select('line.nv-boxplot-whisker.nv-boxplot-' + key)
+ .watchTransition(renderWatch, 'nv-boxplot: boxplots')
+ .attr('x1', xScale.rangeBand() * 0.45 )
+ .attr('y1', function(d,i) { return yScale(f(d)); })
+ .attr('x2', xScale.rangeBand() * 0.45 )
+ .attr('y2', function(d,i) { return yScale(endpoint(d)); });
+ boxplots.select('line.nv-boxplot-tick.nv-boxplot-' + key)
+ .watchTransition(renderWatch, 'nv-boxplot: boxplots')
+ .attr('x1', box_left )
+ .attr('y1', function(d,i) { return yScale(f(d)); })
+ .attr('x2', box_right )
+ .attr('y2', function(d,i) { return yScale(f(d)); });
});
- ['low', 'high'].forEach(function(key) {
- boxEnter.selectAll('.nv-boxplot-' + key)
- .on('mouseover', function(d,i,j) {
- d3.select(this).classed('hover', true);
- dispatch.elementMouseover({
- series: { key: d.values['whisker_' + key], color: color(d,j) },
- e: d3.event
- });
- })
- .on('mouseout', function(d,i,j) {
- d3.select(this).classed('hover', false);
- dispatch.elementMouseout({
- series: { key: d.values['whisker_' + key], color: color(d,j) },
- e: d3.event
- });
- })
- .on('mousemove', function(d,i) {
- dispatch.elementMousemove({e: d3.event});
- });
+ [getWl, getWh].forEach(function (f) {
+ var key = (f === getWl) ? 'low' : 'high';
+ boxEnter.selectAll('.nv-boxplot-' + key)
+ .on('mouseover', function(d,i,j) {
+ d3.select(this).classed('hover', true);
+ dispatch.elementMouseover({
+ series: { key: f(d), color: getColor(d) || color(d,j) },
+ e: d3.event
+ });
+ })
+ .on('mouseout', function(d,i,j) {
+ d3.select(this).classed('hover', false);
+ dispatch.elementMouseout({
+ series: { key: f(d), color: getColor(d) || color(d,j) },
+ e: d3.event
+ });
+ })
+ .on('mousemove', function(d,i) {
+ dispatch.elementMousemove({e: d3.event});
+ });
});
// boxes
@@ -2130,12 +2131,12 @@ nv.models.boxPlot = function() {
.on('mouseover', function(d,i) {
d3.select(this).classed('hover', true);
dispatch.elementMouseover({
- key: d.label,
- value: d.label,
+ key: getX(d),
+ value: getX(d),
series: [
- { key: 'Q3', value: d.values.Q3, color: d.color || color(d,i) },
- { key: 'Q2', value: d.values.Q2, color: d.color || color(d,i) },
- { key: 'Q1', value: d.values.Q1, color: d.color || color(d,i) }
+ { key: 'Q3', value: getQ3(d), color: getColor(d) || color(d,i) },
+ { key: 'Q2', value: getQ2(d), color: getColor(d) || color(d,i) },
+ { key: 'Q1', value: getQ1(d), color: getColor(d) || color(d,i) }
],
data: d,
index: i,
@@ -2145,12 +2146,12 @@ nv.models.boxPlot = function() {
.on('mouseout', function(d,i) {
d3.select(this).classed('hover', false);
dispatch.elementMouseout({
- key: d.label,
- value: d.label,
+ key: getX(d),
+ value: getX(d),
series: [
- { key: 'Q3', value: d.values.Q3, color: d.color || color(d,i) },
- { key: 'Q2', value: d.values.Q2, color: d.color || color(d,i) },
- { key: 'Q1', value: d.values.Q1, color: d.color || color(d,i) }
+ { key: 'Q3', value: getQ3(d), color: getColor(d) || color(d,i) },
+ { key: 'Q2', value: getQ2(d), color: getColor(d) || color(d,i) },
+ { key: 'Q1', value: getQ1(d), color: getColor(d) || color(d,i) }
],
data: d,
index: i,
@@ -2164,13 +2165,12 @@ nv.models.boxPlot = function() {
// box transitions
boxplots.select('rect.nv-boxplot-box')
.watchTransition(renderWatch, 'nv-boxplot: boxes')
- .attr('y', function(d,i) { return y(d.values.Q3); })
+ .attr('y', function(d,i) { return yScale(getQ3(d)); })
.attr('width', box_width)
.attr('x', box_left )
-
- .attr('height', function(d,i) { return Math.abs(y(d.values.Q3) - y(d.values.Q1)) || 1 })
- .style('fill', function(d,i) { return d.color || color(d,i) })
- .style('stroke', function(d,i) { return d.color || color(d,i) });
+ .attr('height', function(d,i) { return Math.abs(yScale(getQ3(d)) - yScale(getQ1(d))) || 1 })
+ .style('fill', function(d,i) { return getColor(d) || color(d,i) })
+ .style('stroke', function(d,i) { return getColor(d) || color(d,i) });
// median line
boxEnter.append('line').attr('class', 'nv-boxplot-median');
@@ -2178,13 +2178,46 @@ nv.models.boxPlot = function() {
boxplots.select('line.nv-boxplot-median')
.watchTransition(renderWatch, 'nv-boxplot: boxplots line')
.attr('x1', box_left)
- .attr('y1', function(d,i) { return y(d.values.Q2); })
+ .attr('y1', function(d,i) { return yScale(getQ2(d)); })
.attr('x2', box_right)
- .attr('y2', function(d,i) { return y(d.values.Q2); });
+ .attr('y2', function(d,i) { return yScale(getQ2(d)); });
+
+ // outliers
+ var outliers = boxplots.selectAll('.nv-boxplot-outlier').data(function(d) {
+ return getOlItems(d) || [];
+ });
+ outliers.enter().append('circle')
+ .style('fill', function(d,i,j) { return getOlColor(d,i,j) || color(d,j) })
+ .style('stroke', function(d,i,j) { return getOlColor(d,i,j) || color(d,j) })
+ .style('z-index', 9000)
+ .on('mouseover', function(d,i,j) {
+ d3.select(this).classed('hover', true);
+ dispatch.elementMouseover({
+ series: { key: getOlLabel(d,i,j), color: getOlColor(d,i,j) || color(d,j) },
+ e: d3.event
+ });
+ })
+ .on('mouseout', function(d,i,j) {
+ d3.select(this).classed('hover', false);
+ dispatch.elementMouseout({
+ series: { key: getOlLabel(d,i,j), color: getOlColor(d,i,j) || color(d,j) },
+ e: d3.event
+ });
+ })
+ .on('mousemove', function(d,i) {
+ dispatch.elementMousemove({e: d3.event});
+ });
+ outliers.attr('class', 'nv-boxplot-outlier');
+ outliers
+ .watchTransition(renderWatch, 'nv-boxplot: nv-boxplot-outlier')
+ .attr('cx', xScale.rangeBand() * 0.45)
+ .attr('cy', function(d,i,j) { return yScale(getOlValue(d,i,j)); })
+ .attr('r', '3');
+ outliers.exit().remove();
//store old scales for use in transitions on update
- x0 = x.copy();
- y0 = y.copy();
+ xScale0 = xScale.copy();
+ yScale0 = yScale.copy();
});
renderWatch.renderEnd('nv-boxplot immediate');
@@ -2200,20 +2233,37 @@ nv.models.boxPlot = function() {
chart._options = Object.create({}, {
// simple options, just get/set the necessary values
- width: {get: function(){return width;}, set: function(_){width=_;}},
- height: {get: function(){return height;}, set: function(_){height=_;}},
+ width: {get: function(){return width;}, set: function(_){width=_;}},
+ height: {get: function(){return height;}, set: function(_){height=_;}},
maxBoxWidth: {get: function(){return maxBoxWidth;}, set: function(_){maxBoxWidth=_;}},
- x: {get: function(){return getX;}, set: function(_){getX=_;}},
- y: {get: function(){return getY;}, set: function(_){getY=_;}},
- xScale: {get: function(){return x;}, set: function(_){x=_;}},
- yScale: {get: function(){return y;}, set: function(_){y=_;}},
+ x: {get: function(){return getX;}, set: function(_){getX=_;}},
+ q1: {get: function(){return getQ1;}, set: function(_){getQ1=_;}},
+ q2: {get: function(){return getQ2;}, set: function(_){getQ2=_;}},
+ q3: {get: function(){return getQ3;}, set: function(_){getQ3=_;}},
+ wl: {get: function(){return getWl;}, set: function(_){getWl=_;}},
+ wh: {get: function(){return getWh;}, set: function(_){getWh=_;}},
+ itemColor: {get: function(){return getColor;}, set: function(_){getColor=_;}},
+ outliers: {get: function(){return getOlItems;}, set: function(_){getOlItems=_;}},
+ outlierValue: {get: function(){return getOlValue;}, set: function(_){getOlValue=_;}},
+ outlierLabel: {get: function(){return getOlLabel;}, set: function(_){getOlLabel=_;}},
+ outlierColor: {get: function(){return getOlColor;}, set: function(_){getOlColor=_;}},
+ xScale: {get: function(){return xScale;}, set: function(_){xScale=_;}},
+ yScale: {get: function(){return yScale;}, set: function(_){yScale=_;}},
xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},
yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},
xRange: {get: function(){return xRange;}, set: function(_){xRange=_;}},
yRange: {get: function(){return yRange;}, set: function(_){yRange=_;}},
id: {get: function(){return id;}, set: function(_){id=_;}},
// rectClass: {get: function(){return rectClass;}, set: function(_){rectClass=_;}},
-
+ y: {
+ get: function() {
+ console.warn('BoxPlot \'y\' chart option is deprecated. Please use model overrides instead.');
+ return {};
+ },
+ set: function(_) {
+ console.warn('BoxPlot \'y\' chart option is deprecated. Please use model overrides instead.');
+ }
+ },
// options that require extra logic in the setter
margin: {get: function(){return margin;}, set: function(_){
margin.top = _.top !== undefined ? _.top : margin.top;
@@ -2241,26 +2291,23 @@ nv.models.boxPlotChart = function() {
// Public Variables with Default Settings
//------------------------------------------------------------
- var boxplot = nv.models.boxPlot()
- , xAxis = nv.models.axis()
- , yAxis = nv.models.axis()
- ;
+ var boxplot = nv.models.boxPlot(),
+ xAxis = nv.models.axis(),
+ yAxis = nv.models.axis();
- var margin = {top: 15, right: 10, bottom: 50, left: 60}
- , width = null
- , height = null
- , color = nv.utils.getColor()
- , showXAxis = true
- , showYAxis = true
- , rightAlignYAxis = false
- , staggerLabels = false
- , tooltip = nv.models.tooltip()
- , x
- , y
- , noData = "No Data Available."
- , dispatch = d3.dispatch('beforeUpdate', 'renderEnd')
- , duration = 250
- ;
+ var margin = {top: 15, right: 10, bottom: 50, left: 60},
+ width = null,
+ height = null,
+ color = nv.utils.getColor(),
+ showXAxis = true,
+ showYAxis = true,
+ rightAlignYAxis = false,
+ staggerLabels = false,
+ tooltip = nv.models.tooltip(),
+ x, y,
+ noData = 'No Data Available.',
+ dispatch = d3.dispatch('beforeUpdate', 'renderEnd'),
+ duration = 250;
xAxis
.orient('bottom')
@@ -2287,13 +2334,10 @@ nv.models.boxPlotChart = function() {
if (showYAxis) renderWatch.models(yAxis);
selection.each(function(data) {
- var container = d3.select(this),
- that = this;
+ var container = d3.select(this), that = this;
nv.utils.initSVG(container);
- var availableWidth = (width || parseInt(container.style('width')) || 960)
- - margin.left - margin.right,
- availableHeight = (height || parseInt(container.style('height')) || 400)
- - margin.top - margin.bottom;
+ var availableWidth = (width || parseInt(container.style('width')) || 960) - margin.left - margin.right;
+ var availableHeight = (height || parseInt(container.style('height')) || 400) - margin.top - margin.bottom;
chart.update = function() {
dispatch.beforeUpdate();
@@ -2301,9 +2345,9 @@ nv.models.boxPlotChart = function() {
};
chart.container = this;
- // Display No Data message if there's nothing to show. (quartiles required at minimum)
- if (!data || !data.length ||
- !data.filter(function(d) { return d.values.hasOwnProperty("Q1") && d.values.hasOwnProperty("Q2") && d.values.hasOwnProperty("Q3"); }).length) {
+ // TODO still need to find a way to validate quartile data presence using boxPlot callbacks.
+ // Display No Data message if there's nothing to show. (quartiles required at minimum).
+ if (!data || !data.length) {
var noDataText = container.selectAll('.nv-noData').data([noData]);
noDataText.enter().append('text')
@@ -2337,25 +2381,21 @@ nv.models.boxPlotChart = function() {
.append('line');
gEnter.append('g').attr('class', 'nv-barsWrap');
-
g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
if (rightAlignYAxis) {
- g.select(".nv-y.nv-axis")
- .attr("transform", "translate(" + availableWidth + ",0)");
+ g.select('.nv-y.nv-axis')
+ .attr('transform', 'translate(' + availableWidth + ',0)');
}
// Main Chart Component(s)
- boxplot
- .width(availableWidth)
- .height(availableHeight);
+ boxplot.width(availableWidth).height(availableHeight);
var barsWrap = g.select('.nv-barsWrap')
.datum(data.filter(function(d) { return !d.disabled }))
barsWrap.transition().call(boxplot);
-
defsEnter.append('clipPath')
.attr('id', 'nv-x-label-clip-' + boxplot.id())
.append('rect');
@@ -2379,7 +2419,7 @@ nv.models.boxPlotChart = function() {
if (staggerLabels) {
xTicks
.selectAll('text')
- .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 == 0 ? '5' : '17') + ')' })
+ .attr('transform', function(d,i,j) { return 'translate(0,' + (j % 2 === 0 ? '5' : '17') + ')' })
}
}
@@ -2393,11 +2433,11 @@ nv.models.boxPlotChart = function() {
}
// Zero line
- g.select(".nv-zeroLine line")
- .attr("x1",0)
- .attr("x2",availableWidth)
- .attr("y1", y(0))
- .attr("y2", y(0))
+ g.select('.nv-zeroLine line')
+ .attr('x1',0)
+ .attr('x2',availableWidth)
+ .attr('y1', y(0))
+ .attr('y2', y(0))
;
//============================================================
@@ -2504,8 +2544,19 @@ nv.models.bullet = function() {
, tickFormat = null
, color = nv.utils.getColor(['#1f77b4'])
, dispatch = d3.dispatch('elementMouseover', 'elementMouseout', 'elementMousemove')
+ , defaultRangeLabels = ["Maximum", "Mean", "Minimum"]
+ , legacyRangeClassNames = ["Max", "Avg", "Min"]
;
+ function sortLabels(labels, values){
+ var lz = labels.slice();
+ labels.sort(function(a, b){
+ var iA = lz.indexOf(a);
+ var iB = lz.indexOf(b);
+ return d3.descending(values[iA], values[iB]);
+ });
+ };
+
function chart(selection) {
selection.each(function(d, i) {
var availableWidth = width - margin.left - margin.right,
@@ -2514,13 +2565,23 @@ nv.models.bullet = function() {
container = d3.select(this);
nv.utils.initSVG(container);
- var rangez = ranges.call(this, d, i).slice().sort(d3.descending),
- markerz = markers.call(this, d, i).slice().sort(d3.descending),
- measurez = measures.call(this, d, i).slice().sort(d3.descending),
+ var rangez = ranges.call(this, d, i).slice(),
+ markerz = markers.call(this, d, i).slice(),
+ measurez = measures.call(this, d, i).slice(),
rangeLabelz = rangeLabels.call(this, d, i).slice(),
markerLabelz = markerLabels.call(this, d, i).slice(),
measureLabelz = measureLabels.call(this, d, i).slice();
+ // Sort labels according to their sorted values
+ sortLabels(rangeLabelz, rangez);
+ sortLabels(markerLabelz, markerz);
+ sortLabels(measureLabelz, measurez);
+
+ // sort values descending
+ rangez.sort(d3.descending);
+ markerz.sort(d3.descending);
+ measurez.sort(d3.descending);
+
// Setup Scales
// Compute the new x-scale.
var x1 = d3.scale.linear()
@@ -2545,9 +2606,14 @@ nv.models.bullet = function() {
var gEnter = wrapEnter.append('g');
var g = wrap.select('g');
- gEnter.append('rect').attr('class', 'nv-range nv-rangeMax');
- gEnter.append('rect').attr('class', 'nv-range nv-rangeAvg');
- gEnter.append('rect').attr('class', 'nv-range nv-rangeMin');
+ for(var i=0,il=rangez.length; i<il; i++){
+ var rangeClassNames = 'nv-range nv-range'+i;
+ if(i <= 2){
+ rangeClassNames = rangeClassNames + ' nv-range'+legacyRangeClassNames[i];
+ }
+ gEnter.append('rect').attr('class', rangeClassNames);
+ }
+
gEnter.append('rect').attr('class', 'nv-measure');
wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
@@ -2557,25 +2623,14 @@ nv.models.bullet = function() {
var xp0 = function(d) { return d < 0 ? x0(d) : x0(0) },
xp1 = function(d) { return d < 0 ? x1(d) : x1(0) };
- g.select('rect.nv-rangeMax')
- .attr('height', availableHeight)
- .attr('width', w1(rangeMax > 0 ? rangeMax : rangeMin))
- .attr('x', xp1(rangeMax > 0 ? rangeMax : rangeMin))
- .datum(rangeMax > 0 ? rangeMax : rangeMin)
-
- g.select('rect.nv-rangeAvg')
- .attr('height', availableHeight)
- .attr('width', w1(rangeAvg))
- .attr('x', xp1(rangeAvg))
- .datum(rangeAvg)
-
- g.select('rect.nv-rangeMin')
- .attr('height', availableHeight)
- .attr('width', w1(rangeMax))
- .attr('x', xp1(rangeMax))
- .attr('width', w1(rangeMax > 0 ? rangeMin : rangeMax))
- .attr('x', xp1(rangeMax > 0 ? rangeMin : rangeMax))
- .datum(rangeMax > 0 ? rangeMin : rangeMax)
+ for(var i=0,il=rangez.length; i<il; i++){
+ var range = rangez[i];
+ g.select('rect.nv-range'+i)
+ .attr('height', availableHeight)
+ .attr('width', w1(range))
+ .attr('x', xp1(range))
+ .datum(range)
+ }
g.select('rect.nv-measure')
.style('fill', color)
@@ -2649,7 +2704,7 @@ nv.models.bullet = function() {
wrap.selectAll('.nv-range')
.on('mouseover', function(d,i) {
- var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+ var label = rangeLabelz[i] || defaultRangeLabels[i];
dispatch.elementMouseover({
value: d,
label: label,
@@ -2664,7 +2719,7 @@ nv.models.bullet = function() {
})
})
.on('mouseout', function(d,i) {
- var label = rangeLabelz[i] || (!i ? "Maximum" : i == 1 ? "Mean" : "Minimum");
+ var label = rangeLabelz[i] || defaultRangeLabels[i];
dispatch.elementMouseout({
value: d,
label: label,
@@ -3365,7 +3420,9 @@ nv.models.cumulativeLineChart = function() {
gEnter.append('g').attr('class', 'nv-controlsWrap');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth);
g.select('.nv-legendWrap')
@@ -3382,7 +3439,9 @@ nv.models.cumulativeLineChart = function() {
}
// Controls
- if (showControls) {
+ if (!showControls) {
+ g.select('.nv-controlsWrap').selectAll('*').remove();
+ } else {
var controlsData = [
{ key: 'Re-scale y-axis', disabled: !rescaleY }
];
@@ -4158,8 +4217,11 @@ nv.models.discreteBarChart = function() {
gEnter.append('g').attr('class', 'nv-legendWrap');
g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
-
- if (showLegend) {
+
+ // Legend
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth);
g.select('.nv-legendWrap')
@@ -4180,11 +4242,6 @@ nv.models.discreteBarChart = function() {
.attr("transform", "translate(" + availableWidth + ",0)");
}
- if (rightAlignYAxis) {
- g.select(".nv-y.nv-axis")
- .attr("transform", "translate(" + availableWidth + ",0)");
- }
-
// Main Chart Component(s)
discretebar
.width(availableWidth)
@@ -4494,6 +4551,195 @@ nv.models.distribution = function() {
return chart;
}
+nv.models.forceDirectedGraph = function() {
+ "use strict";
+
+ //============================================================
+ // Public Variables with Default Settings
+ //------------------------------------------------------------
+ var margin = {top: 2, right: 0, bottom: 2, left: 0}
+ , width = 400
+ , height = 32
+ , container = null
+ , dispatch = d3.dispatch('renderEnd')
+ , color = nv.utils.getColor(['#000'])
+ , tooltip = nv.models.tooltip()
+ , noData = null
+ // Force directed graph specific parameters [default values]
+ , linkStrength = 0.1
+ , friction = 0.9
+ , linkDist = 30
+ , charge = -120
+ , gravity = 0.1
+ , theta = 0.8
+ , alpha = 0.1
+ , radius = 5
+ // These functions allow to add extra attributes to ndes and links
+ ,nodeExtras = function(nodes) { /* Do nothing */ }
+ ,linkExtras = function(links) { /* Do nothing */ }
+ ;
+
+
+ //============================================================
+ // Private Variables
+ //------------------------------------------------------------
+
+ var renderWatch = nv.utils.renderWatch(dispatch);
+
+ function chart(selection) {
+ renderWatch.reset();
+
+ selection.each(function(data) {
+ container = d3.select(this);
+ nv.utils.initSVG(container);
+
+ var availableWidth = nv.utils.availableWidth(width, container, margin),
+ availableHeight = nv.utils.availableHeight(height, container, margin);
+
+ container
+ .attr("width", availableWidth)
+ .attr("height", availableHeight);
+
+ // Display No Data message if there's nothing to show.
+ if (!data || !data.links || !data.nodes) {
+ nv.utils.noData(chart, container)
+ return chart;
+ } else {
+ container.selectAll('.nv-noData').remove();
+ }
+ container.selectAll('*').remove();
+
+ // Collect names of all fields in the nodes
+ var nodeFieldSet = new Set();
+ data.nodes.forEach(function(node) {
+ var keys = Object.keys(node);
+ keys.forEach(function(key) {
+ nodeFieldSet.add(key);
+ });
+ });
+
+ var force = d3.layout.force()
+ .nodes(data.nodes)
+ .links(data.links)
+ .size([availableWidth, availableHeight])
+ .linkStrength(linkStrength)
+ .friction(friction)
+ .linkDistance(linkDist)
+ .charge(charge)
+ .gravity(gravity)
+ .theta(theta)
+ .alpha(alpha)
+ .start();
+
+ var link = container.selectAll(".link")
+ .data(data.links)
+ .enter().append("line")
+ .attr("class", "nv-force-link")
+ .style("stroke-width", function(d) { return Math.sqrt(d.value); });
+
+ var node = container.selectAll(".node")
+ .data(data.nodes)
+ .enter()
+ .append("g")
+ .attr("class", "nv-force-node")
+ .call(force.drag);
+
+ node
+ .append("circle")
+ .attr("r", radius)
+ .style("fill", function(d) { return color(d) } )
+ .on("mouseover", function(evt) {
+ container.select('.nv-series-' + evt.seriesIndex + ' .nv-distx-' + evt.pointIndex)
+ .attr('y1', evt.py);
+ container.select('.nv-series-' + evt.seriesIndex + ' .nv-disty-' + evt.pointIndex)
+ .attr('x2', evt.px);
+
+ // Add 'series' object to
+ var nodeColor = color(evt);
+ evt.series = [];
+ nodeFieldSet.forEach(function(field) {
+ evt.series.push({
+ color: nodeColor,
+ key: field,
+ value: evt[field]
+ });
+ });
+ tooltip.data(evt).hidden(false);
+ })
+ .on("mouseout", function(d) {
+ tooltip.hidden(true);
+ });
+
+ tooltip.headerFormatter(function(d) {return "Node";});
+
+ // Apply extra attributes to nodes and links (if any)
+ linkExtras(link);
+ nodeExtras(node);
+
+ force.on("tick", function() {
+ link.attr("x1", function(d) { return d.source.x; })
+ .attr("y1", function(d) { return d.source.y; })
+ .attr("x2", function(d) { return d.target.x; })
+ .attr("y2", function(d) { return d.target.y; });
+
+ node.attr("transform", function(d) {
+ return "translate(" + d.x + ", " + d.y + ")";
+ });
+ });
+ });
+
+ return chart;
+ }
+
+ //============================================================
+ // Expose Public Variables
+ //------------------------------------------------------------
+
+ chart.options = nv.utils.optionsFunc.bind(chart);
+
+ chart._options = Object.create({}, {
+ // simple options, just get/set the necessary values
+ width: {get: function(){return width;}, set: function(_){width=_;}},
+ height: {get: function(){return height;}, set: function(_){height=_;}},
+
+ // Force directed graph specific parameters
+ linkStrength:{get: function(){return linkStrength;}, set: function(_){linkStrength=_;}},
+ friction: {get: function(){return friction;}, set: function(_){friction=_;}},
+ linkDist: {get: function(){return linkDist;}, set: function(_){linkDist=_;}},
+ charge: {get: function(){return charge;}, set: function(_){charge=_;}},
+ gravity: {get: function(){return gravity;}, set: function(_){gravity=_;}},
+ theta: {get: function(){return theta;}, set: function(_){theta=_;}},
+ alpha: {get: function(){return alpha;}, set: function(_){alpha=_;}},
+ radius: {get: function(){return radius;}, set: function(_){radius=_;}},
+
+ //functor options
+ x: {get: function(){return getX;}, set: function(_){getX=d3.functor(_);}},
+ y: {get: function(){return getY;}, set: function(_){getY=d3.functor(_);}},
+
+ // options that require extra logic in the setter
+ margin: {get: function(){return margin;}, set: function(_){
+ margin.top = _.top !== undefined ? _.top : margin.top;
+ margin.right = _.right !== undefined ? _.right : margin.right;
+ margin.bottom = _.bottom !== undefined ? _.bottom : margin.bottom;
+ margin.left = _.left !== undefined ? _.left : margin.left;
+ }},
+ color: {get: function(){return color;}, set: function(_){
+ color = nv.utils.getColor(_);
+ }},
+ noData: {get: function(){return noData;}, set: function(_){noData=_;}},
+ nodeExtras: {get: function(){return nodeExtras;}, set: function(_){
+ nodeExtras = _;
+ }},
+ linkExtras: {get: function(){return linkExtras;}, set: function(_){
+ linkExtras = _;
+ }}
+ });
+
+ chart.dispatch = dispatch;
+ chart.tooltip = tooltip;
+ nv.utils.initOptions(chart);
+ return chart;
+};
nv.models.furiousLegend = function() {
"use strict";
@@ -4675,13 +4921,13 @@ nv.models.furiousLegend = function() {
var seriesWidths = [];
series.each(function(d,i) {
var legendText;
- if (getKey(d).length > maxKeyLength) {
+ if (getKey(d) && (getKey(d).length > maxKeyLength)) {
var trimmedKey = getKey(d).substring(0, maxKeyLength);
legendText = d3.select(this).select('text').text(trimmedKey + "...");
d3.select(this).append("svg:title").text(getKey(d));
} else {
legendText = d3.select(this).select('text');
- }
+ }
var nodeTextLength;
try {
nodeTextLength = legendText.node().getComputedTextLength();
@@ -5180,7 +5426,9 @@ nv.models.historicalBarChart = function(bar_model) {
gEnter.append('g').attr('class', 'nv-interactive');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth);
g.select('.nv-legendWrap')
@@ -5534,7 +5782,7 @@ nv.models.legend = function() {
.attr('class','nv-legend-symbol')
.attr('r', 5);
- seriesShape = series.select('circle');
+ seriesShape = series.select('.nv-legend-symbol');
} else if (vers == 'furious') {
seriesEnter.append('rect')
.style('stroke-width', 2)
@@ -5651,13 +5899,13 @@ nv.models.legend = function() {
var seriesWidths = [];
series.each(function(d,i) {
var legendText;
- if (getKey(d).length > maxKeyLength) {
+ if (getKey(d) && (getKey(d).length > maxKeyLength)) {
var trimmedKey = getKey(d).substring(0, maxKeyLength);
legendText = d3.select(this).select('text').text(trimmedKey + "...");
d3.select(this).append("svg:title").text(getKey(d));
} else {
legendText = d3.select(this).select('text');
- }
+ }
var nodeTextLength;
try {
nodeTextLength = legendText.node().getComputedTextLength();
@@ -6104,6 +6352,7 @@ nv.models.lineChart = function() {
, width = null
, height = null
, showLegend = true
+ , legendPosition = 'top'
, showXAxis = true
, showYAxis = true
, rightAlignYAxis = false
@@ -6254,20 +6503,27 @@ nv.models.lineChart = function() {
contextEnter.append('g').attr('class', 'nv-x nv-brush');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth);
g.select('.nv-legendWrap')
.datum(data)
.call(legend);
- if ( margin.top != legend.height()) {
- margin.top = legend.height();
- availableHeight1 = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focusHeight : 0);
- }
+ if (legendPosition === 'bottom') {
+ wrap.select('.nv-legendWrap')
+ .attr('transform', 'translate(0,' + (availableHeight1) +')');
+ } else if (legendPosition === 'top') {
+ if ( margin.top != legend.height()) {
+ margin.top = legend.height();
+ availableHeight1 = nv.utils.availableHeight(height, container, margin) - (focusEnable ? focusHeight : 0);
+ }
- wrap.select('.nv-legendWrap')
- .attr('transform', 'translate(0,' + (-margin.top) +')');
+ wrap.select('.nv-legendWrap')
+ .attr('transform', 'translate(0,' + (-margin.top) +')');
+ }
}
wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
@@ -6491,11 +6747,13 @@ nv.models.lineChart = function() {
allData[indexToHighlight].highlight = true;
}
+ var defaultValueFormatter = function(d,i) {
+ return d == null ? "N/A" : yAxis.tickFormat()(d);
+ };
+
interactiveLayer.tooltip
.chartContainer(chart.container.parentNode)
- .valueFormatter(function(d,i) {
- return d === null ? "N/A" : yAxis.tickFormat()(d);
- })
+ .valueFormatter(interactiveLayer.tooltip.valueFormatter() || defaultValueFormatter)
.data({
value: chart.x()( singlePoint,pointIndex ),
index: pointIndex,
@@ -6669,6 +6927,7 @@ nv.models.lineChart = function() {
width: {get: function(){return width;}, set: function(_){width=_;}},
height: {get: function(){return height;}, set: function(_){height=_;}},
showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},
+ legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},
showXAxis: {get: function(){return showXAxis;}, set: function(_){showXAxis=_;}},
showYAxis: {get: function(){return showYAxis;}, set: function(_){showYAxis=_;}},
focusEnable: {get: function(){return focusEnable;}, set: function(_){focusEnable=_;}},
@@ -6749,8 +7008,7 @@ nv.models.lineWithFocusChart = function() {
return nv.models.lineChart()
.margin({ bottom: 30 })
.focusEnable( true );
-};
-nv.models.linePlusBarChart = function() {
+};nv.models.linePlusBarChart = function() {
"use strict";
//============================================================
@@ -6822,15 +7080,15 @@ nv.models.linePlusBarChart = function() {
//------------------------------------------------------------
var getBarsAxis = function() {
- return switchYAxisOrder
- ? { main: y1Axis, focus: y3Axis }
- : { main: y2Axis, focus: y4Axis }
+ return !switchYAxisOrder
+ ? { main: y2Axis, focus: y4Axis }
+ : { main: y1Axis, focus: y3Axis }
}
var getLinesAxis = function() {
- return switchYAxisOrder
- ? { main: y2Axis, focus: y4Axis }
- : { main: y1Axis, focus: y3Axis }
+ return !switchYAxisOrder
+ ? { main: y1Axis, focus: y3Axis }
+ : { main: y2Axis, focus: y4Axis }
}
var stateGetter = function(data) {
@@ -6900,7 +7158,12 @@ nv.models.linePlusBarChart = function() {
var dataBars = data.filter(function(d) { return !d.disabled && d.bar });
var dataLines = data.filter(function(d) { return !d.bar }); // removed the !d.disabled clause here to fix Issue #240
- x = bars.xScale();
+ if (dataBars.length && !switchYAxisOrder) {
+ x = bars.xScale();
+ } else {
+ x = lines.xScale();
+ }
+
x2 = x2Axis.scale();
// select the scales and series based on the position of the yAxis
@@ -6959,7 +7222,9 @@ nv.models.linePlusBarChart = function() {
// Legend
//------------------------------------------------------------
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
var legendWidth = legend.align() ? availableWidth / 2 : availableWidth;
var legendXPosition = legend.align() ? legendWidth : 0;
@@ -7234,8 +7499,14 @@ nv.models.linePlusBarChart = function() {
.tickSize(-availableWidth, 0);
y2Axis
.scale(y2)
- ._ticks( nv.utils.calcTicksY(availableHeight1/36, data) )
- .tickSize(dataBars.length ? 0 : -availableWidth, 0); // Show the y2 rules only if y1 has none
+ ._ticks( nv.utils.calcTicksY(availableHeight1/36, data) );
+
+ // Show the y2 rules only if y1 has none
+ if(!switchYAxisOrder) {
+ y2Axis.tickSize(dataBars.length ? 0 : -availableWidth, 0);
+ } else {
+ y2Axis.tickSize(dataLines.length ? 0 : -availableWidth, 0);
+ }
// Calculate opacity of the axis
var barsOpacity = dataBars.length ? 1 : 0;
@@ -7379,11 +7650,20 @@ nv.models.linePlusBarChart = function() {
switchYAxisOrder: {get: function(){return switchYAxisOrder;}, set: function(_){
// Switch the tick format for the yAxis
if(switchYAxisOrder !== _) {
- var tickFormat = y1Axis.tickFormat();
- y1Axis.tickFormat(y2Axis.tickFormat());
- y2Axis.tickFormat(tickFormat);
+ var y1 = y1Axis;
+ y1Axis = y2Axis;
+ y2Axis = y1;
+
+ var y3 = y3Axis;
+ y3Axis = y4Axis;
+ y4Axis = y3;
}
switchYAxisOrder=_;
+
+ y1Axis.orient('left');
+ y2Axis.orient('right');
+ y3Axis.orient('left');
+ y4Axis.orient('right');
}}
});
@@ -7495,7 +7775,7 @@ nv.models.multiBar = function() {
});
// HACK for negative value stacking
- if (stacked) {
+ if (stacked && data.length > 0) {
data[0].values.map(function(d,i) {
var posBase = 0, negBase = 0;
data.map(function(d, idx) {
@@ -7819,7 +8099,8 @@ nv.models.multiBar = function() {
nv.utils.initOptions(chart);
return chart;
-};nv.models.multiBarChart = function() {
+};
+nv.models.multiBarChart = function() {
"use strict";
//============================================================
@@ -7979,7 +8260,9 @@ nv.models.multiBar = function() {
gEnter.append('g').attr('class', 'nv-interactive');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth - controlWidth());
g.select('.nv-legendWrap')
@@ -7996,7 +8279,9 @@ nv.models.multiBar = function() {
}
// Controls
- if (showControls) {
+ if (!showControls) {
+ g.select('.nv-controlsWrap').selectAll('*').remove();
+ } else {
var controlsData = [
{ key: controlLabels.grouped || 'Grouped', disabled: multibar.stacked() },
{ key: controlLabels.stacked || 'Stacked', disabled: !multibar.stacked() }
@@ -8480,10 +8765,13 @@ nv.models.multiBarHorizontal = function() {
});
})
.on('click', function(d,i) {
+ var element = this;
dispatch.elementClick({
data: d,
index: i,
- color: d3.select(this).style("fill")
+ color: d3.select(this).style("fill"),
+ event: d3.event,
+ element: element
});
d3.event.stopPropagation();
})
@@ -8807,7 +9095,9 @@ nv.models.multiBarHorizontalChart = function() {
gEnter.append('g').attr('class', 'nv-controlsWrap');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth - controlWidth());
g.select('.nv-legendWrap')
@@ -8824,7 +9114,9 @@ nv.models.multiBarHorizontalChart = function() {
}
// Controls
- if (showControls) {
+ if (!showControls) {
+ g.select('.nv-controlsWrap').selectAll('*').remove();
+ } else {
var controlsData = [
{ key: controlLabels.grouped || 'Grouped', disabled: multibar.stacked() },
{ key: controlLabels.stacked || 'Stacked', disabled: !multibar.stacked() }
@@ -9044,7 +9336,7 @@ nv.models.multiChart = function() {
yDomain2,
getX = function(d) { return d.x },
getY = function(d) { return d.y},
- interpolate = 'monotone',
+ interpolate = 'linear',
useVoronoi = true,
interactiveLayer = nv.interactiveGuideline(),
useInteractiveGuideline = false,
@@ -9124,7 +9416,7 @@ nv.models.multiChart = function() {
})
});
- x .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return getX(d) }))
+ x .domain(d3.extent(d3.merge(series1.concat(series2)), function(d) { return d.x }))
.range([0, availableWidth]);
var wrap = container.selectAll('g.wrap.multiChart').data([data]);
@@ -9150,7 +9442,10 @@ nv.models.multiChart = function() {
return data[i].color || color(d, i);
});
- if (showLegend) {
+ // Legend
+ if (!showLegend) {
+ g.select('.legendWrap').selectAll('*').remove();
+ } else {
var legendWidth = legend.align() ? availableWidth / 2 : availableWidth;
var legendXPosition = legend.align() ? legendWidth : 0;
@@ -9203,10 +9498,12 @@ nv.models.multiChart = function() {
stack1
.width(availableWidth)
.height(availableHeight)
+ .interpolate(interpolate)
.color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 1 && data[i].type == 'area'}));
stack2
.width(availableWidth)
.height(availableHeight)
+ .interpolate(interpolate)
.color(color_array.filter(function(d,i) { return !data[i].disabled && data[i].yAxis == 2 && data[i].type == 'area'}));
g.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
@@ -9323,6 +9620,9 @@ nv.models.multiChart = function() {
};
tooltip
.duration(0)
+ .headerFormatter(function(d, i) {
+ return xAxis.tickFormat()(d, i);
+ })
.valueFormatter(function(d, i) {
return yaxis.tickFormat()(d, i);
})
@@ -9340,6 +9640,9 @@ nv.models.multiChart = function() {
};
tooltip
.duration(100)
+ .headerFormatter(function(d, i) {
+ return xAxis.tickFormat()(d, i);
+ })
.valueFormatter(function(d, i) {
return yaxis.tickFormat()(d, i);
})
@@ -9353,6 +9656,9 @@ nv.models.multiChart = function() {
evt.point['y'] = stack1.y()(evt.point);
tooltip
.duration(0)
+ .headerFormatter(function(d, i) {
+ return xAxis.tickFormat()(d, i);
+ })
.valueFormatter(function(d, i) {
return yaxis.tickFormat()(d, i);
})
@@ -9371,6 +9677,9 @@ nv.models.multiChart = function() {
};
tooltip
.duration(0)
+ .headerFormatter(function(d, i) {
+ return xAxis.tickFormat()(d, i);
+ })
.valueFormatter(function(d, i) {
return yaxis.tickFormat()(d, i);
})
@@ -9433,6 +9742,9 @@ nv.models.multiChart = function() {
interactiveLayer.tooltip
.chartContainer(chart.container.parentNode)
+ .headerFormatter(function(d, i) {
+ return xAxis.tickFormat()(d, i);
+ })
.valueFormatter(function(d,i) {
var yAxis = allData[i].yAxis;
return d === null ? "N/A" : yAxis.tickFormat()(d);
@@ -9835,8 +10147,11 @@ nv.models.parallelCoordinates = function() {
var margin = {top: 30, right: 0, bottom: 10, left: 0}
, width = null
, height = null
+ , availableWidth = null
+ , availableHeight = null
, x = d3.scale.ordinal()
, y = {}
+ , undefinedValuesLabel = "undefined values"
, dimensionData = []
, enabledDimensions = []
, dimensionNames = []
@@ -9859,19 +10174,17 @@ nv.models.parallelCoordinates = function() {
// Private Variables
//------------------------------------------------------------
-
var renderWatch = nv.utils.renderWatch(dispatch);
function chart(selection) {
renderWatch.reset();
selection.each(function(data) {
var container = d3.select(this);
- var availableWidth = nv.utils.availableWidth(width, container, margin),
- availableHeight = nv.utils.availableHeight(height, container, margin);
+ availableWidth = nv.utils.availableWidth(width, container, margin);
+ availableHeight = nv.utils.availableHeight(height, container, margin);
nv.utils.initSVG(container);
-
//Convert old data to new format (name, values)
if (data[0].values === undefined) {
var newData = [];
@@ -9892,7 +10205,6 @@ nv.models.parallelCoordinates = function() {
dimensionNames = dimensionData.sort(function (a, b) { return a.currentPosition - b.currentPosition; }).map(function (d) { return d.key });
enabledDimensions = dimensionData.filter(function (d) { return !d.disabled; });
-
// Setup Scales
x.rangePoints([0, availableWidth], 1).domain(enabledDimensions.map(function (d) { return d.key; }));
@@ -9900,7 +10212,8 @@ nv.models.parallelCoordinates = function() {
// Extract the list of dimensions and create a scale for each.
var oldDomainMaxValue = {};
var displayMissingValuesline = false;
-
+ var currentTicks = [];
+
dimensionNames.forEach(function(d) {
var extent = d3.extent(dataValues, function (p) { return +p[d]; });
var min = extent[0];
@@ -9943,7 +10256,6 @@ nv.models.parallelCoordinates = function() {
.range([(availableHeight - 12) * 0.9, 0]);
axisWithUndefinedValues = [];
-
y[d].brush = d3.svg.brush().y(y[d]).on('brushstart', brushstart).on('brush', brush).on('brushend', brushend);
});
@@ -9980,8 +10292,8 @@ nv.models.parallelCoordinates = function() {
.attr("y2", function(d) { return d[3]; });
//Add the text "undefined values" under the missing value line
- missingValueslineText = wrap.select('.missingValuesline').selectAll('text').data(["undefined values"]);
- missingValueslineText.append('text').data(["undefined values"]);
+ missingValueslineText = wrap.select('.missingValuesline').selectAll('text').data([undefinedValuesLabel]);
+ missingValueslineText.append('text').data([undefinedValuesLabel]);
missingValueslineText.enter().append('text');
missingValueslineText.exit().remove();
missingValueslineText.attr("y", availableHeight)
@@ -10007,7 +10319,9 @@ nv.models.parallelCoordinates = function() {
d3.select(this).classed('hover', true).style("stroke-width", d.strokeWidth + 2 + "px").style("stroke-opacity", 1);
dispatch.elementMouseover({
label: d.name,
- color: d.color || color(d, i)
+ color: d.color || color(d, i),
+ values: d.values,
+ dimensions: enabledDimensions
});
});
@@ -10035,13 +10349,14 @@ nv.models.parallelCoordinates = function() {
// Add an axis and title.
dimensionsEnter.append('text')
- .attr('class', 'nv-label')
+ .attr('class', 'nv-label')
.style("cursor", "move")
.attr('dy', '-1em')
.attr('text-anchor', 'middle')
.on("mouseover", function(d, i) {
dispatch.elementMouseover({
- label: d.tooltip || d.key
+ label: d.tooltip || d.key,
+ color: d.color
});
})
.on("mouseout", function(d, i) {
@@ -10057,10 +10372,6 @@ nv.models.parallelCoordinates = function() {
dimensionsEnter.append('g').attr('class', 'nv-brushBackground');
dimensions.exit().remove();
dimensions.select('.nv-label').text(function (d) { return d.key });
- dimensions.select('.nv-axis')
- .each(function (d, i) {
- d3.select(this).call(axis.scale(y[d.key]).tickFormat(d3.format(d.format)));
- });
// Add and store a brush for each axis.
restoreBrush(displayBrush);
@@ -10138,27 +10449,30 @@ nv.models.parallelCoordinates = function() {
});
dimensions.select('.nv-brushBackground')
- .each(function (d) {
- d3.select(this).call(y[d.key].brush);
+ .each(function (d) {
+ d3.select(this).call(y[d.key].brush);
- })
- .selectAll('rect')
- .attr('x', -8)
- .attr('width', 16);
+ })
+ .selectAll('rect')
+ .attr('x', -8)
+ .attr('width', 16);
+
+ updateTicks();
}
// Handles a brush event, toggling the display of foreground lines.
function brushstart() {
//If brush aren't visible, show it before brushing again.
if (displayBrush === false) {
+ displayBrush = true;
restoreBrush(true);
}
}
// Handles a brush event, toggling the display of foreground lines.
function brush() {
- actives = dimensionNames.filter(function (p) { return !y[p].brush.empty(); }),
- extents = actives.map(function(p) { return y[p].brush.extent(); });
+ actives = dimensionNames.filter(function (p) { return !y[p].brush.empty(); });
+ extents = actives.map(function(p) { return y[p].brush.extent(); });
filters = []; //erase current filters
actives.forEach(function(d,i) {
@@ -10179,7 +10493,9 @@ nv.models.parallelCoordinates = function() {
if (isActive) active.push(d);
return isActive ? null : 'none';
});
-
+
+ updateTicks();
+
dispatch.brush({
filters: filters,
active: active
@@ -10194,13 +10510,30 @@ nv.models.parallelCoordinates = function() {
f.hasOnlyNaN = true;
});
dispatch.brushEnd(active, hasActiveBrush);
+ }
+ function updateTicks() {
+ dimensions.select('.nv-axis')
+ .each(function (d, i) {
+ var f = filters.filter(function (k) { return k.dimension == d.key; });
+ currentTicks[d.key] = y[d.key].domain();
+
+ //If brush are available, display brush extent
+ if (f.length != 0 && displayBrush)
+ {
+ currentTicks[d.key] = [];
+ if (f[0].extent[1] > y[d.key].domain()[0])
+ currentTicks[d.key] = [f[0].extent[1]];
+ if (f[0].extent[0] >= y[d.key].domain()[0])
+ currentTicks[d.key].push(f[0].extent[0]);
+ }
+
+ d3.select(this).call(axis.scale(y[d.key]).tickFormat(d.format).tickValues(currentTicks[d.key]));
+ });
}
function dragStart(d) {
dragging[d.key] = this.parentNode.__origin__ = x(d.key);
background.attr("visibility", "hidden");
-
}
-
function dragMove(d) {
dragging[d.key] = Math.min(availableWidth, Math.max(0, this.parentNode.__origin__ += d3.event.x));
foreground.attr("d", path);
@@ -10209,7 +10542,6 @@ nv.models.parallelCoordinates = function() {
x.domain(enabledDimensions.map(function (d) { return d.key; }));
dimensions.attr("transform", function(d) { return "translate(" + dimensionPosition(d.key) + ")"; });
}
-
function dragEnd(d, i) {
delete this.parentNode.__origin__;
delete dragging[d.key];
@@ -10222,22 +10554,11 @@ nv.models.parallelCoordinates = function() {
dispatch.dimensionsOrder(enabledDimensions);
}
- function resetBrush() {
- filters = [];
- active = [];
- dispatch.stateChange();
- }
- function resetDrag() {
- dimensionName.map(function (d, i) { return d.currentPosition = d.originalPosition; });
- dispatch.stateChange();
- }
-
function dimensionPosition(d) {
var v = dragging[d];
return v == null ? x(d) : v;
}
});
-
return chart;
}
@@ -10257,7 +10578,8 @@ nv.models.parallelCoordinates = function() {
filters: { get: function () { return filters; }, set: function (_) { filters = _; } },
active: { get: function () { return active; }, set: function (_) { active = _; } },
lineTension: {get: function(){return lineTension;}, set: function(_){lineTension = _;}},
-
+ undefinedValuesLabel : {get: function(){return undefinedValuesLabel;}, set: function(_){undefinedValuesLabel=_;}},
+
// deprecated options
dimensions: {get: function () { return dimensionData.map(function (d){return d.key}); }, set: function (_) {
// deprecated after 1.8.1
@@ -10267,8 +10589,7 @@ nv.models.parallelCoordinates = function() {
} else {
_.forEach(function (k, i) { dimensionData[i].key= k })
}
- }
- },
+ }},
dimensionNames: {get: function () { return dimensionData.map(function (d){return d.key}); }, set: function (_) {
// deprecated after 1.8.1
nv.deprecated('dimensionNames', 'use dimensionData instead');
@@ -10290,7 +10611,6 @@ nv.models.parallelCoordinates = function() {
}
}},
-
// options that require extra logic in the setter
margin: {get: function(){return margin;}, set: function(_){
margin.top = _.top !== undefined ? _.top : margin.top;
@@ -10302,7 +10622,6 @@ nv.models.parallelCoordinates = function() {
color = nv.utils.getColor(_);
}}
});
-
nv.utils.initOptions(chart);
return chart;
};
@@ -10324,10 +10643,10 @@ nv.models.parallelCoordinatesChart = function () {
, color = nv.utils.defaultColor()
, state = nv.utils.state()
, dimensionData = []
- , dimensionNames = []
, displayBrush = true
, defaultState = null
, noData = null
+ , nanValue = "undefined"
, dispatch = d3.dispatch('dimensionsOrder', 'brushEnd', 'stateChange', 'changeState', 'renderEnd')
, controlWidth = function () { return showControls ? 180 : 0 }
;
@@ -10358,6 +10677,20 @@ nv.models.parallelCoordinatesChart = function () {
}
};
+ tooltip.contentGenerator(function(data) {
+ var str = '<table><thead><tr><td class="legend-color-guide"><div style="background-color:' + data.color + '"></div></td><td><strong>' + data.key + '</strong></td></tr></thead>';
+ if(data.series.length !== 0)
+ {
+ str = str + '<tbody><tr><td height ="10px"></td></tr>';
+ data.series.forEach(function(d){
+ str = str + '<tr><td class="legend-color-guide"><div style="background-color:' + d.color + '"></div></td><td class="key">' + d.key + '</td><td class="value">' + d.value + '</td></tr>';
+ });
+ str = str + '</tbody>';
+ }
+ str = str + '</table>';
+ return str;
+ });
+
//============================================================
// Chart function
//------------------------------------------------------------
@@ -10392,21 +10725,6 @@ nv.models.parallelCoordinatesChart = function () {
d.currentPosition = isNaN(d.currentPosition) ? i : d.currentPosition;
});
- var currentDimensions = dimensionNames.map(function (d) { return d.key; });
- var newDimensions = dimensionData.map(function (d) { return d.key; });
- dimensionData.forEach(function (k, i) {
- var idx = currentDimensions.indexOf(k.key);
- if (idx < 0) {
- dimensionNames.splice(i, 0, k);
- } else {
- var gap = dimensionNames[idx].currentPosition - dimensionNames[idx].originalPosition;
- dimensionNames[idx].originalPosition = k.originalPosition;
- dimensionNames[idx].currentPosition = k.originalPosition + gap;
- }
- });
- //Remove old dimensions
- dimensionNames = dimensionNames.filter(function (d) { return newDimensions.indexOf(d.key) >= 0; });
-
if (!defaultState) {
var key;
defaultState = {};
@@ -10442,12 +10760,14 @@ nv.models.parallelCoordinatesChart = function () {
.attr("height", (availableHeight > 0) ? availableHeight : 0);
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
legend.width(availableWidth)
.color(function (d) { return "rgb(188,190,192)"; });
g.select('.nv-legendWrap')
- .datum(dimensionNames.sort(function (a, b) { return a.originalPosition - b.originalPosition; }))
+ .datum(dimensionData.sort(function (a, b) { return a.originalPosition - b.originalPosition; }))
.call(legend);
if (margin.top != legend.height()) {
@@ -10459,14 +10779,11 @@ nv.models.parallelCoordinatesChart = function () {
}
wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
-
-
-
// Main Chart Component(s)
parallelCoordinates
.width(availableWidth)
.height(availableHeight)
- .dimensionData(dimensionNames)
+ .dimensionData(dimensionData)
.displayBrush(displayBrush);
var parallelCoordinatesWrap = g.select('.nv-parallelCoordinatesWrap ')
@@ -10498,21 +10815,21 @@ nv.models.parallelCoordinatesChart = function () {
//Update dimensions order and display reset sorting button
parallelCoordinates.dispatch.on('dimensionsOrder', function (e) {
- dimensionNames.sort(function (a, b) { return a.currentPosition - b.currentPosition; });
+ dimensionData.sort(function (a, b) { return a.currentPosition - b.currentPosition; });
var isSorted = false;
- dimensionNames.forEach(function (d, i) {
+ dimensionData.forEach(function (d, i) {
d.currentPosition = i;
if (d.currentPosition !== d.originalPosition)
isSorted = true;
});
- dispatch.dimensionsOrder(dimensionNames, isSorted);
+ dispatch.dimensionsOrder(dimensionData, isSorted);
});
// Update chart from a state object passed to event handler
dispatch.on('changeState', function (e) {
if (typeof e.disabled !== 'undefined') {
- dimensionNames.forEach(function (series, i) {
+ dimensionData.forEach(function (series, i) {
series.disabled = e.disabled[i];
});
state.disabled = e.disabled;
@@ -10530,11 +10847,27 @@ nv.models.parallelCoordinatesChart = function () {
//------------------------------------------------------------
parallelCoordinates.dispatch.on('elementMouseover.tooltip', function (evt) {
- evt['series'] = {
+ var tp = {
key: evt.label,
- color: evt.color
- };
- tooltip.data(evt).hidden(false);
+ color: evt.color,
+ series: []
+ }
+ if(evt.values){
+ Object.keys(evt.values).forEach(function (d) {
+ var dim = evt.dimensions.filter(function (dd) {return dd.key === d;})[0];
+ if(dim){
+ var v;
+ if (isNaN(evt.values[d]) || isNaN(parseFloat(evt.values[d]))) {
+ v = nanValue;
+ } else {
+ v = dim.format(evt.values[d]);
+ }
+ tp.series.push({ idx: dim.currentPosition, key: d, value: v, color: dim.color });
+ }
+ });
+ tp.series.sort(function(a,b) {return a.idx - b.idx});
+ }
+ tooltip.data(tp).hidden(false);
});
parallelCoordinates.dispatch.on('elementMouseout.tooltip', function(evt) {
@@ -10553,7 +10886,6 @@ nv.models.parallelCoordinatesChart = function () {
chart.parallelCoordinates = parallelCoordinates;
chart.legend = legend;
chart.tooltip = tooltip;
-
chart.options = nv.utils.optionsFunc.bind(chart);
chart._options = Object.create({}, {
@@ -10565,7 +10897,8 @@ nv.models.parallelCoordinatesChart = function () {
dimensionData: { get: function () { return dimensionData; }, set: function (_) { dimensionData = _; } },
displayBrush: { get: function () { return displayBrush; }, set: function (_) { displayBrush = _; } },
noData: { get: function () { return noData; }, set: function (_) { noData = _; } },
-
+ nanValue: { get: function () { return nanValue; }, set: function (_) { nanValue = _; } },
+
// options that require extra logic in the setter
margin: {
get: function () { return margin; },
@@ -10587,7 +10920,8 @@ nv.models.parallelCoordinatesChart = function () {
nv.utils.initOptions(chart);
return chart;
- };nv.models.pie = function() {
+ };
+nv.models.pie = function() {
"use strict";
//============================================================
@@ -10649,9 +10983,15 @@ nv.models.parallelCoordinatesChart = function () {
arcsRadiusInner.push(inner);
}
} else {
- arcsRadiusOuter = arcsRadius.map(function (d) { return (d.outer - d.outer / 5) * radius; });
- arcsRadiusInner = arcsRadius.map(function (d) { return (d.inner - d.inner / 5) * radius; });
- donutRatio = d3.min(arcsRadius.map(function (d) { return (d.inner - d.inner / 5); }));
+ if(growOnHover){
+ arcsRadiusOuter = arcsRadius.map(function (d) { return (d.outer - d.outer / 5) * radius; });
+ arcsRadiusInner = arcsRadius.map(function (d) { return (d.inner - d.inner / 5) * radius; });
+ donutRatio = d3.min(arcsRadius.map(function (d) { return (d.inner - d.inner / 5); }));
+ } else {
+ arcsRadiusOuter = arcsRadius.map(function (d) { return d.outer * radius; });
+ arcsRadiusInner = arcsRadius.map(function (d) { return d.inner * radius; });
+ donutRatio = d3.min(arcsRadius.map(function (d) { return d.inner; }));
+ }
}
nv.utils.initSVG(container);
@@ -11119,7 +11459,9 @@ nv.models.pieChart = function() {
gEnter.append('g').attr('class', 'nv-legendWrap');
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
if (legendPosition === "top") {
legend.width( availableWidth ).key(pie.x());
@@ -11219,6 +11561,8 @@ nv.models.pieChart = function() {
// use Object get/set functionality to map between vars and chart functions
chart._options = Object.create({}, {
// simple options, just get/set the necessary values
+ width: {get: function(){return width;}, set: function(_){width=_;}},
+ height: {get: function(){return height;}, set: function(_){height=_;}},
noData: {get: function(){return noData;}, set: function(_){noData=_;}},
showLegend: {get: function(){return showLegend;}, set: function(_){showLegend=_;}},
legendPosition: {get: function(){return legendPosition;}, set: function(_){legendPosition=_;}},
@@ -11288,6 +11632,7 @@ nv.models.scatter = function() {
, useVoronoi = true
, duration = 250
, interactiveUpdateDelay = 300
+ , showLabels = false
;
@@ -11300,8 +11645,34 @@ nv.models.scatter = function() {
, needsUpdate = false // Flag for when the points are visually updating, but the interactive layer is behind, to disable tooltips
, renderWatch = nv.utils.renderWatch(dispatch, duration)
, _sizeRange_def = [16, 256]
+ , _caches
;
+ function getCache(d) {
+ var cache, i;
+ cache = _caches = _caches || {};
+ i = d[0].series;
+ cache = cache[i] = cache[i] || {};
+ i = d[1];
+ cache = cache[i] = cache[i] || {};
+ return cache;
+ }
+
+ function getDiffs(d) {
+ var i, key,
+ point = d[0],
+ cache = getCache(d),
+ diffs = false;
+ for (i = 1; i < arguments.length; i ++) {
+ key = arguments[i];
+ if (cache[key] !== point[key] || !cache.hasOwnProperty(key)) {
+ cache[key] = point[key];
+ diffs = true;
+ }
+ }
+ return diffs;
+ }
+
function chart(selection) {
renderWatch.reset();
selection.each(function(data) {
@@ -11319,6 +11690,7 @@ nv.models.scatter = function() {
});
// Setup Scales
+ var logScale = chart.yScale().name === d3.scale.log().name ? true : false;
// remap and flatten the data for use in calculating the scales' domains
var seriesData = (xDomain && yDomain && sizeDomain) ? [] : // if we know xDomain and yDomain and sizeDomain, no need to calculate.... if Size is constant remember to set sizeDomain to speed up performance
d3.merge(
@@ -11337,7 +11709,7 @@ nv.models.scatter = function() {
else
x.range(xRange || [0, availableWidth]);
- if (chart.yScale().name === "o") {
+ if (logScale) {
var min = d3.min(seriesData.map(function(d) { if (d.y !== 0) return d.y; }));
y.clamp(true)
.domain(yDomain || d3.extent(seriesData.map(function(d) {
@@ -11378,6 +11750,8 @@ nv.models.scatter = function() {
y0 = y0 || y;
z0 = z0 || z;
+ var scaleDiff = x(1) !== x0(1) || y(1) !== y0(1) || z(1) !== z0(1);
+
// Setup containers and skeleton of chart
var wrap = container.selectAll('g.nv-wrap.nv-scatter').data([data]);
var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-scatter nv-chart-' + id);
@@ -11421,8 +11795,8 @@ nv.models.scatter = function() {
var pX = getX(point,pointIndex);
var pY = getY(point,pointIndex);
- return [x(pX)+ Math.random() * 1e-4,
- y(pY)+ Math.random() * 1e-4,
+ return [nv.utils.NaNtoZero(x(pX))+ Math.random() * 1e-4,
+ nv.utils.NaNtoZero(y(pY))+ Math.random() * 1e-4,
groupIndex,
pointIndex, point]; //temp hack to add noise until I think of a better way so there are no duplicates
})
@@ -11621,6 +11995,7 @@ nv.models.scatter = function() {
.attr('class', function(d,i) {
return (d.classed || '') + ' nv-group nv-series-' + i;
})
+ .classed('nv-noninteractive', !interactive)
.classed('hover', function(d) { return d.hover });
groups.watchTransition(renderWatch, 'scatter: groups')
.style('fill', function(d,i) { return color(d, i) })
@@ -11640,6 +12015,9 @@ nv.models.scatter = function() {
})
});
points.enter().append('path')
+ .attr('class', function (d) {
+ return 'nv-point nv-point-' + d[1];
+ })
.style('fill', function (d) { return d.color })
.style('stroke', function (d) { return d.color })
.attr('transform', function(d) {
@@ -11657,25 +12035,66 @@ nv.models.scatter = function() {
return 'translate(' + nv.utils.NaNtoZero(x(getX(d[0],d[1]))) + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')'
})
.remove();
- points.each(function(d) {
- d3.select(this)
- .classed('nv-point', true)
- .classed('nv-point-' + d[1], true)
- .classed('nv-noninteractive', !interactive)
- .classed('hover',false)
- ;
- });
- points
+ points.filter(function (d) { return scaleDiff || getDiffs(d, 'x', 'y'); })
.watchTransition(renderWatch, 'scatter points')
.attr('transform', function(d) {
//nv.log(d, getX(d[0],d[1]), x(getX(d[0],d[1])));
return 'translate(' + nv.utils.NaNtoZero(x(getX(d[0],d[1]))) + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')'
- })
+ });
+ points.filter(function (d) { return scaleDiff || getDiffs(d, 'shape', 'size'); })
+ .watchTransition(renderWatch, 'scatter points')
.attr('d',
nv.utils.symbol()
.type(function(d) { return getShape(d[0]); })
.size(function(d) { return z(getSize(d[0],d[1])) })
);
+
+ // add label a label to scatter chart
+ if(showLabels)
+ {
+ var titles = groups.selectAll('.nv-label')
+ .data(function(d) {
+ return d.values.map(
+ function (point, pointIndex) {
+ return [point, pointIndex]
+ }).filter(
+ function(pointArray, pointIndex) {
+ return pointActive(pointArray[0], pointIndex)
+ })
+ });
+
+ titles.enter().append('text')
+ .style('fill', function (d,i) {
+ return d.color })
+ .style('stroke-opacity', 0)
+ .style('fill-opacity', 1)
+ .attr('transform', function(d) {
+ var dx = nv.utils.NaNtoZero(x0(getX(d[0],d[1]))) + Math.sqrt(z(getSize(d[0],d[1]))/Math.PI) + 2;
+ return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y0(getY(d[0],d[1]))) + ')';
+ })
+ .text(function(d,i){
+ return d[0].label;});
+
+ titles.exit().remove();
+ groups.exit().selectAll('path.nv-label')
+ .watchTransition(renderWatch, 'scatter exit')
+ .attr('transform', function(d) {
+ var dx = nv.utils.NaNtoZero(x(getX(d[0],d[1])))+ Math.sqrt(z(getSize(d[0],d[1]))/Math.PI)+2;
+ return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')';
+ })
+ .remove();
+ titles.each(function(d) {
+ d3.select(this)
+ .classed('nv-label', true)
+ .classed('nv-label-' + d[1], false)
+ .classed('hover',false);
+ });
+ titles.watchTransition(renderWatch, 'scatter labels')
+ .attr('transform', function(d) {
+ var dx = nv.utils.NaNtoZero(x(getX(d[0],d[1])))+ Math.sqrt(z(getSize(d[0],d[1]))/Math.PI)+2;
+ return 'translate(' + dx + ',' + nv.utils.NaNtoZero(y(getY(d[0],d[1]))) + ')'
+ });
+ }
// Delay updating the invisible interactive layer for smoother animation
if( interactiveUpdateDelay )
@@ -11758,7 +12177,7 @@ nv.models.scatter = function() {
showVoronoi: {get: function(){return showVoronoi;}, set: function(_){showVoronoi=_;}},
id: {get: function(){return id;}, set: function(_){id=_;}},
interactiveUpdateDelay: {get:function(){return interactiveUpdateDelay;}, set: function(_){interactiveUpdateDelay=_;}},
-
+ showLabels: {get: function(){return showLabels;}, set: function(_){ showLabels = _;}},
// simple functor options
x: {get: function(){return getX;}, set: function(_){getX = d3.functor(_);}},
@@ -11826,6 +12245,7 @@ nv.models.scatterChart = function() {
, dispatch = d3.dispatch('stateChange', 'changeState', 'renderEnd')
, noData = null
, duration = 250
+ , showLabels = false
;
scatter.xScale(x).yScale(y);
@@ -11947,7 +12367,9 @@ nv.models.scatterChart = function() {
}
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
var legendWidth = availableWidth;
legend.width(legendWidth);
@@ -11973,7 +12395,8 @@ nv.models.scatterChart = function() {
.color(data.map(function(d,i) {
d.color = d.color || color(d, i);
return d.color;
- }).filter(function(d,i) { return !data[i].disabled }));
+ }).filter(function(d,i) { return !data[i].disabled }))
+ .showLabels(showLabels);
wrap.select('.nv-scatterWrap')
.datum(data.filter(function(d) { return !d.disabled }))
@@ -12151,6 +12574,7 @@ nv.models.scatterChart = function() {
defaultState: {get: function(){return defaultState;}, set: function(_){defaultState=_;}},
noData: {get: function(){return noData;}, set: function(_){noData=_;}},
duration: {get: function(){return duration;}, set: function(_){duration=_;}},
+ showLabels: {get: function(){return showLabels;}, set: function(_){showLabels=_;}},
// options that require extra logic in the setter
margin: {get: function(){return margin;}, set: function(_){
@@ -12197,6 +12621,8 @@ nv.models.sparkline = function() {
, yDomain
, xRange
, yRange
+ , showMinMaxPoints = true
+ , showCurrentPoint = true
, dispatch = d3.dispatch('renderEnd')
;
@@ -12257,7 +12683,7 @@ nv.models.sparkline = function() {
var maxPoint = pointIndex(yValues.lastIndexOf(y.domain()[1])),
minPoint = pointIndex(yValues.indexOf(y.domain()[0])),
currentPoint = pointIndex(yValues.length - 1);
- return [minPoint, maxPoint, currentPoint].filter(function (d) {return d != null;});
+ return [(showMinMaxPoints ? minPoint : null), (showMinMaxPoints ? maxPoint : null), (showCurrentPoint ? currentPoint : null)].filter(function (d) {return d != null;});
});
points.enter().append('circle');
points.exit().remove();
@@ -12283,15 +12709,17 @@ nv.models.sparkline = function() {
chart._options = Object.create({}, {
// simple options, just get/set the necessary values
- width: {get: function(){return width;}, set: function(_){width=_;}},
- height: {get: function(){return height;}, set: function(_){height=_;}},
- xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},
- yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},
- xRange: {get: function(){return xRange;}, set: function(_){xRange=_;}},
- yRange: {get: function(){return yRange;}, set: function(_){yRange=_;}},
- xScale: {get: function(){return x;}, set: function(_){x=_;}},
- yScale: {get: function(){return y;}, set: function(_){y=_;}},
- animate: {get: function(){return animate;}, set: function(_){animate=_;}},
+ width: {get: function(){return width;}, set: function(_){width=_;}},
+ height: {get: function(){return height;}, set: function(_){height=_;}},
+ xDomain: {get: function(){return xDomain;}, set: function(_){xDomain=_;}},
+ yDomain: {get: function(){return yDomain;}, set: function(_){yDomain=_;}},
+ xRange: {get: function(){return xRange;}, set: function(_){xRange=_;}},
+ yRange: {get: function(){return yRange;}, set: function(_){yRange=_;}},
+ xScale: {get: function(){return x;}, set: function(_){x=_;}},
+ yScale: {get: function(){return y;}, set: function(_){y=_;}},
+ animate: {get: function(){return animate;}, set: function(_){animate=_;}},
+ showMinMaxPoints: {get: function(){return showMinMaxPoints;}, set: function(_){showMinMaxPoints=_;}},
+ showCurrentPoint: {get: function(){return showCurrentPoint;}, set: function(_){showCurrentPoint=_;}},
//functor options
x: {get: function(){return getX;}, set: function(_){getX=d3.functor(_);}},
@@ -12646,7 +13074,6 @@ nv.models.stackedArea = function() {
.y(function(d) {
if (d.display !== undefined) { return d.display.y + d.display.y0; }
})
- .forceY([0])
.color(data.map(function(d,i) {
d.color = d.color || color(d, d.seriesIndex);
return d.color;
@@ -13021,7 +13448,9 @@ nv.models.stackedAreaChart = function() {
g.select("rect").attr("width",availableWidth).attr("height",availableHeight);
// Legend
- if (showLegend) {
+ if (!showLegend) {
+ g.select('.nv-legendWrap').selectAll('*').remove();
+ } else {
var legendWidth = (showControls) ? availableWidth - controlWidth : availableWidth;
legend.width(legendWidth);
@@ -13037,7 +13466,9 @@ nv.models.stackedAreaChart = function() {
}
// Controls
- if (showControls) {
+ if (!showControls) {
+ g.select('.nv-controlsWrap').selectAll('*').remove();
+ } else {
var controlsData = [
{
key: controlLabels.stacked || 'Stacked',
@@ -13231,7 +13662,7 @@ nv.models.stackedAreaChart = function() {
key: series.key,
value: tooltipValue,
color: color(series,series.seriesIndex),
- stackedValue: point.display
+ point: point
});
if (showTotalInTooltip && stacked.style() != 'expand') {
@@ -13250,8 +13681,8 @@ nv.models.stackedAreaChart = function() {
//To handle situation where the stacked area chart is negative, we need to use absolute values
//when checking if the mouse Y value is within the stack area.
yValue = Math.abs(yValue);
- var stackedY0 = Math.abs(series.stackedValue.y0);
- var stackedY = Math.abs(series.stackedValue.y);
+ var stackedY0 = Math.abs(series.point.display.y0);
+ var stackedY = Math.abs(series.point.display.y);
if ( yValue >= stackedY0 && yValue <= (stackedY + stackedY0))
{
indexToHighlight = i;
@@ -13423,70 +13854,208 @@ nv.models.sunburst = function() {
//------------------------------------------------------------
var margin = {top: 0, right: 0, bottom: 0, left: 0}
- , width = null
- , height = null
+ , width = 600
+ , height = 600
, mode = "count"
- , modes = {count: function(d) { return 1; }, size: function(d) { return d.size }}
+ , modes = {count: function(d) { return 1; }, value: function(d) { return d.value || d.size }, size: function(d) { return d.value || d.size }}
, id = Math.floor(Math.random() * 10000) //Create semi-unique ID in case user doesn't select one
, container = null
, color = nv.utils.defaultColor()
+ , showLabels = false
+ , labelFormat = function(d){if(mode === 'count'){return d.name + ' #' + d.value}else{return d.name + ' ' + (d.value || d.size)}}
+ , labelThreshold = 0.02
+ , sort = function(d1, d2){return d1.name > d2.name;}
+ , key = function(d,i){return d.name;}
, groupColorByParent = true
, duration = 500
- , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMousemove', 'elementMouseover', 'elementMouseout', 'renderEnd')
- ;
+ , dispatch = d3.dispatch('chartClick', 'elementClick', 'elementDblClick', 'elementMousemove', 'elementMouseover', 'elementMouseout', 'renderEnd');
+
+ //============================================================
+ // aux functions and setup
+ //------------------------------------------------------------
var x = d3.scale.linear().range([0, 2 * Math.PI]);
var y = d3.scale.sqrt();
- var partition = d3.layout.partition()
- .sort(null)
- .value(function(d) { return 1; });
+ var partition = d3.layout.partition().sort(sort);
+
+ var node, availableWidth, availableHeight, radius;
+ var prevPositions = {};
var arc = d3.svg.arc()
- .startAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x))); })
- .endAngle(function(d) { return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))); })
- .innerRadius(function(d) { return Math.max(0, y(d.y)); })
- .outerRadius(function(d) { return Math.max(0, y(d.y + d.dy)); });
+ .startAngle(function(d) {return Math.max(0, Math.min(2 * Math.PI, x(d.x))) })
+ .endAngle(function(d) {return Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx))) })
+ .innerRadius(function(d) {return Math.max(0, y(d.y)) })
+ .outerRadius(function(d) {return Math.max(0, y(d.y + d.dy)) });
+
+ function rotationToAvoidUpsideDown(d) {
+ var centerAngle = computeCenterAngle(d);
+ if(centerAngle > 90){
+ return 180;
+ }
+ else {
+ return 0;
+ }
+ }
+
+ function computeCenterAngle(d) {
+ var startAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x)));
+ var endAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));
+ var centerAngle = (((startAngle + endAngle) / 2) * (180 / Math.PI)) - 90;
+ return centerAngle;
+ }
+
+ function labelThresholdMatched(d) {
+ var startAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x)));
+ var endAngle = Math.max(0, Math.min(2 * Math.PI, x(d.x + d.dx)));
+
+ var size = endAngle - startAngle;
+ return size > labelThreshold;
+ }
+
+ // When zooming: interpolate the scales.
+ function arcTweenZoom(e,i) {
+ var xd = d3.interpolate(x.domain(), [node.x, node.x + node.dx]),
+ yd = d3.interpolate(y.domain(), [node.y, 1]),
+ yr = d3.interpolate(y.range(), [node.y ? 20 : 0, radius]);
- // Keep track of the current and previous node being displayed as the root.
- var node, prevNode;
- // Keep track of the root node
- var rootNode;
+ if (i === 0) {
+ return function() {return arc(e);}
+ }
+ else {
+ return function (t) {
+ x.domain(xd(t));
+ y.domain(yd(t)).range(yr(t));
+ return arc(e);
+ }
+ };
+ }
+
+ function arcTweenUpdate(d) {
+ var ipo = d3.interpolate({x: d.x0, dx: d.dx0, y: d.y0, dy: d.dy0}, d);
+
+ return function (t) {
+ var b = ipo(t);
+
+ d.x0 = b.x;
+ d.dx0 = b.dx;
+ d.y0 = b.y;
+ d.dy0 = b.dy;
+
+ return arc(b);
+ };
+ }
+
+ function updatePrevPosition(node) {
+ var k = key(node);
+ if(! prevPositions[k]) prevPositions[k] = {};
+ var pP = prevPositions[k];
+ pP.dx = node.dx;
+ pP.x = node.x;
+ pP.dy = node.dy;
+ pP.y = node.y;
+ }
+
+ function storeRetrievePrevPositions(nodes) {
+ nodes.forEach(function(n){
+ var k = key(n);
+ var pP = prevPositions[k];
+ //console.log(k,n,pP);
+ if( pP ){
+ n.dx0 = pP.dx;
+ n.x0 = pP.x;
+ n.dy0 = pP.dy;
+ n.y0 = pP.y;
+ }
+ else {
+ n.dx0 = n.dx;
+ n.x0 = n.x;
+ n.dy0 = n.dy;
+ n.y0 = n.y;
+ }
+ updatePrevPosition(n);
+ });
+ }
+
+ function zoomClick(d) {
+ var labels = container.selectAll('text')
+ var path = container.selectAll('path')
+
+ // fade out all text elements
+ labels.transition().attr("opacity",0);
+
+ // to allow reference to the new center node
+ node = d;
+
+ path.transition()
+ .duration(duration)
+ .attrTween("d", arcTweenZoom)
+ .each('end', function(e) {
+ // partially taken from here: http://bl.ocks.org/metmajer/5480307
+ // check if the animated element's data e lies within the visible angle span given in d
+ if(e.x >= d.x && e.x < (d.x + d.dx) ){
+ if(e.depth >= d.depth){
+ // get a selection of the associated text element
+ var parentNode = d3.select(this.parentNode);
+ var arcText = parentNode.select('text');
+
+ // fade in the text element and recalculate positions
+ arcText.transition().duration(duration)
+ .text( function(e){return labelFormat(e) })
+ .attr("opacity", function(d){
+ if(labelThresholdMatched(d)) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+ })
+ .attr("transform", function() {
+ var width = this.getBBox().width;
+ if(e.depth === 0)
+ return "translate(" + (width / 2 * - 1) + ",0)";
+ else if(e.depth === d.depth){
+ return "translate(" + (y(e.y) + 5) + ",0)";
+ }
+ else {
+ var centerAngle = computeCenterAngle(e);
+ var rotation = rotationToAvoidUpsideDown(e);
+ if (rotation === 0) {
+ return 'rotate('+ centerAngle +')translate(' + (y(e.y) + 5) + ',0)';
+ }
+ else {
+ return 'rotate('+ centerAngle +')translate(' + (y(e.y) + width + 5) + ',0)rotate(' + rotation + ')';
+ }
+ }
+ });
+ }
+ }
+ })
+ }
//============================================================
// chart function
//------------------------------------------------------------
-
var renderWatch = nv.utils.renderWatch(dispatch);
function chart(selection) {
renderWatch.reset();
+
selection.each(function(data) {
container = d3.select(this);
- var availableWidth = nv.utils.availableWidth(width, container, margin);
- var availableHeight = nv.utils.availableHeight(height, container, margin);
- var radius = Math.min(availableWidth, availableHeight) / 2;
- var path;
+ availableWidth = nv.utils.availableWidth(width, container, margin);
+ availableHeight = nv.utils.availableHeight(height, container, margin);
+ radius = Math.min(availableWidth, availableHeight) / 2;
- nv.utils.initSVG(container);
+ y.range([0, radius]);
// Setup containers and skeleton of chart
- var wrap = container.selectAll('.nv-wrap.nv-sunburst').data(data);
- var wrapEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sunburst nv-chart-' + id);
-
- var g = wrapEnter.selectAll('nv-sunburst');
-
- chart.update = function() {
- if ( duration === 0 ) {
- container.call(chart);
- } else {
- container.transition().duration(duration).call(chart);
- }
- };
- chart.container = this;
-
-
- wrap.attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+ var wrap = container.select('g.nvd3.nv-wrap.nv-sunburst');
+ if( !wrap[0][0] ) {
+ wrap = container.append('g')
+ .attr('class', 'nvd3 nv-wrap nv-sunburst nv-chart-' + id)
+ .attr('transform', 'translate(' + availableWidth / 2 + ',' + availableHeight / 2 + ')');
+ }
container.on('click', function (d, i) {
dispatch.chartClick({
@@ -13497,13 +14066,21 @@ nv.models.sunburst = function() {
});
});
- y.range([0, radius]);
-
- node = node || data;
- rootNode = data[0];
partition.value(modes[mode] || modes["count"]);
- path = g.data(partition.nodes).enter()
- .append("path")
+
+ //reverse the drawing order so that the labels of inner
+ //arcs are drawn on top of the outer arcs.
+ var nodes = partition.nodes(data[0]).reverse()
+
+ storeRetrievePrevPositions(nodes);
+ var cG = wrap.selectAll('.arc-container').data(nodes, key)
+
+ //handle new datapoints
+ var cGE = cG.enter()
+ .append("g")
+ .attr("class",'arc-container')
+
+ cGE.append("path")
.attr("d", arc)
.style("fill", function (d) {
if (d.color) {
@@ -13517,22 +14094,7 @@ nv.models.sunburst = function() {
}
})
.style("stroke", "#FFF")
- .on("click", function(d) {
- if (prevNode !== node && node !== d) prevNode = node;
- node = d;
- path.transition()
- .duration(duration)
- .attrTween("d", arcTweenZoom(d));
- })
- .each(stash)
- .on("dblclick", function(d) {
- if (prevNode.parent == d) {
- path.transition()
- .duration(duration)
- .attrTween("d", arcTweenZoom(rootNode));
- }
- })
- .each(stash)
+ .on("click", zoomClick)
.on('mouseover', function(d,i){
d3.select(this).classed('hover', true).style('opacity', 0.8);
dispatch.elementMouseover({
@@ -13552,58 +14114,68 @@ nv.models.sunburst = function() {
});
});
+ ///Iterating via each and selecting based on the this
+ ///makes it work ... a cG.selectAll('path') doesn't.
+ ///Without iteration the data (in the element) didn't update.
+ cG.each(function(d){
+ d3.select(this).select('path')
+ .transition()
+ .duration(duration)
+ .attrTween('d', arcTweenUpdate);
+ });
+ if(showLabels){
+ //remove labels first and add them back
+ cG.selectAll('text').remove();
- // Setup for switching data: stash the old values for transition.
- function stash(d) {
- d.x0 = d.x;
- d.dx0 = d.dx;
+ //this way labels are on top of newly added arcs
+ cG.append('text')
+ .text( function(e){ return labelFormat(e)})
+ .transition()
+ .duration(duration)
+ .attr("opacity", function(d){
+ if(labelThresholdMatched(d)) {
+ return 1;
+ }
+ else {
+ return 0;
+ }
+ })
+ .attr("transform", function(d) {
+ var width = this.getBBox().width;
+ if(d.depth === 0){
+ return "rotate(0)translate(" + (width / 2 * -1) + ",0)";
+ }
+ else {
+ var centerAngle = computeCenterAngle(d);
+ var rotation = rotationToAvoidUpsideDown(d);
+ if (rotation === 0) {
+ return 'rotate('+ centerAngle +')translate(' + (y(d.y) + 5) + ',0)';
+ }
+ else {
+ return 'rotate('+ centerAngle +')translate(' + (y(d.y) + width + 5) + ',0)rotate(' + rotation + ')';
+ }
+ }
+ });
}
- // When switching data: interpolate the arcs in data space.
- function arcTweenData(a, i) {
- var oi = d3.interpolate({x: a.x0, dx: a.dx0}, a);
-
- function tween(t) {
- var b = oi(t);
- a.x0 = b.x;
- a.dx0 = b.dx;
- return arc(b);
- }
+ //zoom out to the center when the data is updated.
+ zoomClick(nodes[nodes.length - 1])
- if (i == 0) {
- // If we are on the first arc, adjust the x domain to match the root node
- // at the current zoom level. (We only need to do this once.)
- var xd = d3.interpolate(x.domain(), [node.x, node.x + node.dx]);
- return function (t) {
- x.domain(xd(t));
- return tween(t);
- };
- } else {
- return tween;
- }
- }
-
- // When zooming: interpolate the scales.
- function arcTweenZoom(d) {
- var xd = d3.interpolate(x.domain(), [d.x, d.x + d.dx]),
- yd = d3.interpolate(y.domain(), [d.y, 1]),
- yr = d3.interpolate(y.range(), [d.y ? 20 : 0, radius]);
- return function (d, i) {
- return i
- ? function (t) {
- return arc(d);
- }
- : function (t) {
- x.domain(xd(t));
- y.domain(yd(t)).range(yr(t));
- return arc(d);
- };
- };
- }
+ //remove unmatched elements ...
+ cG.exit()
+ .transition()
+ .duration(duration)
+ .attr('opacity',0)
+ .each('end',function(d){
+ var k = key(d);
+ prevPositions[k] = undefined;
+ })
+ .remove();
});
+
renderWatch.renderEnd('sunburst immediate');
return chart;
}
@@ -13623,7 +14195,11 @@ nv.models.sunburst = function() {
id: {get: function(){return id;}, set: function(_){id=_;}},
duration: {get: function(){return duration;}, set: function(_){duration=_;}},
groupColorByParent: {get: function(){return groupColorByParent;}, set: function(_){groupColorByParent=!!_;}},
-
+ showLabels: {get: function(){return showLabels;}, set: function(_){showLabels=!!_}},
+ labelFormat: {get: function(){return labelFormat;}, set: function(_){labelFormat=_}},
+ labelThreshold: {get: function(){return labelThreshold;}, set: function(_){labelThreshold=_}},
+ sort: {get: function(){return sort;}, set: function(_){sort=_}},
+ key: {get: function(){return key;}, set: function(_){key=_}},
// options that require extra logic in the setter
margin: {get: function(){return margin;}, set: function(_){
margin.top = _.top != undefined ? _.top : margin.top;
@@ -13657,21 +14233,19 @@ nv.models.sunburstChart = function() {
, defaultState = null
, noData = null
, duration = 250
- , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd')
- ;
+ , dispatch = d3.dispatch('stateChange', 'changeState','renderEnd');
- tooltip.duration(0);
//============================================================
// Private Variables
//------------------------------------------------------------
var renderWatch = nv.utils.renderWatch(dispatch);
+
tooltip
+ .duration(0)
.headerEnabled(false)
- .valueFormatter(function(d, i) {
- return d;
- });
+ .valueFormatter(function(d){return d;});
//============================================================
// Chart function
@@ -13683,11 +14257,11 @@ nv.models.sunburstChart = function() {
selection.each(function(data) {
var container = d3.select(this);
+
nv.utils.initSVG(container);
- var that = this;
- var availableWidth = nv.utils.availableWidth(width, container, margin),
- availableHeight = nv.utils.availableHeight(height, container, margin);
+ var availableWidth = nv.utils.availableWidth(width, container, margin);
+ var availableHeight = nv.utils.availableHeight(height, container, margin);
chart.update = function() {
if (duration === 0) {
@@ -13696,7 +14270,7 @@ nv.models.sunburstChart = function() {
container.transition().duration(duration).call(chart);
}
};
- chart.container = this;
+ chart.container = container;
// Display No Data message if there's nothing to show.
if (!data || !data.length) {
@@ -13706,20 +14280,8 @@ nv.models.sunburstChart = function() {
container.selectAll('.nv-noData').remove();
}
- // Setup containers and skeleton of chart
- var wrap = container.selectAll('g.nv-wrap.nv-sunburstChart').data(data);
- var gEnter = wrap.enter().append('g').attr('class', 'nvd3 nv-wrap nv-sunburstChart').append('g');
- var g = wrap.select('g');
-
- gEnter.append('g').attr('class', 'nv-sunburstWrap');
-
- wrap.attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');
-
- // Main Chart Component(s)
sunburst.width(availableWidth).height(availableHeight);
- var sunWrap = g.select('.nv-sunburstWrap').datum(data);
- d3.transition(sunWrap).call(sunburst);
-
+ container.call(sunburst);
});
renderWatch.renderEnd('sunburstChart immediate');
@@ -13731,9 +14293,9 @@ nv.models.sunburstChart = function() {
//------------------------------------------------------------
sunburst.dispatch.on('elementMouseover.tooltip', function(evt) {
- evt['series'] = {
+ evt.series = {
key: evt.data.name,
- value: evt.data.size,
+ value: (evt.data.value || evt.data.size),
color: evt.color
};
tooltip.data(evt).hidden(false);
@@ -13783,7 +14345,8 @@ nv.models.sunburstChart = function() {
nv.utils.inheritOptions(chart, sunburst);
nv.utils.initOptions(chart);
return chart;
+
};
-nv.version = "1.8.2";
+nv.version = "1.8.3";
})(); \ No newline at end of file
diff --git a/src/usr/local/www/vpn_ipsec.php b/src/usr/local/www/vpn_ipsec.php
index 03d30a4..e26d1d7 100644
--- a/src/usr/local/www/vpn_ipsec.php
+++ b/src/usr/local/www/vpn_ipsec.php
@@ -355,7 +355,7 @@ display_top_tabs($tab_array);
<td id="frd<?=$i?>">
<?=$spans?>
<?php
- if (empty($ph1ent['iketype']) || $ph1ent['iketype'] == "ikev1") {
+ if (empty($ph1ent['iketype']) || $ph1ent['iketype'] == "ikev1" || $ph1ent['iketype'] == "auto") {
echo "{$ph1ent['mode']}";
}
?>
diff --git a/src/usr/local/www/vpn_ipsec_keys_edit.php b/src/usr/local/www/vpn_ipsec_keys_edit.php
index 92994c7..05fb97d 100644
--- a/src/usr/local/www/vpn_ipsec_keys_edit.php
+++ b/src/usr/local/www/vpn_ipsec_keys_edit.php
@@ -169,7 +169,7 @@ $section->addInput(new Form_Input(
'Identifier',
'text',
$pconfig['ident']
-))->setHelp('This can be either an IP address, fully qualified domain name or an e-mail address');
+))->setHelp('This can be either an IP address, fully qualified domain name or an e-mail address.');
$section->addInput(new Form_Select(
'type',
diff --git a/src/usr/local/www/vpn_ipsec_phase1.php b/src/usr/local/www/vpn_ipsec_phase1.php
index 29d521f..92a6c48 100644
--- a/src/usr/local/www/vpn_ipsec_phase1.php
+++ b/src/usr/local/www/vpn_ipsec_phase1.php
@@ -455,7 +455,7 @@ if ($_POST) {
if (!$input_errors) {
$ph1ent['ikeid'] = $pconfig['ikeid'];
$ph1ent['iketype'] = $pconfig['iketype'];
- if ($pconfig['iketype'] != 'ikev1') {
+ if ($pconfig['iketype'] == 'ikev2') {
unset($ph1ent['mode']);
} else {
$ph1ent['mode'] = $pconfig['mode'];
@@ -662,10 +662,8 @@ function build_eal_list() {
if ($pconfig['mobile']) {
$pgtitle = array(gettext("VPN"), gettext("IPsec"), gettext("Mobile Clients"), gettext("Edit Phase 1"));
- $editing_mobile = true;
} else {
$pgtitle = array(gettext("VPN"), gettext("IPsec"), gettext("Tunnels"), gettext("Edit Phase 1"));
- $editing_mobile = false;
}
$shortcut_section = "ipsec";
@@ -677,8 +675,8 @@ if ($input_errors) {
}
$tab_array = array();
-$tab_array[] = array(gettext("Tunnels"), !$editing_mobile, "vpn_ipsec.php");
-$tab_array[] = array(gettext("Mobile Clients"), $editing_mobile, "vpn_ipsec_mobile.php");
+$tab_array[] = array(gettext("Tunnels"), true, "vpn_ipsec.php");
+$tab_array[] = array(gettext("Mobile Clients"), false, "vpn_ipsec_mobile.php");
$tab_array[] = array(gettext("Pre-Shared Keys"), false, "vpn_ipsec_keys.php");
$tab_array[] = array(gettext("Advanced Settings"), false, "vpn_ipsec_settings.php");
display_top_tabs($tab_array);
@@ -721,7 +719,7 @@ if (!$pconfig['mobile']) {
'Remote Gateway',
'text',
$pconfig['remotegw']
- ))->setHelp('Enter the public IP address or host name of the remote gateway');
+ ))->setHelp('Enter the public IP address or host name of the remote gateway.');
}
$section->addInput(new Form_Input(
@@ -1136,17 +1134,17 @@ events.push(function() {
//});
// Peer identifier
- $('#peerid_type').click(function () {
+ $('#peerid_type').change(function () {
peeridsel_change();
});
// My identifier
- $('#myid_type').click(function () {
+ $('#myid_type').change(function () {
myidsel_change();
});
// ike type
- $('#iketype').click(function () {
+ $('#iketype').change(function () {
iketype_change();
});
@@ -1156,7 +1154,7 @@ events.push(function() {
});
// authentication method
- $('#ealgo').click(function () {
+ $('#ealgo').change(function () {
ealgosel_change(<?=$keyset?>);
});
diff --git a/src/usr/local/www/vpn_ipsec_settings.php b/src/usr/local/www/vpn_ipsec_settings.php
index 3c75716..d256de8 100644
--- a/src/usr/local/www/vpn_ipsec_settings.php
+++ b/src/usr/local/www/vpn_ipsec_settings.php
@@ -325,9 +325,9 @@ $section->addInput(new Form_Checkbox(
'Accept unencrypted ID and HASH payloads in IKEv1 Main Mode',
$pconfig['acceptunencryptedmainmode']
))->setHelp(
- 'Some implementations send the third Main Mode message unencrypted, probably to find the PSKs for the specified ID for authentication.' .
+ 'Some implementations send the third Main Mode message unencrypted, probably to find the PSKs for the specified ID for authentication. ' .
'This is very similar to Aggressive Mode, and has the same security implications: ' .
- 'A passive attacker can sniff the negotiated Identity, and start brute forcing the PSK using the HASH payload.' .
+ 'A passive attacker can sniff the negotiated Identity, and start brute forcing the PSK using the HASH payload. ' .
'It is recommended to keep this option to no, unless the exact implications are known and compatibility is required for such devices (for example, some SonicWall boxes).'
);
@@ -376,9 +376,9 @@ $section->addInput(new Form_Checkbox(
'Make before Break',
'Initiate IKEv2 reauthentication with a make-before-break',
$pconfig['makebeforebreak']
-))->setHelp('instead of a break-before-make scheme. Make-before-break uses overlapping IKE and CHILD_SA during reauthentication ' .
+))->setHelp('Instead of a break-before-make scheme. Make-before-break uses overlapping IKE and CHILD_SA during reauthentication ' .
'by first recreating all new SAs before deleting the old ones. This behavior can be beneficial to avoid connectivity gaps ' .
- 'during reauthentication, but requires support for overlapping SAs by the peer');
+ 'during reauthentication, but requires support for overlapping SAs by the peer.');
$section->addInput(new Form_Checkbox(
'autoexcludelanaddress',
diff --git a/src/usr/local/www/vpn_l2tp.php b/src/usr/local/www/vpn_l2tp.php
index 7bc0d68..ec1a4d9 100644
--- a/src/usr/local/www/vpn_l2tp.php
+++ b/src/usr/local/www/vpn_l2tp.php
@@ -79,7 +79,7 @@ $pconfig['radiusenable'] = isset($l2tpcfg['radius']['enable']);
$pconfig['radacct_enable'] = isset($l2tpcfg['radius']['accounting']);
$pconfig['radiusserver'] = $l2tpcfg['radius']['server'];
$pconfig['radiussecret'] = $l2tpcfg['radius']['secret'];
-$pconfig['radiusissueips'] = $l2tpcfg['radius']['radiusissueips'];
+$pconfig['radiusissueips'] = isset($l2tpcfg['radius']['radiusissueips']);
$pconfig['n_l2tp_units'] = $l2tpcfg['n_l2tp_units'];
$pconfig['paporchap'] = $l2tpcfg['paporchap'];
$pconfig['secret'] = $l2tpcfg['secret'];
@@ -306,14 +306,14 @@ $section->addInput(new Form_Select(
$section->addInput(new Form_Input(
'l2tp_dns1',
- 'Primary L2TM DNS server',
+ 'Primary L2TP DNS server',
'text',
$pconfig['l2tp_dns1']
));
$section->addInput(new Form_Input(
'l2tp_dns2',
- 'Secondary L2TM DNS server',
+ 'Secondary L2TP DNS server',
'text',
$pconfig['l2tp_dns2']
));
diff --git a/src/usr/local/www/vpn_openvpn_client.php b/src/usr/local/www/vpn_openvpn_client.php
index 5a25af0..58f6c63 100644
--- a/src/usr/local/www/vpn_openvpn_client.php
+++ b/src/usr/local/www/vpn_openvpn_client.php
@@ -462,7 +462,7 @@ if ($act=="new" || $act=="edit"):
'Disabled',
'Disable this client',
$pconfig['disable']
- ))->setHelp('Set this option to disable this client without removing it from the list');
+ ))->setHelp('Set this option to disable this client without removing it from the list.');
$section->addInput(new Form_Select(
'mode',
@@ -521,6 +521,13 @@ if ($act=="new" || $act=="edit"):
$pconfig['proxy_addr']
));
+ $section->addInput(new Form_Input(
+ 'proxy_port',
+ 'Proxy port',
+ number,
+ $pconfig['proxy_port']
+ ));
+
$section->addInput(new Form_Select(
'proxy_authtype',
'Proxy Auth. - Extra options',
@@ -687,7 +694,7 @@ if ($act=="new" || $act=="edit"):
'text',
$pconfig['tunnel_network']
))->setHelp('This is the IPv4 virtual network used for private communications between this client and the server ' .
- 'expressed using CIDR (eg. 10.0.8.0/24). The second network address will be assigned to ' .
+ 'expressed using CIDR (e.g. 10.0.8.0/24). The second network address will be assigned to ' .
'the client virtual interface.');
$section->addInput(new Form_Input(
@@ -696,7 +703,7 @@ if ($act=="new" || $act=="edit"):
'text',
$pconfig['tunnel_networkv6']
))->setHelp('This is the IPv6 virtual network used for private ' .
- 'communications between this client and the server expressed using CIDR (eg. fe80::/64). ' .
+ 'communications between this client and the server expressed using CIDR (e.g. fe80::/64). ' .
'The second network address will be assigned to the client virtual interface.');
$section->addInput(new Form_Input(
@@ -765,7 +772,7 @@ if ($act=="new" || $act=="edit"):
'Don\'t add/remove routes',
'Don\'t add or remove routes automatically',
$pconfig['route_no_exec']
- ))->setHelp('Pass routes to --route-upscript using environmental variables');
+ ))->setHelp('Pass routes to --route-upscript using environmental variables.');
$form->add($section);
@@ -776,17 +783,17 @@ if ($act=="new" || $act=="edit"):
'custom_options',
'Custom options',
$pconfig['custom_options']
- ))->setHelp('Enter any additional options to add to the OpenVPN client configuration here, separated by semicolon');
+ ))->setHelp('Enter any additional options to add to the OpenVPN client configuration here, separated by semicolon.');
$section->addInput(new Form_Select(
'verbosity_level',
'Verbosity level',
$pconfig['verbosity_level'],
$openvpn_verbosity_level
- ))->setHelp('Each level shows all info from the previous levels. Level 3 is recommended for a good summary of what\'s happening without being swamped by output' . '<br /><br />' .
+ ))->setHelp('Each level shows all info from the previous levels. Level 3 is recommended for a good summary of what\'s happening without being swamped by output.' . '<br /><br />' .
'None: Only fatal errors' . '<br />' .
'Default through 4: Normal usage range' . '<br />' .
- '5: Output R and W characters to the console for each packet read and write, uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets' .'<br />' .
+ '5: Output R and W characters to the console for each packet read and write. Uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets.' .'<br />' .
'6-11: Debug info range');
$section->addInput(new Form_Input(
diff --git a/src/usr/local/www/vpn_openvpn_csc.php b/src/usr/local/www/vpn_openvpn_csc.php
index 66422da..0ad064d 100644
--- a/src/usr/local/www/vpn_openvpn_csc.php
+++ b/src/usr/local/www/vpn_openvpn_csc.php
@@ -394,7 +394,7 @@ if ($act == "new" || $act == "edit"):
'Tunnel Network',
'text',
$pconfig['tunnel_network']
- ))->setHelp('This is the virtual network used for private communications between this client and the server expressed using CIDR (eg. 10.0.8.0/24). ' .
+ ))->setHelp('This is the virtual network used for private communications between this client and the server expressed using CIDR (e.g. 10.0.8.0/24). ' .
'The first network address is assumed to be the server address and the second network address will be assigned to the client virtual interface. ');
$section->addInput(new Form_Input(
diff --git a/src/usr/local/www/vpn_openvpn_server.php b/src/usr/local/www/vpn_openvpn_server.php
index 3af8448..12a883c 100644
--- a/src/usr/local/www/vpn_openvpn_server.php
+++ b/src/usr/local/www/vpn_openvpn_server.php
@@ -630,7 +630,7 @@ if ($act=="new" || $act=="edit"):
'Disabled',
'Disable this server',
$pconfig['disable']
- ))->setHelp('Set this option to disable this server without removing it from the list');
+ ))->setHelp('Set this option to disable this server without removing it from the list.');
$section->addInput(new Form_Select(
'mode',
@@ -850,9 +850,9 @@ if ($act=="new" || $act=="edit"):
'text',
$pconfig['tunnel_network']
))->setHelp('This is the IPv4 virtual network used for private communications between this server and client ' .
- 'hosts expressed using CIDR (eg. 10.0.8.0/24). The first network address will be assigned to ' .
+ 'hosts expressed using CIDR (e.g. 10.0.8.0/24). The first network address will be assigned to ' .
'the server virtual interface. The remaining network addresses can optionally be assigned ' .
- 'to connecting clients. (see Address Pool)');
+ 'to connecting clients (see Address Pool).');
$section->addInput(new Form_Input(
'tunnel_networkv6',
@@ -860,9 +860,9 @@ if ($act=="new" || $act=="edit"):
'text',
$pconfig['tunnel_networkv6']
))->setHelp('This is the IPv6 virtual network used for private ' .
- 'communications between this server and client hosts expressed using CIDR (eg. fe80::/64). ' .
+ 'communications between this server and client hosts expressed using CIDR (e.g. fe80::/64). ' .
'The first network address will be assigned to the server virtual interface. The remaining ' .
- 'network addresses can optionally be assigned to connecting clients. (see Address Pool)');
+ 'network addresses can optionally be assigned to connecting clients (see Address Pool).');
$section->addInput(new Form_Checkbox(
'serverbridge_dhcp',
@@ -876,7 +876,7 @@ if ($act=="new" || $act=="edit"):
'Bridge Interface',
$pconfig['serverbridge_interface'],
openvpn_build_bridge_list()
- ))->setHelp('The interface to which this tap instance will be bridged. This is not done automatically. This interface must be assigned ' .
+ ))->setHelp('The interface to which this TAP instance will be bridged. This is not done automatically. This interface must be assigned ' .
'and the bridge created separately. This setting controls which existing IP address and subnet ' .
'mask are used by OpenVPN for the bridge. Setting this to "none" will cause the Server Bridge DHCP settings below to be ignored.');
@@ -885,8 +885,8 @@ if ($act=="new" || $act=="edit"):
'Server Bridge DHCP Start',
'text',
$pconfig['serverbridge_dhcp_start']
- ))->setHelp('When using tap mode as a multi-point server, a DHCP range may optionally be supplied to use on the ' .
- 'interface to which this tap instance is bridged. If these settings are left blank, DHCP will be passed ' .
+ ))->setHelp('When using TAP mode as a multi-point server, a DHCP range may optionally be supplied to use on the ' .
+ 'interface to which this TAP instance is bridged. If these settings are left blank, DHCP will be passed ' .
'through to the LAN, and the interface setting above will be ignored.');
$section->addInput(new Form_Input(
@@ -992,14 +992,14 @@ if ($act=="new" || $act=="edit"):
$section->addInput(new Form_Checkbox(
'dynamic_ip',
'Dynamic IP',
- 'Allow connected clients to retain their connections if their IP address changes',
+ 'Allow connected clients to retain their connections if their IP address changes.',
$pconfig['dynamic_ip']
));
$section->addInput(new Form_Checkbox(
'pool_enable',
'Address Pool',
- 'Provide a virtual adapter IP address to clients (see Tunnel Network)',
+ 'Provide a virtual adapter IP address to clients (see Tunnel Network).',
$pconfig['pool_enable']
));
@@ -1008,7 +1008,7 @@ if ($act=="new" || $act=="edit"):
'Topology',
$pconfig['topology'],
$openvpn_topologies
- ))->setHelp('Specifies the method used to supply a virtual adapter IP address to clients when using tun mode on IPv4.' . '<br />' .
+ ))->setHelp('Specifies the method used to supply a virtual adapter IP address to clients when using TUN mode on IPv4.' . '<br />' .
'Some clients may require this be set to "subnet" even for IPv6, such as OpenVPN Connect (iOS/Android). ' .
'Older versions of OpenVPN (before 2.0.9) or clients such as Yealink phones may require "net30".');
@@ -1099,7 +1099,7 @@ if ($act=="new" || $act=="edit"):
'NetBIOS enable',
'Enable NetBIOS over TCP/IP',
$pconfig['netbios_enable']
- ))->setHelp('If this option is not set, all NetBIOS-over-TCP/IP options (including WINS) will be disabled');
+ ))->setHelp('If this option is not set, all NetBIOS-over-TCP/IP options (including WINS) will be disabled.');
$section->addInput(new Form_Select(
'netbios_ntype',
@@ -1162,7 +1162,7 @@ if ($act=="new" || $act=="edit"):
'custom_options',
'Custom options',
$pconfig['custom_options']
- ))->setHelp('Enter any additional options to add to the OpenVPN server configuration here, separated by semicolon' . '<br />' .
+ ))->setHelp('Enter any additional options to add to the OpenVPN server configuration here, separated by semicolon.' . '<br />' .
'EXAMPLE: push "route 10.0.0.0 255.255.255.0"');
$section->addInput(new Form_Select(
@@ -1170,10 +1170,10 @@ if ($act=="new" || $act=="edit"):
'Verbosity level',
$pconfig['verbosity_level'],
$openvpn_verbosity_level
- ))->setHelp('Each level shows all info from the previous levels. Level 3 is recommended for a good summary of what\'s happening without being swamped by output' . '<br /><br />' .
+ ))->setHelp('Each level shows all info from the previous levels. Level 3 is recommended for a good summary of what\'s happening without being swamped by output.' . '<br /><br />' .
'None: Only fatal errors' . '<br />' .
'Default through 4: Normal usage range' . '<br />' .
- '5: Output R and W characters to the console for each packet read and write, uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets' .'<br />' .
+ '5: Output R and W characters to the console for each packet read and write. Uppercase is used for TCP/UDP packets and lowercase is used for TUN/TAP packets.' .'<br />' .
'6-11: Debug info range');
$section->addInput(new Form_Input(
@@ -1589,7 +1589,7 @@ events.push(function() {
});
// Mode
- $('#mode').click(function () {
+ $('#mode').change(function () {
mode_change();
tuntap_change();
});
diff --git a/src/usr/local/www/widgets/widgets/captive_portal_status.widget.php b/src/usr/local/www/widgets/widgets/captive_portal_status.widget.php
index dc322cb..f610cf0 100644
--- a/src/usr/local/www/widgets/widgets/captive_portal_status.widget.php
+++ b/src/usr/local/www/widgets/widgets/captive_portal_status.widget.php
@@ -74,6 +74,7 @@ $cpzone = $_GET['zone'];
if (isset($_POST['zone'])) {
$cpzone = $_POST['zone'];
}
+$cpzone = strtolower($cpzone);
if (isset($cpzone) && !empty($cpzone) && isset($a_cp[$cpzone]['zoneid'])) {
$cpzoneid = $a_cp[$cpzone]['zoneid'];
@@ -155,4 +156,4 @@ if ($_GET['order']) {
endforeach;
?>
</tbody>
-</table> \ No newline at end of file
+</table>
diff --git a/src/usr/local/www/widgets/widgets/carp_status.widget.php b/src/usr/local/www/widgets/widgets/carp_status.widget.php
index 567a3db..8a7ba85 100644
--- a/src/usr/local/www/widgets/widgets/carp_status.widget.php
+++ b/src/usr/local/www/widgets/widgets/carp_status.widget.php
@@ -68,9 +68,9 @@ $carp_enabled = get_carp_status();
<table class="table table-striped table-hover">
<thead>
<tr>
- <th>CARP Interface</th>
- <th>IP Address</th>
- <th>Status</th>
+ <th><?=gettext("CARP Interface")?></th>
+ <th><?=gettext("IP Address")?></th>
+ <th><?=gettext("Status")?></th>
</tr>
</thead>
<tbody>
diff --git a/src/usr/local/www/widgets/widgets/gateways.widget.php b/src/usr/local/www/widgets/widgets/gateways.widget.php
index fd8aa8f..422c0ab 100644
--- a/src/usr/local/www/widgets/widgets/gateways.widget.php
+++ b/src/usr/local/www/widgets/widgets/gateways.widget.php
@@ -131,14 +131,22 @@ if ($_POST) {
}
}
?>
- <input name="display_type" class="radio" type="radio" id="display_type_gw_ip" value="gw_ip" <?=$display_type_gw_ip;?> onchange="updateGatewayDisplays();" /> <span><?=gettext('Gateway IP')?></span>
- <input name="display_type" class="radio" type="radio" id="display_type_monitor_ip" value="monitor_ip" <?=$display_type_monitor_ip;?> onchange="updateGatewayDisplays();" /> <span><?=gettext('Monitor IP')?></span>
- <input name="display_type" class="radio" type="radio" id="display_type_both_ip" value="both_ip" <?=$display_type_both_ip;?> onchange="updateGatewayDisplays();" /> <span><?=gettext('Both')?></span>
- <br /><br />
+
+ <div class="radio">
+ <label><input name="display_type" type="radio" id="display_type_gw_ip" value="gw_ip" <?=$display_type_gw_ip;?> onchange="updateGatewayDisplays();" /> <?=gettext('Gateway IP')?></label>
+ </div>
+ <div class="radio">
+ <label><input name="display_type" type="radio" id="display_type_monitor_ip" value="monitor_ip" <?=$display_type_monitor_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Monitor IP')?></label>
+ </div>
+ <div class="radio">
+ <label><input name="display_type" type="radio" id="display_type_both_ip" value="both_ip" <?=$display_type_both_ip;?> onchange="updateGatewayDisplays();" /><?=gettext('Both')?></label>
+ </div>
+ <br />
<button id="submit_settings" name="submit_settings" type="submit" onclick="return updatePref();" class="btn btn-primary btn-sm" value="<?=gettext('Save Settings')?>">
<i class="fa fa-save icon-embed-btn"></i>
<?=gettext('Save Settings')?>
</button>
+
</form>
</div>
diff --git a/src/usr/local/www/widgets/widgets/smart_status.widget.php b/src/usr/local/www/widgets/widgets/smart_status.widget.php
index 42feb40..571cf31 100644
--- a/src/usr/local/www/widgets/widgets/smart_status.widget.php
+++ b/src/usr/local/www/widgets/widgets/smart_status.widget.php
@@ -61,7 +61,7 @@ require_once("guiconfig.inc");
require_once("pfsense-utils.inc");
require_once("functions.inc");
require_once("/usr/local/www/widgets/include/smart_status.inc");
-
+$specplatform = system_identify_specific_platform();
?>
<table class="table table-striped table-hover">
diff --git a/src/usr/local/www/widgets/widgets/system_information.widget.php b/src/usr/local/www/widgets/widgets/system_information.widget.php
index 28189e3..aa1ea06 100644
--- a/src/usr/local/www/widgets/widgets/system_information.widget.php
+++ b/src/usr/local/www/widgets/widgets/system_information.widget.php
@@ -120,7 +120,7 @@ $filesystems = get_mounted_filesystems();
<tr>
<th><?=gettext("Version");?></th>
<td>
- <strong><?=$g['product_version']?></strong>
+ <strong><?=$g['product_version_string']?></strong>
(<?php echo php_uname("m"); ?>)
<br />
<?=gettext('built on')?> <?php readfile("/etc/version.buildtime"); ?>
@@ -242,9 +242,12 @@ $filesystems = get_mounted_filesystems();
<tr>
<th><?=gettext("Temperature");?></th>
<td>
- <?php $TempMeter = $temp = get_temp(); ?>
- <div id="tempPB"></div>
- <span id="tempmeter"><?= $temp."&#176;C"; ?></span>
+ <?php $temp_deg_c = get_temp(); ?>
+ <div class="progress">
+ <div id="tempPB" class="progress-bar progress-bar-striped" role="progressbar" aria-valuenow="<?=$temp_deg_c?>" aria-valuemin="0" aria-valuemax="100" style="width: <?=$temp_deg_c?>%">
+ </div>
+ </div>
+ <span id="tempmeter"><?= $temp_deg_c . "&deg;C"; ?></span>
</td>
</tr>
<?php endif; ?>
@@ -399,7 +402,7 @@ function updateMemory(x) {
function updateMbuf(x) {
if ($('#mbuf')) {
- $("#mbuf").html(x);
+ $("#mbuf").html('(' + x + ')');
}
}
@@ -429,10 +432,10 @@ function updateCPU(x) {
function updateTemp(x) {
if ($("#tempmeter")) {
- $("#tempmeter").html(x + '\u00B0' + 'C');
+ $("#tempmeter").html(x + '&deg;' + 'C');
}
if ($('#tempPB')) {
- $("#tempPB").progressbar( { value: parseInt(x) } );
+ setProgress('tempPB', parseInt(x));
}
}
diff --git a/src/usr/local/www/wizards/setup_wizard.xml b/src/usr/local/www/wizards/setup_wizard.xml
index 5abcab5..59253eb 100644
--- a/src/usr/local/www/wizards/setup_wizard.xml
+++ b/src/usr/local/www/wizards/setup_wizard.xml
@@ -74,7 +74,7 @@
<id>2</id>
<title>Bling your pfSense with pfSense Gold</title>
<disableheader>true</disableheader>
- <description>Feel the power of a pfSense Gold subscription. Receive special benefits while supporting ongoing development of the Open Source pfSense project.&lt;br/&gt; &lt;br/&gt; Benefits include access to our AutoConfigBackup secure cloud based backup service for up to 10 hosts, pre-publication access to the updated pfSense: The Definitive Guide book in PDF, fully updated for the pfSense 2.1 release, and a monthly online MeetUp! Video conference to discuss and demonstrate advanced features and architectures using pfSense. &lt;br/&gt; &lt;br/&gt; Go to &lt;a href="https://www.pfsense.org/gold" target="_blank"&gt; pfSense Gold Subscriptions&lt;/a&gt; to sign up now &lt;br/&gt; &lt;br/&gt; </description>
+ <description>Feel the power of a pfSense Gold subscription. Receive special benefits while supporting ongoing development of the Open Source pfSense project.&lt;br/&gt; &lt;br/&gt; Benefits include access to our AutoConfigBackup secure cloud based backup service for up to 10 hosts, pre-publication access to the updated pfSense: The Definitive Guide book in PDF, fully updated for the pfSense 2.1 release, and a monthly online MeetUp! Video conference to discuss and demonstrate advanced features and architectures using pfSense. &lt;br/&gt; &lt;br/&gt; Go to &lt;a href="https://www.pfsense.org/gold" target="_blank"&gt; pfSense Gold Subscriptions&lt;/a&gt; to sign up now. &lt;br/&gt; &lt;br/&gt; </description>
<fields>
<field>
<name>Next</name>
@@ -589,8 +589,9 @@
$_POST['ipaddress'] = $_POST['selectedtype'];
$config['interfaces']['wan']['ipaddr'] = $_POST['selectedtype'];
write_config();
- if(!$config['interfaces']['lan'])
- header("Location: /wizard.php?xml=setup_wizard.xml&stepid=6&next=Next");
+ }
+ if(!$config['interfaces']['lan']) {
+ header("Location: /wizard.php?xml=setup_wizard.xml&stepid=6&next=Next");
}
]]>
</stepsubmitbeforesave>
@@ -789,10 +790,10 @@
</stepbeforeformdisplay>
<description>
<![CDATA[
- Congratulations! pfSense is now configured.<p/>
- Please consider contributing back to the project!<p/>
- Click <a target='_new' href='https://www.pfsense.org/get-involved/index.html'>here</a> to purchase services offered by the pfSense team and find other ways to contribute.<p/>
- Click <a href='$myurl'>here</a> to continue on to pfSense webConfigurator.
+ Congratulations! pfSense is now configured.<p>
+ Please consider contributing back to the project!</p><p>
+ Click <a target='_blank' href='https://www.pfsense.org/get-involved/index.html'>here</a> to purchase services offered by the pfSense team and find other ways to contribute.</p><p>
+ Click <a href='$myurl'>here</a> to continue on to pfSense webConfigurator.</p>
]]>
</description>
</step>
OpenPOWER on IntegriCloud