From 897ba1ee0baa438969238211b815f7ba437875ef Mon Sep 17 00:00:00 2001 From: Christian Hofstaedtler Date: Mon, 7 Nov 2011 19:18:47 +0100 Subject: [PATCH] Remove missing files from grml-www -> grml.org migration --- scripts/get_tw_cli | 63 ++++ scripts/google_correct.txt | 145 +++++++++ scripts/grml-config.sh | 8 + scripts/grml-vpnc-tugraz | 118 +++++++ scripts/index.html | 10 + scripts/netcardconfig | 752 +++++++++++++++++++++++++++++++++++++++++++++ team/alfie.png | Bin 0 -> 6445 bytes team/ch.png | Bin 0 -> 9876 bytes team/formorer.png | Bin 0 -> 13500 bytes team/gebi.png | Bin 0 -> 7600 bytes team/jimmy.png | Bin 0 -> 8207 bytes team/mikap.png | Bin 0 -> 8120 bytes team/mrud.png | Bin 0 -> 9006 bytes 13 files changed, 1096 insertions(+) create mode 100644 scripts/get_tw_cli create mode 100644 scripts/google_correct.txt create mode 100644 scripts/grml-config.sh create mode 100644 scripts/grml-vpnc-tugraz create mode 100644 scripts/index.html create mode 100644 scripts/netcardconfig create mode 100644 team/alfie.png create mode 100644 team/ch.png create mode 100644 team/formorer.png create mode 100644 team/gebi.png create mode 100644 team/jimmy.png create mode 100644 team/mikap.png create mode 100644 team/mrud.png diff --git a/scripts/get_tw_cli b/scripts/get_tw_cli new file mode 100644 index 0000000..1dbbdbe --- /dev/null +++ b/scripts/get_tw_cli @@ -0,0 +1,63 @@ +#!/bin/sh +# Filename: get_tw_cli +# Purpose: get 3ware RAID controller command line interface tool (tw_cli) +# Authors: grml-team (grml.org), (c) Michael Prokop , Wolfram Schlich +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +# Latest change: Thu Feb 09 12:20:30 CET 2006 [mika] +################################################################################ +# Notice: this file is based on: +# Copyright 1999-2006 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/www/www.gentoo.org/raw_cvs/gentoo-x86/sys-block/tw_cli/tw_cli-9.3.0.2.ebuild,v 1.1 2006/01/12 23:36:17 wschlich Exp $ +################################################################################ + +if [ -r /etc/grml/lsb-functions ] ; then + . /etc/grml/lsb-functions +else + alias einfo="echo" +fi + +PN="tw_cli" +PV="9.3.0.2" +MY_P="${PN}-linux-x86-${PV}" +SRC_URI_BASE="http://www.3ware.com/download/Escalade9000Series/${PV}" +SRC_URI="${SRC_URI_BASE}/${PN}-linux-x86-${PV}.tgz" +DOWNLOAD_URL="http://www.3ware.com/support/windows_agree.asp?path=/download/Escalade9000Series/${PV}/${MY_P}.tgz" + +info() { + einfo "get_tw_cli - get 3ware RAID controller command line interface tool (tw_cli)" + einfo "===========================================================================" + einfo "" +} + +supportedcards() { + einfo "This binary supports all current cards, including, but not limited to:" + einfo "" + einfo "PATA: 7210, 7410, 7450, 7810, 7850, 7000-2, 7500-4, 7500-8," + einfo " 7500-12, 7006-2, 7506-4, 7506-4LP, 7506-8, 7506-12" + einfo "" + einfo "SATA: 8500-4, 8500-8, 8500-12, 8006-2, 8506-4, 8506-12," + einfo " 8506-8MI, 8506-12MI, 9500S-4LP, 9500S-8, 9500S-12," + einfo " 9500S-8MI, 9500S-12MI" + einfo " 9500S-8MI, 9500S-12MI" + einfo "" +} + +pkg_nofetch() { + einfo "Please agree to the license at URL" + einfo "" + einfo "\t${DOWNLOAD_URL}" + einfo "" + einfo "And then use the following URL to download the correct tarball:" + einfo "" + einfo "\t${SRC_URI}" + einfo "" +} + +info +pkg_nofetch +supportedcards +# unp ${MY_P}.tgz + +## END OF FILE ################################################################# diff --git a/scripts/google_correct.txt b/scripts/google_correct.txt new file mode 100644 index 0000000..e2cc0d3 --- /dev/null +++ b/scripts/google_correct.txt @@ -0,0 +1,145 @@ +#!/usr/bin/env python2.5 +""" +Filename: google_correct.py +Purpose: correct a keyword using google search +Authors: (c) Michael Prokop +Bug-Reports: see http://grml.org/bugs/ +License: This file is licensed under the GPL v2 or any later version. +Latest change: Sun Mar 09 19:19:04 CET 2008 [mika] + +Notice: + +* requires xsel binary +* requires python >= 2.4 (for urllib2), version 2.5 suggested :) +* if python-notify is installed it's used as notification system + +History: + +* 2008-03-09: improve cmdline parsing logic [gregor herrmann] + include support for libnotify [mika] + usage information for -h/--help [mika] + provide output on stdout even when using xsel [mika] +* 2008-02-11: initial version [mika] + +Whishlist: + +* support multiple keywords in one single invocation +* use python-xlib instead of xsel, + like in http://kalvdans.no-ip.org/svn/saturnapps/selection.py ? +* support something like a search gateway for anonymous search requests +* support different backends (like fuzzy search in local dictionaries) +* provide small selection menu for X, vim,... +""" + +import os +import re +import urllib +import urllib2 +import subprocess +import sys + +_correction_re = re.compile(r']*>Did you mean: ]*>' + r'(.*?)(?i)') + +def usage(): + print """ +google_correct.py: correct a keyword using google's 'Did you mean' feature + +Usage: + + Either run: + + google_correct.py + + or select keyword in X and execute the script to set new X selection: + + google_correct.py + +Send bug reports, feature requests and patches to Michael Prokop +""" + +def which(filename): + """Check whether a given program can be executed""" + for path in (os.environ.get('PATH') or os.defpath).split(os.pathsep): + myfile = os.path.join(path, filename) + if os.access(myfile, os.X_OK): + return myfile + +def correct_keyword(keyword): + """Correct spelling of a keyword using google's 'Did you mean' feature""" + req = urllib2.Request('http://www.google.com/search?%s' % urllib.urlencode({ + 'q': keyword.encode('utf-8'), + 'spell': '1' + })) + req.add_header('User-Agent', 'Mikas-Keyword-Corrector/1.0 :-)') + resp = urllib2.urlopen(req) + match = _correction_re.search(resp.read()) + return match and match.group(1) or keyword + +# would be nice to support multiple keywords at once, +# needs work in _correction_re though: +#def cmdline(): +# for argument in sys.argv[1:]: +# return ' '.join(arg for arg in sys.argv[1:]) +#keyword = cmdline() + +def get_x_selection(): + """Get X selection""" + proc = subprocess.Popen(['xsel', ], stdout=subprocess.PIPE) + x_selection = proc.stdout.read() + proc.stdout.close() + proc.wait() + return x_selection + +def set_x_selection(keyword): + """Set X selection to the given keyword""" + proc = subprocess.Popen(['xsel', '-i'], stdin=subprocess.PIPE) + proc.stdin.write(keyword) + proc.stdin.close() + proc.wait() + +def default_cb(n, action): + assert action == "default" + print "You clicked the default action" + n.close() + gtk.main_quit() + +def notify(new_keyword, old_keyword): + try: + import pynotify + if pynotify.init("google_correct"): + if new_keyword is not old_keyword: + n = pynotify.Notification("New keyword for \"%s\":" % old_keyword, new_keyword) + else: + n = pynotify.Notification("google_correct result:", "No new keyword for \"%s\" found" % old_keyword) + + n.set_timeout(2000) + n.show() + except: + return 0 # don't print anything because someone might use the output :) + +if __name__ == '__main__': + if '--help' in sys.argv or '-h' in sys.argv: + usage() + sys.exit(1); + + if sys.argv[1:]: + # print it to stdout: + old_keyword = sys.argv[1] + new_keyword = correct_keyword(old_keyword) + print new_keyword + notify(new_keyword, old_keyword) + # or if you prefer to put it directly to X selection: + #set_x_selection(correct_keyword(sys.argv[1])) + else: + if which('xsel'): + old_keyword = get_x_selection() + new_keyword = correct_keyword(old_keyword) + print new_keyword + set_x_selection(new_keyword) + notify(new_keyword, old_keyword) + else: + sys.exit("Sorry, xsel not found. Exiting.") + +## END OF FILE ################################################################# +# vim: ft=python tw=100 ai et diff --git a/scripts/grml-config.sh b/scripts/grml-config.sh new file mode 100644 index 0000000..d8a134b --- /dev/null +++ b/scripts/grml-config.sh @@ -0,0 +1,8 @@ +#!/bin/sh +# IMPORTANT: please note that you might override existing +# configuration files in the current working directory! => +wget -O .screenrc http://git.grml.org/f/grml-etc-core/etc/grml/screenrc_generic +wget -O .vimrc http://git.grml.org/f/grml-etc-core/etc/vim/vimrc +wget -O .zshrc http://git.grml.org/f/grml-etc-core/etc/zsh/zshrc +# optional: +# wget -O .zshrc.local http://git.grml.org/f/grml-etc-core/etc/skel/.zshrc diff --git a/scripts/grml-vpnc-tugraz b/scripts/grml-vpnc-tugraz new file mode 100644 index 0000000..3e15901 --- /dev/null +++ b/scripts/grml-vpnc-tugraz @@ -0,0 +1,118 @@ +#!/bin/sh +# Filename: grml-vpnc-tugraz +# Purpose: connect via vpnc in VC-Graz/TU Graz (www.vc-graz.ac.at / www.tugraz.at) +# Authors: grml-team (grml.org), (c) Michael Prokop +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +# Latest change: Tue Mar 28 10:02:46 CEST 2006 [mika] +################################################################################ + +# Documentation: +# http://www.zid.tugraz.at/ki/netz/extern/vpn/ + +LANG=C +LC_ALL=C + +if [ "$UID" != 0 ]; then + sudo $0 + exit +fi + +function typeofservice() { +NETWORK=$(dialog --stdout --clear --title "foobar" --menu \ +"This script is a submenu of grml-network to set up an internet connection + +Notice if you want to connect to WLAN at TU Graz: +Make sure you have a connection to the access point and an ip-address. +Run 'iwconfig \$DEVICE essid tug ; dhclient \$DEVICE'." 0 0 0 \ +"WLAN" "Connect via WLAN to TU Graz network" \ +"VCGraz" "Connect to VC-Graz (not yet tested - use grml-pptp-vcgraz!)" \ +"External" "External connection (not yet tested!)" \ +"Exit" "Exit this program") + +retval=$? + +case $retval in + 0) + if [ $NETWORK == WLAN ]; then + GATEWAY=129.27.200.1 + # GATEWAY=172.27.12.2 + ACCOUNT='Account information - your TUGOnline username' + fi + + if [ $NETWORK == VCGraz ]; then + GATEWAY=10.0.0.1 + ACCOUNT='Account information - your account number' + fi + + if [ $NETWORK == External ]; then + GATEWAY=129.27.200.1 + ACCOUNT='Account information - account number' + fi + ;; + 1) + echo "Cancel pressed." ; exit + ;; + 255) + echo "ESC pressed." ; exit + ;; +esac +} + +runit(){ +echo "# vpnc at $NETWORK" > /etc/vpnc/vpnctugraz.conf +echo " +Debug 0 +IKE DH Group dh2 +Perfect Forward Secrecy dh2 +IPSec gateway $GATEWAY +IPSec ID default +IPSec secret default +Xauth username $ACCOUNTNAME +Xauth password $PASSWORD + +" >> /etc/vpnc/vpnctugraz.conf + +echo -e "#!/bin/sh\nLANG=C\n" > /etc/init.d/vpnctug +cat >> /etc/init.d/vpnctug << "EOF" +case "$1" in + start) + echo "Starting vpnc" +# route del default +# vpnc /etc/vpnc/vpnctugraz.conf + vpnc-connect /etc/vpnc/vpnctugraz.conf +# route add default dev tun0 + ;; + + stop) + echo "Stopping vpnc" + /usr/sbin/vpnc-disconnect + killall -HUP vpnc + ;; + + *) + echo "Usage: /etc/init.d/vpnctug {start|stop}" >&2 + ;; + +esac + +exit 0 +EOF + +chmod 600 /etc/vpnc/vpnctugraz.conf +chmod +x /etc/init.d/vpnctug +/etc/init.d/vpnctug start +} + +typeofservice +if [ -z "$ACCOUNTNAME" ] || [ -z "$PASSWORD" ] ; then + ACCOUNTNAME=$(dialog --stdout --title "vpnc in $NETWORK" --inputbox "${ACCOUNT}:" 0 0) || exit 0 + PASSWORD=$(dialog --stdout --title "vpnc in $NETWORK" --passwordbox "Account password (hidden typing)" 0 40) || exit 0 + [ -z "$ACCOUNTNAME" ] && exit 1 + [ -z "$PASSWORD" ] && exit 1 + runit +else + runit +fi + +## END OF FILE ################################################################# diff --git a/scripts/index.html b/scripts/index.html new file mode 100644 index 0000000..db40a84 --- /dev/null +++ b/scripts/index.html @@ -0,0 +1,10 @@ + + + scripts @ grml.org + + + +

Please visit http://git.grml.org/?p=grml-scripts.git

+ + + diff --git a/scripts/netcardconfig b/scripts/netcardconfig new file mode 100644 index 0000000..8ce6bf0 --- /dev/null +++ b/scripts/netcardconfig @@ -0,0 +1,752 @@ +#!/bin/bash +# Filename: grml-network +# Purpose: configuration script for network +# Authors: Klaus Knopper 2002, Niall Walsh + Stefan Lippers-Hollmann 2005, Michael Prokop , Marcel Wichern +# Bug-Reports: see http://grml.org/bugs/ +# License: This file is licensed under the GPL v2. +# Latest change: Mon Apr 17 21:48:36 CEST 2006 [mika] +################################################################################ +# Changes have been merged from Kanotix's netcardconfig taken from +# http://kanotix.com/files/debian/pool/main/n/netcardconfig-kanotix/ +################################################################################ + +PATH="/bin:/sbin:/usr/bin:/usr/sbin" +export PATH + +# get root +if [ $UID != 0 ]; then + echo Error: become root before starting $0 >&2 + exit 100 +fi + +TMP=$(mktemp) +WPATMP=$(mktemp) + +bailout() { + rm -f "$TMP" + rm -f "$WPATMP" + exit $1 +} + +# This function produces the IWOURLINE for interfaces +writeiwline() { + IWOURLINE="" + if [ -n "$NWID" ]; then + IWOURLINE="$IWOURLINE wireless-nwid $NWID\n" + fi + + if [ -n "$MODE" ]; then + IWOURLINE="$IWOURLINE wireless-mode $MODE\n" + fi + + if [ -n "$CHANNEL" ]; then + IWOURLINE="$IWOURLINE wireless-channel $CHANNEL\n" + fi + + if [ -n "$FREQ" ]; then + IWOURLINE="$IWOURLINE wireless-freq $FREQ\n" + fi + + if [ -n "$KEY" ]; then + if [ "$PUBKEY" -eq 1 ]; then + # Store the key in interfaces in wireless-key + IWOURLINE="$IWOURLINE wireless-key $KEY\n" + else + # Store the key in /etc/network/wep.$DV which is root readable only + # Use pre-up in interfaces to read and set it + echo "$KEY" > /etc/network/wep.$DV && chmod 600 /etc/network/wep.$DV && IWOURLINE="$IWOURLINE pre-up KEY=\$(cat /etc/network/wep.$DV) && iwconfig $DV key \$KEY\n" + fi + fi + + [ -d /sys/module/rt2??0/ ] && IWPREUPLINE="$IWPREUPLINE pre-up /sbin/ifconfig $DV up\n" + + if [ -n "$IWCONFIG" ]; then + IWPREUPLINE="$IWPREUPLINE iwconfig $IWCONFIG\n" + fi + + if [ -n "$IWSPY" ]; then + IWPREUPLINE="$IWPREUPLINE iwspy $IWSPY\n" + fi + + if [ -n "$IWPRIV" ]; then + IWPREUPLINE="$IWPREUPLINE iwpriv $IWPRIV\n" + fi + + # execute ESSID last, but make sure that it is written as first option + if [ -n "$ESSID" ]; then + IWOURLINE="$IWOURLINE wireless-essid $ESSID\n" + fi + + if [ $WPAON -gt 0 ]; then + # Using wpa requires a wpa_supplicant entry + IWPREUPLINE="${IWPREUPLINE}pre-up wpa_supplicant -D$WPA_DEV -i$WLDEVICE -c/etc/wpa_supplicant.conf -B\n" + touch /etc/wpa_supplicant.conf + awk '/^network={/{if(found){found=0}else{found=1;hold=$0}}/ssid={/{if(/ssid='"$ESSID"'/){found=1}else{found=0;print hold}}{if(!found){print}}' /etc/wpa_supplicant.conf >> "$TMP" + wpa_passphrase "$ESSID" "$WPASECRET" 2>/dev/null >> "$TMP" + mv -f /etc/wpa_supplicant.conf /etc/wpa_supplicant.conf.$(date +%Y%m%d_%H%M) + if ! grep -q "For more information take a look at" /etc/wpa_supplicant.conf ; then + cat >$WPATMP <> "$WPATMP" + cat "$WPATMP" "$TMP" > /etc/wpa_supplicant.conf + rm -f $WPATMP 2>/dev/null + IWDOWNLINE="${IWDOWNLINE}down killall wpa_supplicant\n" + fi + + IWOURLINE="$IWOURLINE $IWPREUPLINE $IWDOWNLINE" + #echo "DEBUG: for interfaces $IWOURLINE" +} + +device2props() { + PARTCOUNT=0 + isauto=0 + isfirewire=0 + iswireless=0 + driver="" + mac="" + for PART in $DEVICE; do + if [ $PARTCOUNT -eq 0 ]; then + DEVICENAME=$PART + else + echo $PART | grep -q A::1 && isauto=1 + echo $PART | grep -q F::1 && isfirewire=1 + echo $PART | grep -q W::1 && iswireless=1 + [ -z "$driver" ] && driver=$(echo $PART|awk 'BEGIN {FS="::"} /^D:/{print $2}') + [ -z "$mac" ] && mac=$(echo $PART|awk 'BEGIN {FS="::"} /^M:/{print $2}') + fi + ((PARTCOUNT++)) + done +} + +props2string() { + MY_DEVICE_NAME="" + [ $isfirewire -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_FW" + [ -z "$MY_DEVICE_NAME" -a $iswireless -gt 0 ] && MY_DEVICE_NAME="$NET_DEVICE_NAME_W" + [ -z "$MY_DEVICE_NAME" ] && MY_DEVICE_NAME="$NET_DEVICE_NAME" + MY_DEVICE_NAME="$DEVICENAME $MY_DEVICE_NAME $mac $driver" + [ $isauto -gt 0 ] && MY_DEVICE_NAME="$MY_DEVICE_NAME $NET_DEVICE_NAME_AUTO" + MY_DEVICE_NAME=$(echo $MY_DEVICE_NAME | sed 's/\ /__/g') +} + +addauto() { + if ! egrep -e "^auto[ ]+.*$DV" /etc/network/interfaces >/dev/null; then + awk '{if(/^auto/){if(done==0){print $0 " '"$DV"'";done=1}else{print}}else{print}}END{if(done==0){print "auto '$DV'"}}' "/etc/network/interfaces" > "$TMP" + cat "$TMP" > /etc/network/interfaces + fi +} + +remauto(){ + if egrep -e "^auto[ ]+.*$DV" /etc/network/interfaces >/dev/null; then + perl -pi -e 's/^(auto.*)'$DV'(.*)$/$1$2/;' /etc/network/interfaces + fi +} + +configiface() { + [ ! -r /etc/network/interfaces ] && touch /etc/network/interfaces + DEVICE=${NETDEVICES[$DV]} + device2props + DV=$DEVICENAME + # wireless config + WLDEVICE="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | awk '/802\.11|READY|ESSID/{print $1}')" + WLDEVICECOUNT="$(LANG=C LC_MESSAGEWS=C iwconfig $DV 2>/dev/null | wc -l)" + if [ $iswireless -gt 0 ] && $DIALOG --yesno "$MESSAGE13" 8 45; then + ESSID="" + NWID="" + MODE="" + CHANNEL="" + FREQ="" + SENS="" + RATE="" + KEY="" + RTS="" + FRAG="" + IWCONFIG="" + IWSPY="" + IWPRIV="" + + if [ -f /etc/network/interfaces ]; then + awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}} + /essid/{if(found){for(i=NF;i>=2;i--)essid=$i "~" essid}} + /nwid/{if(found){nwid=$NF}} + /mode/{if(found){mode=$NF}} + /channel/{if(found){channel=$NF}} + /freq/{if(found){freq=$NF}} + /sens/{if(found){sens=$NF}} + /rate/{if(found){rate=$NF}} + /rts/{if(found){rts=$NF}} + /frag/{if(found){frag=$NF}} + /iwconfig/{if(!/KEY/){if(found){iwconfig=$NF}}} + /iwspy/{if(found){iwspy=$NF}} + /iwpriv/{if(found){iwpriv=$NF}} + /wireless[-_]key/{if(found){gsub(/^\W*wireless[-_]key\W*/,"");key=$0}} + END{ + if (!(length(essid))){essid="~~~"} + if (!(length(nwid))){nwid="~~~"} + if (!(length(mode))){mode="~~~"} + if (!(length(channel))){channel="~~~"} + if (!(length(freq))){freq="~~~"} + if (!(length(sens))){sens="~~~"} + if (!(length(rate))){rate="~~~"} + if (!(length(rts))){rts="~~~"} + if (!(length(frag))){frag="~~~"} + if (!(length(iwconfig))){iwconfig="~~~"} + if (!(length(iwspy))){iwspy="~~~"} + if (!(length(iwpriv))){iwpriv="~~~"} + if (!(length(key))){key="~~~"} + print essid" "nwid" "mode" "channel" "freq" "sens" "rate" "rts" "frag" "iwconfig" "iwspy" "iwpriv" "key + }' /etc/network/interfaces >"$TMP" + + read ESSID NWID MODE CHANNEL FREQ SENS RATE RTS FRAG IWCONFIG IWSPY IWPRIV KEY<"$TMP" + + if [ "$ESSID" = "~~~" ]; then ESSID=""; fi + if [ "$NWID" = "~~~" ]; then NWID=""; fi + if [ "$MODE" = "~~~" ]; then MODE=""; fi + if [ "$CHANNEL" = "~~~" ]; then CHANNEL=""; fi + if [ "$FREQ" = "~~~" ]; then FREQ=""; fi + if [ "$SENS" = "~~~" ]; then SENS=""; fi + if [ "$RATE" = "~~~" ]; then RATE=""; fi + if [ "$RTS" = "~~~" ]; then RTS=""; fi + if [ "$FRAG" = "~~~" ]; then FRAG=""; fi + if [ "$IWCONFIG" = "~~~" ]; then IWCONFIG=""; fi + if [ "$IWSPY" = "~~~" ]; then IWSPY=""; fi + if [ "$IWPRIV" = "~~~" ]; then IWPRIV=""; fi + if [ "$KEY" = "~~~" ]; then KEY=""; fi + + ESSID=$(echo $ESSID | tr "~" " " | sed 's/ *$//') + + if [ -z "$KEY" ]; then + KEY=$(cat /etc/network/wep.$DV 2>/dev/null) + + if [ -z "$KEY" ]; then + PUBKEY=0 + else + PUBKEY=-1 + fi + else + PUBKEY=1 + fi + + #echo "DEBUG:E:$ESSID N:$NWID M:$MODE C:$CHANNEL F:$FREQ S:$SENS R:$RATE K:$KEY R:$RTS F:$FRAG I:$IWCONFIG I:$IWSPY I:$IWPRIV" + rm -f "$TMP" + fi + + $DIALOG --inputbox "$MESSAGEW4 $DEVICENAME $MESSAGEW5" 15 50 "$ESSID" 2>"$TMP" || bailout 1 + read ESSID <"$TMP" ; rm -f "$TMP" + [ -z "$ESSID" ] && ESSID="any" + + $DIALOG --inputbox "$MESSAGEW6 $DEVICENAME $MESSAGEW7" 15 50 "$NWID" 2>"$TMP" || bailout 1 + read NWID <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGEW8 $DEVICENAME $MESSAGEW9" 15 50 "$MODE" 2>"$TMP" || bailout 1 + read MODE <"$TMP" ; rm -f "$TMP" + [ -z "$MODE" ] && MODE="Managed" + + $DIALOG --inputbox "$MESSAGEW10 $DEVICENAME $MESSAGEW11" 15 50 "$CHANNEL" 2>"$TMP" || bailout 1 + read CHANNEL <"$TMP" ; rm -f "$TMP" + + if [ -z "$CHANNEL" ]; then + $DIALOG --inputbox "$MESSAGEW12 $DEVICENAME $MESSAGEW13" 15 50 "$FREQ" 2>"$TMP" || bailout 1 + read FREQ <"$TMP" ; rm -f "$TMP" + fi + + WPAON=0 + IWDRIVER=$driver + + case $IWDRIVER in + ath_pci) + WPA_DEV="madwifi" + ;; + ipw2200|ipw2100) + WPA_DEV="wext" + ;; + hostap) + WPA_DEV="hostap" + ;; + esac + + if [ -z "$WPA_DEV" ]; then + if [ -d /proc/net/ndiswrapper/$DV ]; then + WPA_DEV=ndiswrapper + elif [ -d /proc/net/hostap/$DV ]; then + WPA_DEV=hostap + elif [ $WLDEVICECOUNT -eq 1 ]; then + if [ -e /proc/driver/atmel ]; then + WPA_DEV=atmel + fi + fi + fi + + WPAON=-1 + + if [ -n "$WPA_DEV" ]; then + if $DIALOG --yesno "$MESSAGEW22" 15 50; then + # Other wpa options + # scan_ssid [0]|1 + # bssid 00:11:22:33:44:55 + # priority [0]|Integer + # proto [WPA RSN] WPA|RSN + # key_mgmt [WPA-PSK WPA-EAP]|NONE|WPA-PSK|WPA-EAP|IEEE8021X + # pairwise [CCMP TKIP]|CCMP|TKIP|NONE + # group [CCMP TKIP WEP105 WEP40]|CCMP|TKIP|WEP105|WEP40 + # eapol_flags [3]|1|2 + + if ! $DIALOG --yesno "Is SSID broadcast enabled?" 15 50; then + APSCAN="ap_scan=2" + fi + WPAON=1 + KEY="" + WPASECRET=$(awk '/network/{if(found){found=0}else{found=1}}/ssid/{if(/ssid="'"$ESSID"'"/){found=1}else{found=0}}/#scan_ssid=1/#psk=/{if(found){gsub(/^\W*#psk="/,"");gsub(/"\W*$/,"");print}}' /etc/wpa_supplicant.conf) + + $DIALOG --inputbox "$MESSAGEW23 $ESSID" 15 50 "$WPASECRET" 2>"$TMP" || bailout 1 + WPASECRET=$(sed -e 's/\\/\\/g' "$TMP") && rm -r "$TMP" + + case $WPA_DEV in + hostap) + MODE="Managed" + ;; + esac + else + WPASECRET="" + fi + else + WPASECRET="" + fi + + # No need for a wep key if we are using wpa + if [ ! $WPAON -eq 1 ]; then + $DIALOG --inputbox "$MESSAGEW14 $DEVICENAME $MESSAGEW15" 15 50 "$KEY" 2>"$TMP" || bailout 1 + read KEY <"$TMP" ; rm -f "$TMP" + + if [ -n "$KEY" -a "$PUBKEY" -eq 0 ]; then + if ! $DIALOG --yesno "$MESSAGEW25 $DEVICENAME $MESSAGEW26" 15 50; then + PUBKEY=1 + fi + fi + fi + + $DIALOG --inputbox "$MESSAGEW16 $DEVICENAME $MESSAGEW17" 15 50 "$IWCONFIG" 2>"$TMP" || bailout 1 + read IWCONFIG <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGEW18 $DEVICENAME $MESSAGEW19" 15 50 "$IWSPY" 2>"$TMP" || bailout 1 + read IWSPY <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGEW20 $DEVICENAME $MESSAGEW21" 15 50 "$IWPRIV" 2>"$TMP" || bailout 1 + read IWPRIV <"$TMP" ; rm -f "$TMP" + + writeiwline + fi + + if $DIALOG --yesno "$MESSAGE2" 8 45; then + if [ -w /etc/network/interfaces ]; then + rm -f "$TMP" + awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}} + /^\W$/{if(blank==0){lastblank=1}else{lastblank=0}{blank=1}} + /\w/{blank=0;lastblank=0} + {if(!(found+lastblank)){print}} + END{print "iface '"$DV"' inet dhcp"}' \ + /etc/network/interfaces >"$TMP" + echo -e "$IWOURLINE" >> $TMP + #echo -e "\n\n" >> $TMP + cat "$TMP" >/etc/network/interfaces + rm -f "$TMP" + # Add an "auto" entry + #addauto + fi + else + if [ -f /etc/network/interfaces ]; then + awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}} + /address/{if(found){address=$NF}} + /netmask/{if(found){netmask=$NF}} + /broadcast/{if(found){broadcast=$NF}} + /gateway/{if(found){gateway=$NF}} + END{print address" "netmask" "broadcast" "gateway}' /etc/network/interfaces >"$TMP" + read IP NM BC DG <"$TMP" + rm -f "$TMP" + fi + + $DIALOG --inputbox "$MESSAGE6 $DV" 10 45 "${IP:-192.168.0.1}" 2>"$TMP" || bailout 1 + read IP <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGE7 $DV" 10 45 "${NM:-255.255.255.0}" 2>"$TMP" || bailout 1 + read NM <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGE8 $DV" 10 45 "${BC:-${IP%.*}.255}" 2>"$TMP" || bailout 1 + read BC <"$TMP" ; rm -f "$TMP" + + $DIALOG --inputbox "$MESSAGE9" 10 45 "${DG:-${IP%.*}.254}" 2>"$TMP" + read DG <"$TMP" ; rm -f "$TMP" + + if [ -f "/etc/resolv.conf" ]; then + NS="$(awk '/^nameserver/{printf "%s ",$2}' /etc/resolv.conf)" + fi + + $DIALOG --inputbox "$MESSAGE10" 10 45 "${NS:-${IP%.*}.254}" 2>"$TMP" + read NS <"$TMP" ; rm -f "$TMP" + + if [ -w /etc/network/interfaces ]; then + awk '/iface/{if(/'"$DV"'/){found=1}else{found=0}} + {if(!found){print}} + END{print "\niface '"$DV"' inet static\n\taddress '"$IP"'\n\tnetmask '"$NM"'\n\tnetwork '"${IP%.*}.0"'";if("'"$BC"'"!=""){print "\tbroadcast '"$BC"'"};if("'"$DG"'"!=""){print "\tgateway '"$DG"'"};if("'"$IWOURLINE"'"!=""){print "'"$IWOURLINE"'"};print "\n"}' \ + /etc/network/interfaces >"$TMP" + + cat "$TMP" >/etc/network/interfaces + rm -f "$TMP" + + # Add an "auto" entry + #addauto + fi + + if [ -n "$NS" ]; then + more="" + + for i in $NS; do + if [ -z "$more" ]; then + more=yes + echo "$MESSAGE11 $i" + echo "nameserver $i" >/etc/resolv.conf + else + echo "$MESSAGE12 $i" + echo "nameserver $i" >>/etc/resolv.conf + fi + done + fi + fi + echo "Done." +} + +DIALOG="dialog" +export XDIALOG_HIGH_DIALOG_COMPAT=1 +[ -n "$DISPLAY" ] && [ -x /usr/bin/Xdialog ] && DIALOG="Xdialog" +[ -f /etc/sysconfig/i18n ] && . /etc/sysconfig/i18n + +# Default all strings to English +NET_DEVICE_NAME="Network_device" +NET_DEVICE_NAME_W="Wireless_device" +NET_DEVICE_NAME_FW="Firewire_device" +NET_DEVICE_NAME_AUTO="Auto" +MESSAGE0="No supported network cards found." +MESSAGE1="Please select network device" +MESSAGE2="Use DHCP broadcast?" +MESSAGE3="Sending DHCP broadcast from device" +MESSAGE4="Failed." +MESSAGE5="Hit return to exit." +MESSAGE6="Please enter IP Address for " +MESSAGE7="Please enter Network Mask for " +MESSAGE8="Please enter Broadcast Address for " +MESSAGE9="Please enter Default Gateway" +MESSAGE10="Please enter Nameserver(s)" +MESSAGE11="Setting Nameserver in /etc/resolv.conf to" +MESSAGE12="Adding Nameserver to /etc/resolv.conf:" +MESSAGE13="Setup wireless options?" +MESSAGE14="Failed to bring up the interface, would you like to reconfigure it?" +MESSAGE15="Interface enabled, do you want it auto enabled at boot?" +MESSAGEW0="No wireless network card found." +MESSAGEW1="Configuration of wireless parameters for" +MESSAGEW3="Please configure IP parameters of the interface first" +MESSAGEW4="Enter the ESSID for" +MESSAGEW5="\n\n\n(empty for 'any', not recommended !)\n" +MESSAGEW6="Enter the NWID (cell identifier)\nfor" +MESSAGEW7=", if needed\n\n\n" +MESSAGEW8="Enter the mode for" +MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n" +MESSAGEW10="Enter channel number for" +MESSAGEW11="\n\n(0 bis 16, empty for auto or if you want to\n enter the frequency next)\n" +MESSAGEW12="Enter the frequency for" +MESSAGEW13="\n\n(e.g 2.412G, empty for auto)" +MESSAGEW14="Enter the encryption key\nfor" +MESSAGEW15="\n\n(empty for cleartext, not recommended !!)" +MESSAGEW16="Enter additional parameters for\n'iwconfig" +MESSAGEW17="' if needed, e.g.\n\n\nsens -80 rts 512 frag 512 rate 5.5M" +MESSAGEW18="Enter additional parameters for\n'iwspy" +MESSAGEW19="' if needed\n\n\n" +MESSAGEW20="Enter additional parameters for\n'iwpriv" +MESSAGEW21="' if needed\n\n\n" +MESSAGEW22="Enable WPA support?" +MESSAGEW23="Enter the WPA passphrase (passphrase must be 8..63 characters) for" +MESSAGEW25="Would you like to store your wep key in it's own private file (" +MESSAGEW26=")? If you say no, your wep key will be stored in /etc/network/interfaces and will be readable by any account on your system. You may want to 'chmod 600 /etc/network/interfaces' if you answer no to this question" +MESSAGEW27="Is SSID broadcast enabled?" + +case "$LANGUAGE" in + de|at|ch) + NET_DEVICE_NAME="Netzwerkkarte" + MESSAGE0="Keine unterstützten Netzwerkkarte(n) gefunden." + MESSAGE1="Bitte Netzwerkkarte auswählen" + MESSAGE2="DHCP Broadcast zur Konfiguration benutzen? (Nein=manuell)" + MESSAGE3="Sende DHCP Broadcast von Netzwerkkarte" + MESSAGE4="Fehlgeschlagen." + MESSAGE5="Eingabetaste zum Beenden." + MESSAGE6="Bitte geben Sie die IP-Adresse ein für " + MESSAGE7="Bitte geben Sie die Netzwerk-Maske ein für " + MESSAGE8="Bitte geben Sie die Broadcast-Adresse ein für " + MESSAGE9="Bitte geben Sie das Default-Gateway ein" + MESSAGE10="Bitte geben Sie den/die Nameserver ein" + MESSAGE11="Setze Nameserver in /etc/resolv.conf auf " + MESSAGE12="Füge Nameserver in /etc/resolv.conf hinzu:" + MESSAGE13="WLAN-Einstellungen konfigurieren?" + MESSAGE14="Fehler beim Aktivieren des Interface, wollen Sie es neu konfigurieren?" + MESSAGE15="Interface aktiviert, beim Systemstart automatisch aktivieren?" + MESSAGEW0="Keine Wireless-Netzwerkkarte gefunden." + MESSAGEW1="Konfiguration der Wireless-Parameter von" + MESSAGEW2="Bitte Wireless-Netzwerkkarte auswählen" + MESSAGEW3="Bitte konfigurieren Sie vorher die IP-Parameter der Karte !" + MESSAGEW4="Geben Sie die ESSID für" + MESSAGEW5="ein\n\n\n(leer für 'any', nicht zu empfehlen !!)\n" + MESSAGEW6="Geben Sie ggf. die NWID (Cell Identifier)\nfür" + MESSAGEW7="ein, falls es eine gibt\n\n\n" + MESSAGEW8="Geben Sie den Modus für" + MESSAGEW9="ein\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n" + MESSAGEW10="Geben Sie den Kanal für" + MESSAGEW11="ein\n\n(0 bis 16, leer für auto oder Frequenz-\neingabe im nächsten Fenster)\n" + MESSAGEW12="Geben Sie die Frequenz für" + MESSAGEW13="ein\n\n(z.B. 2.412G, leer für auto)" + MESSAGEW14="Geben Sie den Verschlüsselungs-Key\nfür" + MESSAGEW15="ein\n\n(leer für Klartext, nicht zu empfehlen !!)" + MESSAGEW16="Geben Sie ggf. zusätzliche Parameter für\n'iwconfig" + MESSAGEW17="' ein, z.B.\n\n\nsens -80 rts 512 frag 512 rate 5.5M" + MESSAGEW18="Geben Sie ggf. zusätzliche Parameter für\n'iwspy" + MESSAGEW19="' ein\n\n\n" + MESSAGEW20="Geben Sie ggf. zusätzliche Parameter für\n'iwpriv" + MESSAGEW21="' ein\n\n\n" + MESSAGEW22="WPA-Unterstützung aktivieren?" + MESSAGEW23="WPA-Passwort eingeben für" + MESSAGEW25="WEP-Schlüssel in privater Datei abspeichern (" + MESSAGEW26="? Wenn Sie hier Nein sagen, wird der WEP-Schlüssel in /etc/network/interfaces abgespeichert und kann von allen Accounts auf dem System gelesen werden. Wenn Sie mit Nein antworten, sollten Sie vielleicht 'chmod 600 /etc/network/interfaces' ausführen." + MESSAGEW27="Ist SSID Broadcast aktiviert?" + ;; + es) + NET_DEVICE_NAME="Dispositivo_de_la_red" + MESSAGE0="Se han encontrado tarjetas de red no soportadas." + MESSAGE1="Por favor, seleccione el dispositivo fisico de red" + MESSAGE2="¿Utilizar broadcast DHCP?" + MESSAGE3="Enviando broadcast DHCP desde el dispositivo" + MESSAGE4="Fallado." + MESSAGE5="Pulse enter para salir." + MESSAGE6="Por favor, inserte la dirección IP para " + MESSAGE7="Por favor, inserte la máscara de red para " + MESSAGE8="Por favor, inserte la dirección de Broadcast para " + MESSAGE9="Por favor, inserte la puerta de enlace por defecto" + MESSAGE10="Por favor, inserte los servidores DNS" + MESSAGE11="Poniendo los servidores de nombres de /etc/resolv.conf a " + MESSAGE12="Adicionando servidor DNS a /etc/resolv.conf:" + MESSAGEW0="No se ha encontrado una tarjeta inalámbrica." + MESSAGEW1="Configuración de los parámetros inalámbricos para" + MESSAGEW2="Por favor, seleccione un dispositivo de red inalámbrico" + MESSAGEW3="Por favor, configure primero los parámetros de la IP para la interfaz" + MESSAGEW4="Teclee el ESSID para" + MESSAGEW5="\n\n\n(vacío para 'cualquiera', ¡no recomendado!)\n" + MESSAGEW6="Teclee el NWID (identificador de celda)\npara" + MESSAGEW7=", si es necesario\n\n\n" + MESSAGEW8="Teclee el modo para" + MESSAGEW9="\n\n(Managed(=por_defecto), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n" + MESSAGEW10="Teclee el número del canal para" + MESSAGEW11="\n\n(0 bis 16, vacío para auto o si lo prefiere\n teclee la frecuencia seguidamente)\n" + MESSAGEW12="Teclee la frecuencia para" + MESSAGEW13="\n\n(ej. 2.412G, vacío para auto)" + MESSAGEW14="Teclee la clave de encriptación\npara" + MESSAGEW15="\n\n(vacío para texto plano, ¡¡no recomendado!!)" + MESSAGEW16="Teclee los parámetros adicionales para\n'iwconfig" + MESSAGEW17="' Si es necesario, ej.\n\n\nsens -80 rts 512 frag 512 rate 5.5M" + MESSAGEW18="Teclee los parámetros adicionales para\n'iwspy" + MESSAGEW19="' si es necesario\n\n\n" + MESSAGEW20="Teclee los parámetros adicionales para\n'iwpriv" + MESSAGEW21="' si es necesario\n\n\n" + ;; + it) + NET_DEVICE_NAME="Periferica_di_rete" + NET_DEVICE_NAME_W="Periferica_Wireless" + NET_DEVICE_NAME_FW="Periferica_Firewire" + NET_DEVICE_NAME_AUTO="Automatico" + MESSAGE0="Non ho trovato schede di rete supportate." + MESSAGE1="Per favore seleziona la periferica di rete" + MESSAGE2="Devo utilizzare il broadcast DHCP?" + MESSAGE3="Sto inviando il broadcast DHCP dalla periferica" + MESSAGE4="Fallito." + MESSAGE5="Premi invio per uscire." + MESSAGE6="Inserisci l'indirizzo IP per " + MESSAGE7="Inserisci la maschera di rete per " + MESSAGE8="Inserisci l'indirizzo di broadcast per " + MESSAGE9="Inserisci il Gateway di default" + MESSAGE10="Inserisci i Nameserver" + MESSAGE11="Sto settando i Nameserver in /etc/resolv.conf a" + MESSAGE12="Aggiungo i Nameserver in /etc/resolv.conf:" + MESSAGE13="Configuro le opzioni del wireless?" + MESSAGE14="Non riesco ad attivare l'interfaccia, vuoi riconfigurarla?" + MESSAGE15="Interfaccia attiva, vuoi abilitarla automaticamente all'avvio?" + MESSAGEW0="Nessuna scheda di rete wireless trovata." + MESSAGEW1="Configurazione dei parametri wireless per" + MESSAGEW3="Configura i parametri IP dell'interfaccia per prima cosa!" + MESSAGEW4="Inserisci l'ESSID per" + MESSAGEW5="\n\n\n(vuoto per 'tutti', non raccomandato!)\n" + MESSAGEW6="Inserisci il NWID (cell identifier)\nper" + MESSAGEW7=", se necessario\n\n\n" + MESSAGEW8="Inserisci la modalità per" + MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n" + MESSAGEW10="Inserisci il numero di canale per" + MESSAGEW11="\n\n(da 0 a 16, vuoto per automatico o se vuoi\n inserire la frequnza dopo)\n" + MESSAGEW12="Inserisci la frequenza per" + MESSAGEW13="\n\n(es. 2.412G, vuoto per automatico)" + MESSAGEW14="Inserisci la chiave crittografica\nper" + MESSAGEW15="\n\n(vuoto per trasmissione in chiaro, non raccomandato!)" + MESSAGEW16="Inserisci i parametri aggiuntivi per\n'iwconfig" + MESSAGEW17="' se necessario, es.\n\n\nsens -80 rts 512 frag 512 rate 5.5M" + MESSAGEW18="Inserisci parametri aggiuntivi per\n'iwspy" + MESSAGEW19="' se necessario\n\n\n" + MESSAGEW20="Inserisci parametri aggiuntivi per\n'iwpriv" + MESSAGEW21="' se necessario\n\n\n" + MESSAGEW22="Abilito il supporto WPA?" + MESSAGEW23="Inserisci la Passphrase di WPA\nper" + MESSAGEW25="Vuoi memorizzare la tua chiave WEP nel suo file riservato (" + MESSAGEW26=")? Se dici no, la tua chiave WEP sarà memorizzata nel file /etc/network/interfaces e sarà leggibile da tutti gli account del tuo sistema. Dovresti fare 'chmod 600 /etc/network/interfaces' se rispondi no a questa domanda" + MESSAGEW27="Is SSID broadcast enabled?" + ;; +fr) + NET_DEVICE_NAME="Carte_réseau" + MESSAGE0="Aucune carte réseau supportée trouvée." + MESSAGE1="Sélectionnez la carte réseau, svp" + MESSAGE2="Voulez-vous utiliser DHCP?" + MESSAGE3="Envoi de broadcast DHCP par la carte" + MESSAGE4="Echec." + MESSAGE5="Appuyez sur Entrée pour quitter." + MESSAGE6="Entrez une adresse IP pour " + MESSAGE7="Entrez le Masque de Sous-réseau pour " + MESSAGE8="Entrez l'adresse Broadcast pour " + MESSAGE9="Entrez l'IP de la Passerelle par Défaut" + MESSAGE10="Entrez Les DNS de votre FAI" + MESSAGE11="Réglage des DNS dans /etc/resolv.conf" + MESSAGE12="Ajoût des DNS dans /etc/resolv.conf:" + MESSAGEW0="Aucune carte Wifi trouvée." + MESSAGEW1="Configuration des paramètres de réseau sans fil pour " + MESSAGEW3="SVP, Commencez par configurer les paramètres d'IP de l'interface!" + MESSAGEW4="Entrez l'ESSID pour" + MESSAGEW5="\n\n\n(ne rien mettre pour 'peu importe' n'est pas recommandé !)\n" + MESSAGEW6="Entrez le NWID (cell identifier)\npour" + MESSAGEW7=", si nécessaire\n\n\n" + MESSAGEW8="Entrez le mode pour " + MESSAGEW9="\n\n(Managed(=default), Ad-Hoc, Master,\nRepeater, Secondary, auto)\n" + MESSAGEW10="Entrez numéro de canal pour" + MESSAGEW11="\n\n(0 à 16, vide pour auto ou si vous voulez\n entrer la fréquence ensuite)\n" + MESSAGEW12="Entrez la fréquence pour" + MESSAGEW13="\n\n(ex: 2.412G, vide pour auto)" + MESSAGEW14="Entrez la clé de cryptage\npour" + MESSAGEW15="\n\n(vide pour texte en clair, non recommandé !!)" + MESSAGEW16="Entrez des paramètres additionnels pour\n'iwconfig" + MESSAGEW17="' si nécessaire, comme \n\n\nsens -80 rts 512 frag 512 rate 5.5M" + MESSAGEW18="Entrer des paramètres additionnels pour\n'iwspy" + MESSAGEW19="' si nécessaire\n\n\n" + MESSAGEW20="Entrer des paramètres additionnels pour\n'iwpriv" + MESSAGEW21="' si nécessaire\n\n\n" + MESSAGEW22="Activer la protection WPA?" + MESSAGEW23="Entrez le mot-de-passe WPA pour" + MESSAGEW25="Clé WEP sauvée dans un fichier privé (" + MESSAGEW26="? Si vous répondez non ici, la clé WEP sera stockée dans /etc/network/interfaces et pourra être accessible à tous les utilisateurs de la machine. Peut-être serait-il alors judicieux de fixer ainsi les droits de 'interfaces': 'chmod 600 /etc/network/interfaces'" + MESSAGEW27="Is SSID broadcast enabled?" + ;; +esac + +NETDEVICESCOUNT=0 +LAN=$(tail +3 /proc/net/dev|awk -F: '{print $1}'|sed "s/\s*//"|grep -v -e ^lo -e ^vmnet|sort) +[ -n "$WLAN" ] || WLAN=$(tail +3 /proc/net/wireless|awk -F: '{print $1}'|sort) +unset LAN_DEVICES WLAN_DEVICES FIREWIRE_DEVICES NETDEVICES +while read dev mac; do +#echo "Making NETDEVICES $NETDEVICESCOUNT $dev" + iswlan=$(echo $dev $WLAN|tr ' ' '\n'|sort|uniq -d) + isauto="0" + grep auto /etc/network/interfaces | grep -q $dev && isauto="1" + driver=$(ethtool -i $dev 2>/dev/null|awk '/^driver:/{print $2}') + if [ "$driver" ]; then + if [ "$iswlan" ]; then + NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::1 F::0" + else + NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac D::$driver W::0 F::0" + fi + else + if [ "$iswlan" ]; then + NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::1 F::0" + else + NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto M::$mac W::0 F::0" + fi + fi +#echo "Made to ${NETDEVICES[$NETDEVICESCOUNT]}" + ((NETDEVICESCOUNT++)) +done < <(ifconfig -a|grep Ethernet|grep -v ^vmnet|awk '! /^\s/{print $1" "$5}') +for dev in $LAN; do + if [ "$(ethtool -i $dev 2>/dev/null|awk '/^bus-info:/{print $2}')" == "ieee1394" ]; then + isauto="0" + grep auto /etc/network/interfaces | grep -q $dev && isauto="1" + NETDEVICES[$NETDEVICESCOUNT]="$dev A::$isauto D::$(ethtool -i $dev 2>/dev/null|awk '/^driver:/{print $2}') W::0 F::1" + ((NETDEVICESCOUNT++)) + fi +done + +#NETDEVICES="$(cat /proc/net/dev | awk -F: '/eth.:|lan.:|tr.:|wlan.:|ath.:|ra.:/{print $1}')" + +if [ -z "$NETDEVICES" ]; then + $DIALOG --msgbox "$MESSAGE0" 15 45 + bailout +fi + +count="$NETDEVICESCOUNT" + +if [ "$count" -gt 1 ]; then + DEVICELIST="" + mycount=0 + while [ $mycount -lt $count ]; do + DEVICE=${NETDEVICES[$mycount]} +#echo "$mycount is $DEVICE" + device2props +#echo "name: $DEVICENAME auto: $isauto fw: $isfirewire mac: $mac driver: $driver" + props2string + DEVICELIST="$DEVICELIST $mycount $MY_DEVICE_NAME" + ((mycount++)) + done +fi + +# To translate +EXITKEY="E" +EXITMENU="$EXITKEY Exit" + +# main program loop until they bailout +while (true); do + # first get the device + if [ "$count" -gt 1 ]; then + rm -f "$TMP" + $DIALOG --menu "$MESSAGE1" 18 60 12 $DEVICELIST $EXITMENU 2>"$TMP" || bailout + read DV <"$TMP" ; rm -f "$TMP" + [ "$DV" = "$EXITKEY" ] && bailout + else + # Only one device + DV=0 + # they have asked to stop configuring the interface so exit + [ -z "$IFACEDONE" ] || bailout + fi + # device config loop + IFACEDONE="" + while [ -n "$DV" -a -z "$IFACEDONE" ]; do + configiface + ifdown $DV + sleep 3 + if ! ifup $DV; then + $DIALOG --yesno "$MESSAGE14" 15 50 || IFACEDONE="DONE" + else + $DIALOG --yesno "$MESSAGE15" 15 50 && addauto || remauto + IFACEDONE="DONE" + fi + done +done + +## END OF FILE ################################################################# diff --git a/team/alfie.png b/team/alfie.png new file mode 100644 index 0000000000000000000000000000000000000000..0b25d7599cefb28dd638f18357d2f363a889219b GIT binary patch literal 6445 zcmcJUf5LCKTWD%vL6huI3=~R$X8l-bcK^9y> z>Hc}&Ph8JG@O-b&%(>=!=3M8^%$u2H6C-VM05bpw2Zvl&N7L+IwEQ>xi1Gi;YPSPL zI5_w?CI%K-|Cay1g^PoO`~L_J7x(}2ANybSfAL=*9}kZZAD@VTkn{mDB{6^oKu$|a zPESt3NI}UAq-3E2vQh!rfIxOiAR9R)JAj-GK=uzYY8nYzT1i@3DMm&qCT1CCW;qrX z1!flAhuqpc54CvtH2L^6_;|JW_#ym)I)WfwkdT3p@IQ=%gpGwnOoT*Cg+$GT#4JU{ zti{Cb#KaxIU?)ilm?Ri31@@2zdr5;4(%>gj5=mNGiQ13^UF`%z-B=U7Xfypt3&TiD z<5;LkvaRV$do!e?`TxNz)!sD4));ARlxk&|W@-4z%A&&7vfSRf)XBC4W>@TH^TEUV zgSTCYpF^p?Lz%xr`4h(qKc{MhQ?0j4ofo{p)8qd3`aj%U++UsDT^!$?9o?NC-u=Pe z?(f|G-n!XYz5cm$wKjEuo;Y6|JDVFhnHu~v+I=+Cj{VlM*ISS2LTz_^`q^Hz(Neh9 z^lqg-4_*6q36-@_l{r`bX1e6{)Cc5bA#x)BkDR#i?AWo)=#e-72p>)h8A=Hn zKnC_B1HYvN_ojsPybSM34)071{}Lb89vjjY6Vw(J*c9Pk7v_r!^Ff9B)P#7~2YEII z!dsrZwLXWpK6PvNcWv`?Y4wIRdpb9{{{z+phc&soHMzStxqCFhy_(?OP3~Te?w)0j zO-s#&?Fjjc769xx3@Ppw|93p7srQtKR17F zW3YcO{_EddUtizc++7~6PgK883D4~wU0B=39$)?2{NJ+Mo9m17^Ye?#tLxjhtmeTu zICN&ZnrapvtEfCr3v=t1flCVx)yxoDLOP-e^~o9|!LJUSX0J8%OTH|z_>xU~p};mP zvs##V!6S#qDs-Bzi8#*eNIk4vjCu|MZq-NoF_&RZEmhY+GF_6beHM6gvrSlS8@>Ku zTGZKPVdr@}(Z{q%wH(IHk5LbitEo~Bjs3JK(%#6_C_yxa4OHPi{!Sqx5#a3m)mNnd zPRsRUtGL>BZq5SZ8|cYf^QP%fxCl4ruj9{B>xaTzDxQyxsuW&<_*xWOKDBD|Q0sCU zy{m6-X}~#Bq`M~-Zoa$=sfP;hU2gcFWUwOzzqO@{y~83Tj=m6dQF*H?FOR0t>6c7x zygztwp$?V-Wu)qAm!z9pXos=rKLy?#!YXDOcM2z5VBa=Bxc71d+n@CKCrfd2^YDbr z!7Ktm9vS$=4%dMP`E`@VEWxqt{!LGUFX~l+%`1lY|M87A3t`UDz??S z%$v9!det5~~x*MkARqSPjv+qQ2H7u*im%W4|Exz^Yah<%-; zUE=I&0p=m03<#);NZ~>{%r33)BKOk=`M&Woy-gS8;pOGWztXexkCS8NN}9m!}^_nZCr)4sYx#|7C@plnNfo9llTS_mIk-javs2M zaxx+pRXbllqdH-(%Uuj{6A{Rz79OZN(y1$8MJ@vp>srL6BZ;!F`2RRAGfC_a0VK_L zDj3hW2c?~!EQDY%YL`XS=@QmB3)(L8v z0A+q9K%!a7fvc9um1!L4v+CrB@V&CE{P*a0yg-=B<|QK1ws3E#ilLc6b*3ef1@ zFw;!WW@;{~PZq(YSFY=#ts*R}t2{xx*>}H}^UcF!vlok1RJ>p*P0D!f=GF+{5wUeOAmoQE!DYG-`5zZeN7K^rubVfl-X9tsC zz~{7?p5*BC+>*ABKz}~P^Bpj`kW=V2w708hIx)DosE#e(`yF(E{`$1DAvPHku0sr# ztU5QX$|@04J-Ct`wC~N!dGEcxie%z=i==hQ?fjR=%^d-uI%au7MN_Zz!^3F`#Yl2^ zUjz3G&I{7aDj;M52#1U>Nc-#4v3#YTL4t@Pf;wG6&u&+`>|b<$*^?oC4@F5sFxnk>|C8_Wd@u$s@n9Ol&TLmFekbQ zn$)|PHmPhTT^f8@cGD56Q{<{`?dkUnk}oTEvg-R0Zlq$)sTC_|Bgoo%V`OGVdak|6 zD*f8pbsI`bvP%^5S1DWo1Zv3QqZ{~s{5>GcOj+@_a@DlwHvjn{x_)SAb&sxHAG&wW z>T4yY9BNTsKJNN>=Gn>FDVPxvV%1P-^ReGSM~5dphYv2(D#c$k{k2jM&ezZ9^C#z%e z)w~ji!!WvEJB8mRY*V^jsBV6V5Xt}U_Q#)_%~_@5)Ao+J7mgWD&_a z@_-!bINpCNQJ3)l39)u|P~%O@&(90r2r%Nxx5we-5_*U~42_gX5@Q17zBj9&dt}3F z0OU6gX56Z&-XVq3r1-%?AMo+>y8#kl)x{mrk4>gcvi#)<`+hYpUbZhXc>JU zF59hhcRj6e@_*EHh^6a2pt8{Au8{VMe>QX9U1QbwC4O7wAncXyV*x&<((0y}84FCO z?hu0*k9)LDV5AWoqF}*pfarvRUIEO@sQ{Bf%p6E=huV-JT>V=JCx#`a!z+UBB4-La zV^O`uS6ZS}^no=Vi*H0=P8K+2>|W(7-(9i`(YV>`dqvzsY6mWn@_krLSoEjVq|v7F0~!lWYE!l%Gim|M zkm@wvbspA^AXJ!w5K5HEw-XlUGW=p^G(ml3nHG6VP1lB#&iQIR1491 zrPZr8)aYxZMRy*F-_=}NUm-Z9t@0Z+&&F+{E(pT=%WABSA5`OY06B(vzOh#_ii^Ih zc9i4JptJi-?4}g=cnmhJ{aw9YhjnDf!os0*7!h(}ukYe=Gs^1Zc*j~qQ7Vx2g24QG zsFr-+-FcS29@ZUDI7M_d0C`YoRZp_ev z)^9Gar3Br5QAe0V&OJpaADiOulu7>%vA zXW|D&h6seRidyabSjg|4rmr@Rg&I1+ngj_3vBPz21~OeyfTed z3Ocko$bL}0xOf;2k7 zXaKJFdS#|w*2}*MpLX7-t-S5$m^9U565^L^1bE|o!4|{YHy3dtrQ)-o>~#2O2|OZ>RoUF#t%v!7!3Fs_PsaB{XM`{`#6+%Q{U45u(4w(UjRB3vfRXlh zJ6siGW2c6O$p(4P;JAw0Rnux-AMSxi+VwM{4B8Llx@^91w&O=2S2+?~z>6u9B!o*L zRn_I?MMa#lii)ygT|m%g=Vu!vD0`0~0C;3}`0>=d;xU0zdBV(R^?C_gbVu~|u>t|o zRPc6Jg@>krWJ4hHSR2s_N&#^7?N)d)$*b0^&&;%ZoA%h8AY{Nah2EkwA*er(hyM^s zVE;agbDqC_^TV5AB0)VST2`EoWj8~u)+Y=d_ytd2)JgI<0E(?b=Y{f#fIu&iY9A&r zMd(pOLIVvq6RKCRg)yVR?Bjigz8XWHs2RM~yWIBWnn~ zkV@^5mq-`M$0-k#pLcOwjD_J`8L1m| zw;e5cdETXj@{97-#hdBBMMf_M1(M}J=@7doD2~C|-Dh42>J^;q%54nkb~EN?dGxE+>JEYh>QbzZ#l2QvNI$;CWzFdJ7M!%ioH)Ii9mL~9S8JlTE7>oIdaOM;vo7aC|sRe@;$iK!XupW5+lXj!D`G2Op5^I zGkjj03KVy+3afp!#*3uV4}IVoV8N%+cLdm21C4;H^!01ky!+Xgb-zhPxA1^}4mwqZ zG(;NhJjK*ON;$jllpCTbWs*gpJ$0@mso@T_&?#>EWOcd#Mi#g7Lq=@F=HDsxKwWG3 z9j-th9S={>h#Vlv-IcZMZv+Oeup%|e0a9X*g7vhWO+2Hocf7mwbU%rPl2y6_p7dU{ zb?HqyI9OPi0s6o`8+(vJFZHMTFqnE~S8MAJE|uFKId-WOl_*v*E2`wXM8pG2DAtY7 zyTYA)^2hm!W-7UX!LWnoARnG`=c{-P>X#$KdJEXz8?U=Q0ys=xABOi72uM9Bg&*){ zKWMi35Ied_q8ed{B0R<3C+ByS#uF3u$J4k7@J>umKfP!8VCY}EokiCzviXRh9)&`Y zjOq|vA6?1Iy$$&>R{6%MG@aP(&5Nu*Rsr75Au^Ek3z1jCSej?AiacHv^3&gy3~v6d ztbEy!?rmV>szmb*G8OCo%dm(j#n2Ofkf-!7alqF49^a^`2nEfN{ioW+iK71>f}(!v5f4wJv;lCbEo=ceErL> zoet0dN}*Ysl@EPk+{?wo_R-PT;m8IF~ddnbf~sAKkJP6Ev-6_ zC!8YAh1_`2QhBDo&f;lzP0$hsOLn;2)M-N}1OZmf$W4pMps3=!6&^y`FGd?#r zw@OHlkWqd0Ixa%WD@rUUy}(k1TLy1AFVA+7aTP;=E9B;lATcBFV(KpYEi8=k@$spz ztFLcps;g^iaqQa8$n}&LL>ip*U030KNcs185i2bt-PqL9+}PS0^dx$AplC$5SG3q* zzDBY&hY}m$y{|y(9rnqPsEOE9Jig>?zMQ1+XTkh3D$~0g7Fvx$A?oT{!cSj%UUK{1 zfhfQ(&OhsV5Q&T+5^{6n%L~Fm<8>MNnk{CT+TC>K6j{d?xxz_m_X>5dj`{cMJ`i_% z-OlK3`UT0k7_VC~l8vm{2-6dEUc-T2@3T5-4hBs$<#hLDw<)LPs9)F*b+6hlQ83N} z`=K}KUkqq;;+k(0i;heIrsP8jAH}HSl_y&oZQMU^(q0}qq{8g-MKnAJNTN0AsJN&H zV-)RWMcK+yABEO-PleqC#q|*9QbSZZNj0U2lWZRubn(+qdH-UMuLOd*$WEvq>pbDi zl-POvY4E&_2Oj-r$%y;>Z|?L?XNuN5%rw&Fd{93Zttzvj@)VqobQF$2|85* zQ>|ai;c;D5;8gK}{tSM-obzrEMu)9wkun!^;zsI?l0io)osVe_!dz6q4*I<06=fJ~(aRR2W9xrvdhm1x=RVNFcT5$RPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2ipV| z2qq-O5#E9T045YkL_t(|+SR;ytmWr<-}iZ!-*SFuyW7m2g)`hqk)lX#wq?hTEUAv; zq)D8hNQxLm(j-lTG)4bQ;1-4L+I9YDi!O-~v`Grvfe|NAWm}3AZKf7Vj!cU-DGv7` zhqK@PY`^{8`o}rL9$wwykRmCe7kF_F?!7n%&-eH2&-Zx+-~S(R#P0$>;2-gQ`s}yz zJ>drdl6aRs?=T4BCVx9DY&i6uTfBeAe)PKpfB@w0fAx$1=*d6)mbmARd;X*Sy@Nmc zTmRKR_(eec^MCeh|M=>)>lc3Umw)B|S`z+-fd0_$4*&gK(H8LzeTD#d{IRe8*WG^a zXP^4^AOGaR{uW7;fQncf^f`I#l)rrKf(%K*_#h9asf7*x>5#++&z*bbv$vf&)A@y8 z`sH6+0CD5Eg|Kc3B!7e!{Xl_u?dkt7zx0bgSC++Z_Onh{T_1|u&zxar?>eo6tCub^ zSYKsh;{;MTu3f&)aInta))qx=sM?yQYAC8E6s{DVLGS#*!IfXSy!Fz#Km7WuR~I1I z#p^OS{tZm&`v$~oAbjqV|He&s_CwZ*#3Y|EJ(#ewwZp;A7SqWDFCpo5Sy@{}1PC&) zv3{Hf?!S-y$&BZodznNj_V=&jg5bodJJ}muBgAgIZmZ-QfAGhD`lXky?k~VFOQ6^z zG$edKfp`ssfAPQl&#oAa!pi!pc;LSK*uHX&q??jN9ds19eEBlod78ZC`u0UeqY)tl z;!eiq@pT3p$9d(&i&T|CL=Ksz>}~JS$-0auVq}>p{{p9l> zzj}Fh8>klN1}Mv>^F4u~-YN+H<1hUDy-)qYx4wC7eMOWQVgt6W8SP%<)W&g+om%C= zyYFFrV}-)EoVxoiPTzT!lc$f-(J@9C%BrH*?Q`tdX`Go+%nB3=L||`xz{M+9>8B~y z89H$yg7Xa0o)`|}zj@`_?(bOZ1t1saW|2g^8$i5f4iBC=vwQoQ)8gcbO*%T_*RjCyvw0V%Ao=m?mcrKbyAR; zPS8B{>^a)d(ljkTz@WcEzmqUIIAAoI;k{vH*eAG#;c%6*sfjxsihM?8DxqW&?maX3 zYtO&3_1Ptj2uI`}@3@Z;U-`;ck}v(+->gy^Hg7vaM@Yca>30#{a^}owj0rsT;)`6n zehF_X;xxusNw3qP&0Ef2x`Gmt{>mzo@q~W2OQa(ne%}LZo;;3lj&D5vIMx~RgOYeK zBsZ2~f68u=Q`8NTfM`8~wUt0znScMKC;l^F9~c1>U-sLQUb#*&E$DRzC@&DE zAr@erMMsKeWP6FMQn2Z2`5NfI#~&s5rv_V)K@ z`%A+5C8z1%ie{)=f$-bE{VzYd^V0K=nrb9ahK|lCCsR6|ln@JgS;p##9gTVCx2}8-{D^ z%xZ%$CI9Y=U!a~8k<$`-E`Ypa6?4o1@(031%b{F0`; zVMrBkqz(V_*Z%QOKmCobeQuCOw2|iS6DP^bhOJq}(|>Y~2W~&jsf`tak2tZp&WVjR zZom5x6oUQT>(q5lX{X4bX}m-VO;wEuP7wkqttgv@q&K9l4b#a!iu{ zDR4IM^o5t%x;n-i%MZWreRz|zxv|da%{%F>uX5t9+d1{{4`ZZfGoRu{BgR`7X!4R- zUXrMoydL0MkF%cfWWumBKxjdlc8Fp{FHKpiHfWj#?=599#TZYX&*+Xv?2f1Gznqh- z_VGZbGxhL;cYf?U&tCZa!co?T9Oj$y8R`wHN%66t_~DnNgjrr<@`mFl&vJaYLXv7a zQt;lp?&9uy9^io=`3U_}r;u@%a$F*8Ak_&$N&1}(V;t)zjtE6 z%aDakKm_8nN1AnslZdpF(Mbj*X+n}j42BsU*<ifSEqZ|LScoN&So52Sz{1)uy`^t;QbGOgh$^0VS0C*LG=b81$cpo zV^EslS~_h?t0UG`M8HrM6*@^7uCJ2Ma!d$7NmUA}#-b$XsDs7>5vI{dQK2-*R3ej@ zPFWJ`F|DY%xV=L>=u_rXKJ?JNfBofGwqFE_g-Mh^vj9XND(Bxc5F&QrU*xlyFpVYa zbZLYo8){Ch+{xgb#=ya2`aeK?EcLuOplkC^Ccy*lLQr@o0oV#}P>! z5jru}1gf^hSdYh{WduH;qKH&VtZUJ>gG3@lg3vK{ikR_qM&7g}S;TlemcU>E#Eo;5 zi5%I~kw=-ur$6(lwVj=-S)vp{I>yDA+gDGrHr(L&iA~<~@CPtRTx-Aw5CR!#gp>py zaNZHTMYIOt9M&3~HF#@i+nTDX$g7G;K4UtY(Y7rF2-f1A!23BMLDV1|Q4|qH9pW^l zlSQl!2OK}X!5z2XhVh1`^wfFFBk#NS{R=P#Kp*G=DG)8(fP70D@tw!M@Ry4!4^7pI zy@M%t-Fp@iuvJd4cQ4f*2S&5#&P)BLR`|mjYp0Y0f%Km=N>dGp^eoEUmeC*?&V6d`5 z((NNUU9^&f076Od4&gn)IlOb=8bs4jPIjqhGpc+_TN|pPpekx6vx2fHFy7KOhSoGV z?{MA{f+K_gex88_??Eg;77`^jBGO2y2(4jfx<}pC2&_DF$Jyf5i`RCR{6n+kK>Z=} zctg{WC(fS!S9#IU?RChqnDO3-&DCR+rlBb@ii3vG>4ImMCZxMiLYTCM_t#axzrzk4&$%K45r8S;eRbidQIf)D&7Xl#&oOgH; z&_W`_{5b{dut<~u;pd5!julF2q?Ba64q3O0n#`CSOt^M!D_aQPT{`IkhK_S&u{@#NyLJz*a3%N^}$x#~qR+ zAyNTv4NX;(Pp7!nVXeh`i}P|0fcM}6gn)Mr=RDqfgoqF-!V3^0AZ0*`x%Rja&`Oac znl$au>#Y!+*Fa|hK(=^)!(r;1HFOR;OL6|Wa~}@Q5=21wKqrYQs~Of=Jb`>N!Ppw* zEJ{dxXbA|Ult>*RQ$;`%q@=UDf%AbZ1e)4lY(PgPv$DY(k8K@({^$w8qm{slxn>~* zI1sTyE}o$WqO=3Sg7*tRKxvK8(CcON`~4eckS>9c9Eu#`mZp)7j8y9rXpbUJ;c5JXWlS6Sz=A|Q1KDfRpb;t4?@f}=If+zGZ0 z{M_G#ppa4{W%>F{)XaU9zlTeGZJc0~2HH}0_CPhwAoz^gh%U`AT%D2B%qYS;R#NFlb|F5 zi}zt3m6RqR5h@}$j}(ryAG6wv8D}Y#klbv<;z#Nwzb91 z?k{_ za30^bh{z*_B;Vg>wzo|^owB#L&;H&%`D_AGV;V>BjzB{Y5yp75^mt+LjYZf1Qd8O- zDFUDgN+6i0?%oGLB1Aw$3tK}V(Ijb)^|fPMx%MLe=db_P^KW|^{`i-_{I}kF#|qQZ z@C!fx^XxVwHu@Qx$2K{6=5Efu_d$$^NYm~-do&Iu6I@-fzjK{y7hdM&OE0mry^C`i z(-?#lXx%{xL9iu4MF>|RRg4t@A3RDbjBijz;4yd~u)+|GCMb`P4j~kHhxQFLfh3wg zU?~MwNj8rkqtkzd#5wgArs+pVjsAM{@e9B6Nj87z$A~jcuah$DW}H5KhTGor5Cw`( z+QWr_Zw$hFY@2i8*(Z7a+*4e>bd4)pR~gL?$jd@;%b>r?g{_Nk zg==wS)DXww!O7jrTm13<=UGYngld=DZ#%)=4?c(<9;53dP8giEU>l0bn2Rqx#f#^j z;p&wwMARjb8Ih=oLd|S4V>&vZY8sSMtPWRL9}L($zRGa8N*sA2B`|GGV?AX%B`++a zY02I!XEx38Hc-_CA_$U1k@Zr}dpNeS#@V~>2^EwIjRTm9kaayx}6l=9U`ozm#s41A0I_txh0M1b*3?zOiuKV zt+Vl=AESNo6*i84n0T#E0HUaaX&aoiG{u;$E9bfV>P3pSps8wHWiU;{!QP0S>6HCq zMp4e4qc9Lf0xbixCTCzfXxSpQBu3MQfY1SBTBL&RU_cr?LMwV%Os_W}i#qhOlr)V{ zN}wZwjxvPz5DcCOoy4pU`~2CD|HPf2fAq1@p|C06fW{PF=PV-;Li*4L34=bi2dmK< zO8%=E-b>r|zI*B5UG&=_)x>>}= zu!nV!b~!PTh_%hDZt`r3g~vlbE$f-p`Lc z{6T_>VCOndKl&BUzxV?C?UXvtD5{96HrPgCnij7mI!ftvC2PF_{Vb!Kb?6zz)v6%v zb=f$+L0QflHNwyPC~4L~MF}#Fh!Tk;V$ki;&AP;$jI5KQw8DBp5~VaXymI~uKl|tZ z%>BRn*)NWkYL56&^(k)ZBX)OoR*rZ3%trgvvweIEzF**^A`*e%0$vG}RG`AU0N$gO#(C)XB7Xa` zU%a?fZ^TR5p>A1*Z*FY5;o3R~PunyYFX;EXNTu-z9G-|65Ckzdv4BA8l#m5N6!Y*W zKF-~*yvoy$f188Zl-3Hon&$>O(x@z>pQa>AbN^5LIC#bSi4$BMjmSDHWKoyaHn^bh zSn$kEDvIfJQ-YGDNrG5(8HJ4T-r#~IP85+6tPY1PnM1sE^paM*&QH7!nW^A+Ww#sd zK5-{!yT|yMPy94x)i79H#W_PH1i`fg(;!ScuPB$p3^rJt_sf|st zUKgnpiB3QWgmW~m_>it zdNRdcyM*j!w8o<6Z770=;KTgOgMdgQ0w|?0jVD6kl8nu}?xel&BIVYYrmAUOi&cu_ z!!DZ--hr}`dODeBsY+vg$$q{?EMq#+fGp{NPKd}*a^BGjr34*tktfKSV405(aCi^> zP8S;~Mw5wO0^(*-Gy6_5@&%eyU{*2H%nrh1UV4D>$x%)jIB;7cJ^9IqjOsnbK^lU&h zf`h$nT$R%_6*35dGug`S z#=-6`MOk7>OEb->t3B>Mc|U*Qzxx&1VS)((DFxNuF4KJ8)|YY0aOEVEe8OxxVi+Wi z3Pe$ik_jrzHIcN}6Iyn~xdqT;}@4>s-IO&3IB!RSm^-L|#mp zZcq8M|K;C9M-Ay{4{@-~^xU8D{I?%xXKNc%S4d+KvEdj!$_4J**s`H1`Oxl3$5@W{!@laF0@!-%0h#@#>k z0pisSkP0aT)&-n5;2nVg*3slsCfnE9zI=h*?TWIlF|MI9C8lnv@)>)0nresVKK(^z z(}LDHwqLo(Y*Nw)P3>C{f-H@3PEa<6q}!tE8YKb*hm;Y{DTtwM8j`Gw3-he9stXXB zC!aajeCkVIzPLmX@kdaKzKbHT3`BVG{44e!{ulrGZ+`8o-|~0#VyV5Md&hgJX4?qw z2);#lfwvA@*AN^{UQo^^>}>C|x7RYwXVi;+Wz!fMUocTM{f$2V$FKY<)BSz+W+T$H z$H|j-QkeoDDoovBnjbLib%?VVrvq(MQYI0uf!GFQWPpHnDN<{UYcbBw#{RmFy_j|tIS3vO~|p{VV$L_D`sYfihIOa7w0Y7M0DZ|Z(6p;`&eNhw3xa^2uBba zr8HTls7*_#XL#+Ai9{e#T2Z$RO3b@tp7{_OFYt)@!0G=3!Yr|K+aoB;ugNVB*^fVW z?%eE`|H=RU<1fyNXMXPw|M06j7cU@H1VOy!dYmdSW@EhR2QIJ+1Q8;@NKhY1R2993P1 zL)vf{2zwNR=BQzZ1MD*|yl@T3pMLgFo>p2RjHh)K;AonbYF1O1Ez?O(-qy4@YSUsx zLuG3af;NpQO@%cT5so;E81{N(S`)mbqhhkGi`Icm$MlDNx}6x0VOp2e)?tMr=mw9W zMPP$KNJwIZbr!6mwHlA2F)iDp$?O(DxT7M-;V$+Kk7^bJ)8ZRXz3>|<_WzSJLTH)N z)MK1;)V8H=Y9^BzZQWvwCz3Iva!e2&Cjv!XV#6^0MFv^662#9pA;Ih%5;1{tRz~ea~gmEsRa&!4HhZpvr=p3N#6eCfJ1qMT{`ZKD2DooU56VV(%xuu zJ$?S-XLKxnuFXs8vY>9uIiuDHtXYgbZA*wGk?vq!g*O$$jbrqCy#Qi5M?1``c{-=5G`#*wro~o)zbVN~tZ!+2Ks!qi5i0T+<4{SAHXh$vf>an62n3{%2oclT7H2#=2YVbchvg->n-|sjyav?e>)W6D$shgEzn#x!G)2o^zDrrou-0I0m~$iX=s2O@KaSQBQpPA5 zqjiLiBYJ9p&N7lj;H@X^bcl3{)Df{xkSfLn4p9^|NJ$WL@9$%ch$4tGNHT&_AThR%&S7mt(+G@J zIIn2k+-HQ~Y1@{vXqYvgt2?^~heBq3L`Hd2A92gYm40_XQ56CZ2eY!2wtVn|A9(*g z&KahY83&W;+)evH5P{Y@bexiQy2#+kk_3Sv(V9rcbNhDzTQ@lG2})p`$9apllExXV zwbZSntZJsS8FgFFO~Ctk*hCPdrZJYPs`=6%J#ntAn;YEgVo4irtU2A#l;&mxb$zSr z3wHK*+`aeQxBAlg7fYZ$_wu!0Hn#Zb$~a+cj`t4Z9BmsAwS`C^9SBumq+o4zz(Wr` zz)F7w86qZ=F;7164Bpfj@9-74;1D`sZJ;t05Xh^Bx^9@&CEi;iEl8rdIawia&S1P} zYnrn+o=lb;d%Y04ToS&$l}5a&+X7xX|Kh=-3v4c5-5M*IiE6fmk{OB0Da#V;JV;Gj z);LpQDo1aS(d`b%%Nk>LX=~5U_AZnBfU2ko4!p8>52k2o4TKn~vZXPGgV}^CACqPo zh-4n$y`+_fwk(*rz?Z-E_~T0vqFw;7%+Rlo=ttbL*0@y!u@|pxk3RR6uk+#e-9yx* z7!jzgqiLH({@+qnHFed{nvCaOd4blQK_S@N*=IDKQ4|Hv%~O?F3fk5pM4)OdZQ;pH z!>lMN@+re^N}8s44|Qb;-r=RBGM=w}``pvc`F06}8;)|ec)ejR=Fk?;+qysEwet4a z7cc($U;8Wn@!z<3{_~vV1&d=$|-Ujya33*#`Y;}bw)&v0oxgeQ3ilXGw!E`do^VyO~EQ2szye@0RO?lXF z6^Pd=)8GB#@BjD5*ESyctAFVyK5%_!Z$TK9bMpuaooZAh3BofS7rgM|E5uQZ4{pw+ zTd->bfU-#D|7#jgKCMt%)9+@)k%A!S1DxQoSd7=qs>(n4+{@1{CwvRRC&2g+5J&BR zhPSgD&eB{!UESGz^nLd|@b^v~U*-Dc%hb|gtU*c;LZF2pjXU_@5kXQ_6|=lxmRA&I zN!1$iCMPc)McImOY?tmt)P2HhUc1&p&qQABMT#?vXSk9hR)C%&~1?gj|cMReF( zoc#qL%L}pYt?qQ)D#4O~%!`6-b@<X=@OWr16}W zog^R}QYa7};RCT&taN+y`#qv8B~BuuD8U8?aZFV-*e0-ZP|UvhLNRP9u^eMyPoaC1Ac9B_(a!(l#v@uJ7%A=lmwdEAPlNb^!K-gb0hshxj-qiB^TfRSH z2^0xP=NwOd=iKkD9^3d(5{ctYHO~qWa=t&lSX8sY<3pI2*h0;BxO_k>jdy0g6^z7s zLF+tKQ*-@bG=B2=m!EH1Q!b^=#UT*(7MifPR975j67SeW8b_JRYkcPyUwZjJY^-fQ zAf!BLtZimxF^-bBV=5zpb2NS)xxDuat(kBASYuI2;t@2h!F$jCWLloTeD&h_OIsI0 z21vgQ@OnYX=>kJw9XQ_0y7xbD*V(^Y6#1lajx+14 z52TTby^=^NX7~qp&tm?Aea_a(KKcI;^pm^tGX!;6;Q=eh#W0^!NH+=B0m%* z-t?mU_j=imSR!ksi`}UeU=2719P1>>?N!r6O3Bqh);TroXPaw--YF$zq?FdqIoBFv z+t##=b#2qydS^7=HP*FDRb;ai9j1p$>(QZmBbNQbTe>^q?E-NFjCcu*;R1}cg@&vw zb})NDC)RqqxuD`{Bcla*LcLRu<0dg~%pFHCK!Vwd<@NNO{ZUb?% z?+|a$=im*5eb)f^egbi;?-REujQ)Rl3-UYh{XdX9vj1NNpw}ji7xe4^0000mzP_O+@NEzDMlX|RN2NAO$)>eJNTH0@ znO3S#jHM7{2%3Xw^}={w+t&FgfMG8YyT?nv0y^FW_;2}z_;v?gyyKzmEElr$9s&M6 zA;xP0ISdgIe9#E7A*H$`h1d$jz9%k-=HuQnF-A2?x;jwpjT`@wXKu}=D{#Z=h-=@k zgCGA&0{>(0xtjWBaW%AUKZfu#Ab&W7sIBu`!N(p-N`#Eg2ds5UC?l0pB7`7>l88u* zAx4N%iQsgq4y9DTW`p=-mKvL8X8NTU_Mg3VFl_+0b|J#4yCVLT0si~n`jFZ#&5tan z$G@Zr7nPDbjq_((YlU}S2%%A0V_l5S2dbtOLTR!*hX6tV!l6_ogg^)Z?_?mzMV6(D zJXgV(xEF)}?Wb?gfAjgh*%+{ZUtI*hI>NoY1Jt(*;Q!*E|C-o;_Nk%4|D9$r`@30c z9!s<2oDZ%aLJ$Nmw2~Ml3D)6VE2I!2h5#{;BpRa>GDbqM5Ix2if`=HT@HVF2x}FsD zl@Mp6YrpUEX8zcf?Q$|}!ttVU0CGh}aj$Luw*~M&{U7|e{Mbi+Kab7gSAD(s#eSkL zCq^n8yl^34twSq?F$n^JZCj*(L@T5KVnC{h5#;TxgCYcQ-jd~p#7Mkz;GAv^DbHnzDo73k3y#jyTBE)|yf&akwzd5OH-9A?@r~iFymcP(X#73$SN=XnB zA0xJDNQ@!T8VRJvkZOfi0;2?4gHfPFBzlLE2~u=ymqHMuMX5+xB&3NU#E5earKL=@ z9thVwcJ0!ZyfbTV)U9WY_3;}AKuduPg^$(6qF3IU%IBR`*M zbH8iaR1&3>ku*(6q(a0%FG<-fN(!SfDk4Qh1W%qA6p>z;(=UsTwcf4leV|vQY>kEx zJwk$z0VxIAD1-oM6jBQ6szOG{(hMm(f`{OH8yn`4bLV!N=U+O$b1JM1r!K%>9^gOl z-iLa2S^w9$PX7}TcIoNYv+1&NXrNrFL8qzQvGp-3Rr0b?YYQH=T}{X8Qxl0lJC zWCj@nnbDMaiWZS`XSTWT%4K2<2mx9tk}M@Faw5=rk4aLbRJ2WtF$r56n}`S!C2i9V zrIz`#H)mgr@$2Gy|9Z0jTL%13{lwcZ)QjpDQ=R_D2D9x&6pd|A3d$^{UlbUj$h2Y9 z>(R>%c`C_LO|MsQ;p`c9Ha3W^B})>{Y;7^>_em2?uPi9@3<=zK@e21{zC!SxR44R$ z0}_)03Mm!dMWoc|G{NGj+lHbn$+H62Izkjwtz%NV>&x0LSK#_n@qJv2^Iy|Tf2&ge zobXe@=wA|!ji#>1vXoR54DyW9Xz-S38wQ2p>_$Ou48x+tx0cjsHbxsPmrK&YCS|{5 zG#a9mWLYoJN-|r_81*x@&ulU16+CeHGJDxEQ6*G1us@zqhsg1C%Heo|P7`Vy@YL*0 zr<~nBgOiG)>B=W6dT*yxaXcHgh-NPv@X!Lj_GWHx1OeM=?w?z)^Pc@gPD8baNN{D zvpP;LfLmk#Yl`*16~K!h`+)}^)xvy#uui(ha%OvrQNLuP-@{iGqK<3~Mr`zZj0Qa} z>}*q}DXyxS#>nQz2(2}Fo+5>0V|xql9S{k@BUG2U#u(7X;C-OXHCfun3CXf{L?Q>{ z1*R-Hv$e%+QBy8zLWI~%%fwO_8wqj><^UT5AT|FE(w}Iu_QLiyyzE;-XYv9Fu z-gc&_tL7(rN%5wpu0*dW+1eO!@$3#|qM7VF`enw}a6q0Iwl_wM`hBAJcqu7+B~mF6 zg8pEDHin`san2G#=kJ6JBx!;V0U-pzdz`a4>v29JQw3yrADAo~%EX|RA;ds93{8$)ym4Dx~t+uI~cvN;&g@ApVkLyQq^IzcSSbJ8p)%S((&kXnNPAq7fn z0s$!%LMp^cW)Vb)0YxMPM+}}U&Cxo+JIj2zq&FO)w50VdMOomTCwNZ?5vi0=M#uf} z;#S?b#hSTkPMMqdZN>Pj_ixM1toPPxzWDjFD9;D$#72KWVHCDnKwEJB%r?C&CzTQ- z1;btsAwa}PR+J=(!L}CXJ-z-2Wpqa`5fL6l@CX^vXb=&C$3@v)6eWo+5=BI7Ns1ua zKrc6(-`-#{ThfNW*5)=k%W145F;k9@#@M#S2LMs@ihO50t#1P*PyiW_tgurn@V{xs z-!tH^oZnQ+hsU%RR|i>N83G9rVOuu0N1PcA=;tYAo}z>xF&dRf0&Jlto5^&xVyz7jvjNl_e2v8CcBWjhgN+s}4ur=&)^Jt0-fvt^A z7EOzk27zKWow8^vA%#kMMY=77C}WJ}3j7>M*90~BTFlKo1Ae|->XdjcGijM6sgSNE zwk>&)uss@4Bng=@WJ!uK3ZoQ8Ym7E%r4d3Rv_u9;uUC?n1yKru03jtJ2AuHS87qxa z65%2E7Hq&rk5K~eBS8v00VP0aNuDK)`UTTv!@+FE#5M$JDDxb%rAf45dFuv31SzBM zYb8tTe7*wxgz;v@c=1{oFYlF8l}e`4Bp0%>mqZY~!4RDovLd7GN4GpK}l*<7a_&Sa=s*nNUtnWQj#bwln|Me;so%MBV7YtzLtX0J!8CUn<7h#^JP}( zGB4}@ku9Z>{S7jrqHCid8k|+dPDkK3PBQnVlNlFmlV<6ILF21R0n~LaL zV)TSyyNgByI<|u(_y|Iwqy_|%NS0-c27+1B5UUn1Q(S29HXwv1Npjj?MV=*PVpQ3* z?ga1?&`&e|+rrd{cHXvmK0Gc>8b@WHGS$o@^z#B8JK#-X$g&izJJt(;;5$bd1wu%Y zBtd9{&<3d$;Hc{*(K`|WMV1nS#CwbL0&4?NNMeMxaR||gZbXPeLIkA@c?LFWhSt)` zB?t4G)>V|?Rc8w3YZ%a9Z)h=@)S z60I@HAcQ0aNw6S2&2f091#N1S?~_$0>K4D1S2I8 zkMou^QG^f)Q6Rkk8ZiT?C^4ctqIb0QlG$X8k{T@yS_;ZEp|(aFt&=soesZh>|7{@| z2!P5Gvb>z-{h^mh%Jr9?W3yip6HQP8sTDDLT!18su1X!hCiyw<5kg|5!3B%dinL$i zY>RCgw3G-SM1fKoqx9N{I-c|oC_h5*}Px&y=_|N(;1hyE@4zxva?NvH4-Hf zf|tlBky;~!KuU$y25l0g(xgfumB!XJP1{oRa$*Qb3|b3B3|#@-I*^?%pX!Vd98Fu} z14JC&J4B4#K|sk!nP~b+LO)H2Q8HaDSypp`Pzb4s&g<=s{^s>t`>A#QH1qYT0{I(n zYOD)U3E^ZEe(%mMB1G~eMI*s_ViJhK5u+poh143e(pkI@AR{sgqL0KFFjAm(LXs9B zAw-XolHfe94MZ<+7MyRe)*-bd%M#L5<9tL|N3^bU=0u`z5k8;^^s8%ixhUcqCqxW5 z+v21kngr(@PU#NZM59cCQW~P5jgc4yN~a(tF-C;axYp5Dj;5*!*3mRI);2V44HEi; zK1G=mkw~S92&@ksMMXeFi;NMiG)iSOZH@I1d?3~}vRSf|=R)+$;`rRog~_bC;X_F7 z;$YQELU`2<_TD8>wGE-Q^U2{+@DT=^n>YfTl;e~@YmGLYE(5I0j6|CRWfBAu>jFv| zq)><;AWEEbEEfwV(55F zDw@!;tXk}RP8J#lSwKn8`@a9J47bkd2cNxp|8%yv{*_z%dn@2yE}nnGOicvD_NXtl z*7N*2$5^TGb<1=%W4@R( znNDfi2Aw5jsi8Bjl>XmD}<869UC%LnldWqe~@O!EB5x_0VY zySOX1^Qv>`@G6m+s}47lL%!LnG+7>|z_3Gylotw6Y(Oi3Pj_$rA` zNYEIa$nW{Cx9)89|KQA>@nnA`ALMIhr~PKk%{>GD&f&x_t$Vuc4Q`GP4jvdEPe|#( z#*ic}&`D0+2DDU!*wR`s#vmI@nnsE;L7Th_5uHWE*x7ao+6dBAlVutqJhRD|7$Vl% zPN(+*Aq0swC@m2Rl4PY|o>&BFKt=ZM+(5XBcfIv0*KhA}b3P?AhB8Y@(-dN0bJXW> zx}e`1DXr8A;N_ZjvmV#Ks*>P6ErdLO^VZQ@?!R(uU5Ml33H?OTT2GRfxF}i77sQje zTS|Jp9!e>CMIb1H&hpMYg${J71WHSklJxr}*48ZMbLP`I!3XNb5`-pAdjubuGz*9h zsXbY)$g>ok7?d^$skyWN53HoEW^+N@gp- zi&JW4_043l_Z0Zu{loUkneF4MuH2%o^wywYSy`em>>eCaEoa!KrOb1N!%-&-7(+v3 z(KLwVoXjK;JOYpKg18dS>Z<1G@Q|jiXxbL| z(23!xr=Or&PI=ecAH}zx`Jy393-T;yGM`h`6*dHtyd<=qEKdYRsWQv*HQ?{Yc=5)D zlMwG5OqyG}w|`$a`@W`G+;=pcN*4w5dBbczW7tbch9#LvIyqP?q*6HVsq2d1EwRYR z5{*<5AqCz=>dJC_JjMHfBQRbrQOSVB^pK-%YM*lHO^@)%)i-na;xl~dPk$E|rYMu3 zvyvC??6H5a&wJnV7=wPvV%{Q~h|&$(NE8v1Y|E5`C30ghOyNd)N~uil zl1#lJrX~V$*;xPF&AmUoyqSG4N#rlKwjM2(a}JM=8KybIEJF}cQ6fU5o-b*g?;I`> zNnn;4wl{|iHwNTcLBvxv4K74njLa7cT=0kxc<|~YeEPYUm^Di(_afWd=Si}X;h76e zb}O1F`Q)E{jOk**PyNJ?u~8<3)*~etBT0;8R2D4CjA5Q}>C6tjG{Ltmqv4Q)Y9_NZ zP1cgA^prL)U#)g?uZ!K`=D~cvQRv?}J4oLfga7{de6E*u&6&Xl&N`G3L?LLKn#Kki z*9{YB)itIzP0il%oJZbNaBi3r2v{+uaSrbq&TRInswEqv4bBvTcRqZ9&wlYM$eH8C zFa8N8Sf~#uwWXaOQHX|jf8X2L8s-S+IdQj%R%i){QEc@4jQTxX+cMbNq^=euY09vS zVskLag%BpjXzn5%ylVO2o|>AIj;qJ7kDuLs$AkZ)Np)N{%kOi+Cr$7)w#8b@@py`l z0%1~w(u5dkn~Gkhx$nvqlv8}>i%;<87;qu*{Bti*&n7(jru#Uz-Q(G>JVm=WV*j}( zCnszU;FczaqR6Q0l;LQE_a57{ zgx0ZW#w@0mJk69uC{NU0<)?i?+uyH4%xl4 z2X_w9+K?AHks1{pX(n(^lNKe&45h(3kF^eg!n?LBkSL8(hBV7*okbZezV!S{eEusha_4Y@aFL$Tj8a8E36zPZ zFd0SCC(ZhlgFYz1&bcj23R=r9lU0VsTWs|B;2}gbkO@PqTS8NFaJ-)kE$R>1qx zAlhnv&FfV4M}4%BWQpc*K0&FJYC7Se$&bgt zC1Mc1Y0zblJkQu1Mds5b$2VWZPmVBBu^}Sv@DLFLO$-R%5?zCg9wP%qqB*y{iFYY& zbxhT^#8_c;4l&ZYfRLIZG;EJH81xIM7f3B|t_B>|S>#G$_Fbif5F*Y6K;eU@sx15a zNA$8yW=`2Z{Nm$>Rns(leYfyynvK2ZO{-g@jd*T2dQX36=a(;SZEpwX#B4TWDJ(6K za!}yg1=7vPgT!>ZAihLI!@2VzHz|+H-G0B^iFBtyETkIeQwm-qIQzDL|Daaen?{jd6LrW_YvMw zM~6yEM3mHZgAkI-7cMcKP4QCU0<^Y9`WD%?*fwB_3?nm&yr5t95F#RD#5v2t&X6di z(D>jniJ`WxlcXiYRjE*E4b~Aw#K(vW0gvElx?nI}aPz2&zyFC(R?DVYA4Il%eb2oA zW|)63ffs{#b9iBR@xQ$P!uC%}+p4Onm@OM*kPuY#Hj1WdFsl~CPIHMEW!M-F*xJ~H z5NL%UniO0FDM+HAb&k4P($3}>lOl$ZQLm3o6yABHFl0rKG)W0WocBZ}L3I(0x1K=k zdU{qNY^PpEPy!z#i)zW8{e5m9&KV9$Erp07#uLy_AEzh6-x$XK%8x&K_Q4Aqzw+?K z?H`gZD1ye4AYy|HjlX?xc=KZK{KX>gseUR+L_ozrY7%-yiIkE=fk_f(N`0+-7X(5j zNYyo#YNfDE%i+O3!$F^1_dp7iG=L-uNr)aV1aVbDjC}3=N#*P0h@6b#JCqb8iK3rt z`L+ixjXwM3XOr==Ix#KnD|8OOF{b9>twO&2(Z}BMz?IAYQKt0vvRYC%p1tXqWwh;6 z`!_%N!H<3JqwjCq54`{FZ~m@x8v|9yh#`=r30fJHl--ED(j#sQ zB=F$*QE}hd&2s$w&F~8L{Z-FJ-ID}r-a1j_y`RgH@(e-}L}Y(@z_DHUFT8Z)3;*aN zpZ>iU4<^kQpSyW|x~$r&ZU_O=BtuJ$LXqfH#&ZOtUFf;Fd z`0}M!2qoXx!G!O*zexV}2Y&G9-}cDWUl`17|KU~o8{ zhX>AW?cBe!xsfT=2_H(4r8!C)lrkhq#{Th)+jsWK(h_e2v&o#Jy+f`){~V!hNR`01 z4QJ1uK_&^xbp1KuB$JSWC{B>-%#8DXWo{fXf^!}hBFm(OCv% znJ$(K(YAKEXx(9iDcz*Va%FZbuW~f!^=7=dcIEQUBM&|DzBJ87#$*_k;TkBC9+Trm zb2y$RKo3Y-=iT$S_xG#T`PM~zq}yE(TcV1{v|Caz7!L3;aBw_kZ~uVF(IKL(dGOp0 z=Y}O3%g)(NRHEr}qCkidAG$soAz5`EJ30lw>vr&Xq7Yvbl|m#6iDy+57Z8wmtq>-# zGgSIV-*)BAKk=@sANc;O_rHImEOyo!Sx@Wo@|C27*Ol>Cw{!hBfA|OAd+m`&ekn4&4N#fE5F;@}eDF9M zsTxb&I+m@)`iN^S-Z{26Hqc5T0w@7SIJr4UvrA`2_g&oCc&kyyPpjr;V_nVH&qVP` zG5zc1T)!$B4YTy;s_At5*tQ%c2}WrqRmJ{fI{y7neet^W;bfX30&QbmwLh61-FIet z)CM7wDDbfZCd5^re6VZ`3J#8sFsY;*l_W)iE^<;MQFLu1t(OSv(WY~zLO_TPgy`&d z=o+nJ=)~vi#|424k=A=SvH56})CAd5q}|w1FE?sbjxG&)+0Sl|`se=W zi_iYXbh&(Kg+sOaYFA&~ntbvXXZ#~Og*;kXe)7@t+0XpY+phii_r3FPT{ye*vw4>F zhl3#-!x7t?TNFis^xj7J))G0C-{s5$Rq#Z z#hr6MuhH8oDwXO?1{Z~l5+xMQTH2-|#6VdT=p?}tK}xBNNN%Ic>rJ?(VSeKd z(}M~7ySq%L`-sGopSV7u3KvBy5$keB~9CqCWehckImr_r6P!c z5~54KBxvc-$|Dnv(*-vsOg{8SpZMtUY_?c4Esn2WGWXTx6R#ThAG&r+m>Kkq6;kN3ue<9)ndtfK4UN(kQYVQAR0VHmY8R+-<*8q z#@?+}{5uC0hqL9uo9@4OZfiJrP=m_SWHlrl@g96sjAs@5lPP=qhZv=~w6(*gNhxcO zyM2U4A~%OT_P!rxFOF`bXjpcnII$#dpV__V>BKva_81)&Mx0h2+|WjdEvHW-lB}Zv(9l(H%`@yH_q;cxRCno0=fB2x#SL z+XnAE)qIYw8}h1Q(0J|}ZnC|7hIF(+e(65q<~jCTN2Nja5~Ptx+1dAQMk;hpSZN%J zrS;4z%l^?3xp33YLpG^XY`9t{?`o z)L^v1q!~eKPzs?H^Vt-mAUelM7g=mQEk~@HXKz8_NTXzsinW2p$m!B z5kly!g-MY~MwBUDB-Aa;E6dSj#+}`Lq=;;74B6fovN7zFrUun5vqYP2q{pj1FCO^z z@BXj<^2Lum{`78)v0Y>N44438;CS_Zw)(qvU9W#7;6c$3IXT+c zN+-)&J^j+{=N3&{0deo>c)VCthiA67->kICQ!PX{11qWOhN^Y65*DuIxLL3aEis9x z(la`jv3agf)-!0+^~Q%N2q>h=?dtB)p5AG2vfd( zxzI^S`HGpV81~Ee2j?#tB~c<$FXm)fjw6z2gE0o9G>J*jra&vhczn#>t(zoS){RW6 z&gM_YGvMFq?BY9y2~ZP7kALZ@KTDN)D9<1G!Sfr1 z%C$o$T|-iuri?}-@-!n6T|uPR>*1rOt?F*|icYb3tmuZ$EP~nwmW^k;u)MT;$nNef zg0oz?bb)g_8w`6nsnM&Ihzg-JGna>d@;iU9_s{;X-+gJeSk^BC`r#VrN2fq{uU0Y; z0C}Eed6p<#i%JxYZP-0JLI_Eo_vrQdj0PjLR^(+#mS{u_+}zt^_x3H$T)fmR>rsZP zX=z(W-FOy_W&ijHB?YspVbQks#_sM^z-Ig!E0&Yx;_xG%`}{vGQp>Q%>}5pdYSm`^h#Zdn$8{uVmu| zAb;jZzVCZCvg}7QP$F2$G9@ok=Ce6BZrtJa&0Pcv5hHnOIt|1N>bB*0d`N#-cG8@4 zOpYhmx?y^B$ocINx%NyJQ}&iNe){IYOCS64GoN(eM5+$^)bIV)D$IqbE#&Bcf zvQSzYB``ve>26O!ckgP1G6Wa8!iEskF0izoWedwDayVYHe>~^b-Z6Lf4)9IGxt$?b zAGpBTjUF3CL2gozhE^BxiQCKeAN-RK?fusO_j@ljZCkCFzF0ZT<2AtdS6|od`jS`J zn*r1ETZ95Sh*9Ovh95 zqQ`PN#kV!n<3oo1j3Uz{SwX7|Hx>u(*_Un{)orU*qbaXD{qby9 z>GXm}TotZ`khIQGxxn0d7Hwcsd5-5TyT>!0yRpmd{X^zeO9Zz230E&|bAEG! zjX{D`4N+>QZO?z`4`V9@WDyd{RZ z_UtYi_wlEnxfR#^%6e<}iF&zuU;E(w6VE^Y@!iA2{f91JdiQ(Y`lj!G2#nH1>ANLs!BO@y zq%v6BlJ`ekxOkBpH*Qk&3baXCR4qcaEbDH2MwS*>8*m8?yhQlvCarD#+*Ppufz=MxI_VCqrZjXi={X8k96w-xAV=YzPU|kE* zp(OND&Gs;7V^Gph4gHM)P6=u^3}5*Ce)a4B>O(g_`{k$h*6zOQ6+k~)nVi!hqdVT^|>uSyHv}>ibukQJsF6Qo&kAGqOPf9KLh|6FSWQE9T$ke7ihF%(HjsWrn~(@UYBYm}5s+uVQf_x^bQLx1o`w~pu2 zlhnRB6}gP>k{FFo$pP)%qL*(Lc#)+UN@^5BAVjwpY*odHM2fPYYAQtRHZ2J$@G&sj z7?EWKZR@#n^A62o0zMGh2BkV__l2Wz`v;%?+-_rSb4pm6uidtbH72#I6Il<JylW|!=Ok>G-L*{G=XFoUp)5h|MB79+5g>- zef&n-eU{Uv<;12RuQ|~1sc^BmixYkAon*H4CU}(d-Ci)G6y2kK1UfNzAJM^p48+wQ zu-5yoMI!{1_iXnHX5KQN*Ic-8j>)p(_G}S8^vTcO{?dyt?ya5ZI=iN8z}IW0=k!)< zck2Hyzwpd+AK4iVvLAWxJO0|4(j?3AMA&M9C#9lA4+?@TslqUP@~Pd~Z~pG@z3|M7 zFD_P5OLG@{K3)U-c+Iq&e75GbwC}wljd|lg`OFK8KY8-W0~bQ`GUC#@u(aNr7*Dm!xl^`y z*;qUOvoAgSdsPs}*B-j`w)0yX=Vb_qPju$G_IDTc$3FXKcRux{$B$;!e6i-l z>r3cMc+9~>nx4U zan7<_*0gP8RyoFthL@&`_W%6Er*Ay|;)_R>wevO5r)!{(*G}++QR`i};`E5mnj@}& z<>B;b`H?^S#7m!f;>k~q2EB7-k)L_!$^-B04@Tveo_gxW^;VsnE7L&0+ukrfrkuvL#JC!gyjZ#Nbf+Yx^KW1Z#cQRB9B{ z$r#&87K?`QwBc}GhbM2`uK(ci$8UY{rR%rXSh`qa*SgbMzm?r7hs9ddus$5Ho&(fC zJ(3p|5Q+9obRn>My;@OgDG_sA|ShkyK~ zFWx+!&ljf>r0E*7j@E4G>59#1`ziSI&*?ioDA3*|EM2ZjbLrZ7+f%acWDWf3S{12z zg#m=uW%x||jrV@fV5eXH=&0;n$x;dj2kLaPia}?fNW|dzm|-TK&#)t-tZa zXPnsf^~%wFEu?K<57Y7u8Gq^g`M=)N>PIrIWv|GwRw0B(NI?(+A3+9z4KS-JCXHop zy5wNlPzw>BxpTDm#N$uyy|{a4--pniw!v%6Iy#k*th4>qtO&o`1vnk`tOI|t;>4^; zCGJ%2u)d(bIaRI;ypGTPTL)hJS3miI&8@-af7;K?Wuvs{*3L>|TXmaxrK0hHMcXi4 zRLon?;e5%hqcJhb;#YQekALT*AAi1X+q>Q7>*3A6-+*wbG=4+9{@hQNkYo=xS3dzW88EWR#XpCR`Oq#Ea!pBo4>hws> zJ$b51#Gm_pAl9IV6-n#i>{o<|L zle>h9$7^={=v16OUkm@%lM(ofJ!5Gds1xSOHCEs4Iey_UI;s7dfp=|uM3=v`XP$nlIM1R)zp~0I1Ji&X;PvRD51J-)*>RZj3#=LJknGR zRb%lo!z;zJ*I%07+})k7v32|KI2?`IfxCx;5_En=kDy zgFhxsKxrYBB9W?V%~J+cLO|h#MCb%*62`N+d;ICAC#(LFcCBS?JsUlGg|e9YR^8fn znb3>hN`~KU2CAEji*Y#^?DWo`zw+)PFO3mF7-2Dq#0zLz%W~P$I)N}HOE1H}`P652 zKl9`hH+%@|+33+-%3`y-WPss~Jn=XB_0_3`+lPn#<6rp9r=WLe@}Wt}tzlH9veM{A z24+pm!a)^{zj-vP|DTWk>CHd=>}PM)O+9~^Y;=Fkt}pJ=)bm#s^sgHlTiN>@=wCVa zz?-h#|Ik}6p1Jq~XEwLrqm57Nx>nQ0T)wn>Yy8BsPu;n-cV`|#aBEt}@e1%=;5M+g z7Rgj=N@Mt|4ESl_#R~Xr)!)4V>;UIh$Ij}{%GJM7r?iffK9l_w;Jd4fFg~R;ep6%T z|2Dr)Yc=cD{S%vgBBP!Ri>;4K+O_cU_>|bSUP1Z})9(WOy3`uhV(~d&n^Hajy|+re z@5cDaDII&gzvQp9BYh>t$5RF5dQHI#Yw>yhGQcm_B-Pm|XZjtce*@r8vOKW@nl+94 z#GIsS>K<#->xtxB@#ou;zr*%#VB^;XruDnv#PqB`kYrumvuj!F=|?R4?|}aDQO(Om zIqR!iPp@-bzgVXiqxtVJ{hJ5=w2&lE9qZdg*YAo~S_k-@*Q*5nZWrK{_U5ijtEYvj q@4Q|E@OS%n;#H`C-+8@?*Z&W`5G+P|q=vfy0000=d2MCO$-7tp0394jL_t(|+U=a#kECgK)_?Ezt+8cB zW>(hHRn^_o-7~$7J&Ol>Y>d2J;R{O$@ehFDjvL@#03mV19ReoQp86Wd__B{Uo2vU6hN||K2xpwcgd3jN}FMCv4 z_R?E*-84#xxzhTi$n&|@dg;B7lhbMKY?wIb!xpgZ=ke3B{F#6p_j0*c=yC1ctF80D zunb;g%DCmL5vY8 z1xc1L=$8xzCAl{2j)s`Th!~>)A*GVLwzIF)Refj@b326SV~lcre?Gmn{kR}Ss>Ij3 z$iI?_dBt}AsTe5EzL1mxA{b*xjHaKah~UYz;?mv@`@1^~1_QD*BNEAyRBEY5&e|6u z{zYSSZ!qXP=Ufv)_|#GO6W^u8s652@_hX2EPZ@n#_^3k&NF@m|kR=Jdq9jCzMsay> zkAuBkTvroAAcR0?E#AAevkApyS(6nd&RZUxo_O!WylvYzgjD}}RW;v?F)o1`Xt&JR ze_UVvL_V2nr4al>DdayuQh4V@1f&G51%qCXL7K5s6zmN84D*tmUY{aO&=Sf##d?pm zmevK1rZbKf3tR|vzQu*Wpf^xeUG0d-ml|hp_j={gVzImn7@*pKJ-htJVfSN$EK`$& z7@v=Vp8}D2AA}H~1Y}xsX*A^Oc!$qj+T-$QKrhefX9bxt=tQ9fL;^uV@Se^GuI~+) zHw{O#CAS})^4|R;>drG94yo%pttKbG>}=!9viMI`Ro{*=>McKQKQ7RZ4YIG|mzQ4r zauDLBNKjry5@{G@hUX6Vd3Jw?YdgCfj0g1cjDg9>vmB)qLJE`;AR?!6=|A?%w)TZcKNFU-^=s#KU7uo-Ug)HN-(-Dpz+5JJkO8P zUaI6_<^10gM*c)VC;=SwdVKlDHD11Y$P4>>T;17Ww^y>;D=D&qqDU#qoV>_M)0EU0 z60I;=qm?2xnnY=GsmQcukmdCIJ?6_f$BQ{ir=nU_X$avuBHoNKp2o=Z2}y&v2F`qj;;L3Q+px>kHT6xWv=r5l>$lvp*a$D0`%NiZ%wVHAbduQxy`E z7|;p?s0dwC0Z@nn?>#Q{qD!=6{}T6Vq)ezU+}?xF~-r9@-~}ufD@>y4tZhSJ8e^PoZ6oen z8u%ky%145%g8Vy;kN+qNv7aSMK7F{)^OyIyu|HzGvqOJpK$awA+Mu;TDUDJJX*5Df zq>^YPM2Inf5Crc*N}>>JFH({~1St?ggAYg%NmIjgwPLYqa4{gY?%LL#?U~iNJ=6Wz zAf*!jmdIg|XX47vkehou+}s~=Fy3X57o=%QlB5VEN=mfW2m~R-H9Jxu08b>wh;Qxs zmitKb5dt{t5ke9Jc<1pV5MsasWmaI6WHMifve!$hrZL|6D#C2Djkt5U?zWG{j|6EF zHBdtQVH z8YLAgjA=??6i9ia7UBI|?Rs@ou1v-Gz zYVDK6wV4X&f&-~>2%Hs29WdIGCI)F8!(K+OC|HFc@*>Sl%c0EGi<3q55Lg1Mjjwj+ z%vL;h3n|JpQHWm~4Tp?JefnjF=qyI9b2%>}${6yzBuo2bNs5*lBPAjNS|Kw9LLx#y z3W1jrDI_|IHT!D4t#|<`ksCeQ&DG+&*m@A1f)OAhlrDzF8N_+@}2rAKNlcQ9ER)$P!MBFfyYDAi>eK826 z)+i+q+TepnDhR@MQH>9~y%jtx6xk8PGbRpuqh)NZy%1CsERtafVqKzVY zK}=Irs)#}$I!8=2-YA6DL?wyV6Qo3lK=c70TD*(|FA!NqyIfJ(j;?cb-Xlar;Yp3A z$P0`~MH^#Q=BwS#E{4Dq=xuy+x$#T2@yqa7CZ&+qjaIU0TAX!wzuv^#wxw+?exT^2 zq_qwgTdWWac891WMPxa_C}NDLLLra{ArMLvg~W>vyrW&ssj3xS@I0KHGGERRQq#6A zO>H?nK4ml+YsA|&bHKDM@}Slp51c5a5$p4kxF=-k{F}tx{hkKKnpMkWLd6V-)QW7fm8ueS7_HzCW5cL_<2mK zF?ojR4={O2=OWc~%2#Gz>>>+h*{L#V3Ol zf|#U9)t;`p5ZAiQ>8xgFxX0IC`U0PS<_0f3^E~4#mq?2ooW(9DxT>YtkRZn>a6u4#nE=NheYieaB&o{{x>nCSWXSH8q={oe19 zWGNVl5RwohRaI#rL>^-_TL6=f#bk()x~lF7cn7!!XsHCRKKC@Qe&Gu|cjGDc$GeC` zF`1p<1K8Dq)JA08;UY|$niE?ym<$*XcgakO$Fp3mXkAA{q8$`z!2=sP4jI4wAAf^Y zx4@W`S6_IJ7oYtc2jda@`(u9crI$Ee&PbD-)}K(6C7tzJYngXl$TsYmEf&?8dT=2~ zBcZ9QrPj$ii4i}ewb46e#^!yE6u$hzTpOmLk>c?T(mCM(oa3 zC?R<`nIHwN_o3eG@9G?jXCN=mcxoTzK**}I9U(@glwxmp#BkV0%D~%iyg@(7=-G~g zo6k{x?dKR@y3Dmyv3loq^1U9`1Z=ay+Kw0^fk24sQqQg`7Kx@m+<{bJTT2Lzue|sY z)xl-jrlK2_wAXh@mBe=){a(hw?hgCY1$*NW52w@EPt)$G>RKU0vR31NAa2R6;^RUl zB_MnZT?o7{B6Vhx{&+ZGchn>CmZxuCqf7_vk9OGW;MrHcMm8F*^Wo7xZNJCjzJOAw=NDb1#r( z1*4r^dTE9X0op0v1%h(0TB3c#EjxU$Bzd~dX_dlxkI<6XIf}Bx3X3QU0*WBOdy9|( zog@gQFg`_86|>W0f^+n;gx#{wul@3`aAnv}{^fu9?V@r{pJQ@+U0hE}L<}K>7p`4y zuI~;g%A71qsjHfPxx=8p!%nYHNhJD?uB(Ycpb~+Sku*_w7g(+;26>6jGenZ0(iEc; zTI;aR6MP`ca)gWsEIL|}=+Pk{yeE~K9EFyO%oGR&iB{~CIZt0cVBE{q-f*ZckRgAl zvn?OfAc-LOYcGF(^yPz{ayK<}&aDe#7s-xhl=GUT?oe$@CM8NjqF4*cBs6WuY*jPJ z`j|Y&CkbdnmZeA`=$ymW4c>OhBts<`A~>*-Q~(!{nS z3eRLVCshgKy)j}iBo;kH*OIuFVm9M=v80QEG>XkPTSwpM0!nDWBeHerh7AZWF-j8y z7-{I173rXlh{0SGY_F4QRxkB98BNio8b5ygS*d4MXHTAM#biId95<(0RK}tz*e$8qKMDG!- z8@e$@oDVcz$L!HD&U<-vJS+u5Mm}NSS^q)$`^OK}jc1;XZPyUix-h}5RfP}&LdbO? zoElIHDK#=lx%1Xr+`RcLCd*j2P}iatVjV$6o-)`SQlvTF1t<$hQl!ZcQX;il3q#hg zWs;2~VmnXMc^sCNZ%Ol1TpkT_qg8gn9x0v_c-D3-qtu#Vp7)h=j<#)RJ4@#*QJiUh z5ln(eQe=`s)y_&%3?m_wg35tOh33sZ!o~sH5fz8 zb9|W*vmDYCk`#>I=&@m4-82=gbL6>UeC;x`wn3+v^FDA9xQ~=1Ju1nv;z~9g%AJ0n z)5$4yTjOIS#DLHml_UhE3EB|Nx;Ty!b`CC)=Q%&|b3e<6@84qj;5M9`(4C&b@q%ae zE^~P88o_(CRA9r}bCL|ooRFqOrPn%9h=k5!oulqLY_RO^?oy0~B>g_e^U4RJKQ}KV zKUUyrolQcT`uVEnrI%me(PTmwBGx&O0<I3ZMy>sN0u zna+tSL79}{!2x6`&1{P57f3B&wM3LXywrFBN^67zf*{0*Z7N(0bioo`U{DNbs|KMH z_opA+ZbFFmF+)*L_Q@#4m66FU8fj~7+k)BIy}Jd^wEP7ljqQ3MqsGlVRq zb(YpyeDL%NO*fmxZ@>P=@=x#Fd33HV5HHG8FT7@rt?oX0csCmiR^$CKRok#?8(P<{ zLw$_I5D~#5okdhD!lS#Wra`)OBS-gh)b0Q^7?ADlL0RCl44;)OgQxSB*jhqW!(sum zW3U}UYl4JswIn(R$`GZXbrzH)AMJ)ee(!_DKl^w8{(jZ8tF3vT^FvPIBg{2~_uhTu z_Jez0eDCJft2^UfqE6;Zs;0umK;}Fm@dy;rIl7}e&{~`mL}v+Tn&3#&6j_vnG(#vs zL=n@1kd-ts5~3ne8gCt9J_q3ty-VN&D$fy(CHjDqilzpoAm@Phc%H3vCEyBV#&8y;?F^ zRop+BhTr=AZ$A3QAN=q8%eq~~7|&XGi;ea=*{td2wHoLin+yQFeOevY-}?49{`7+n z9u4yR7cXDW{`#b8_vfn>y?!4hCDaYoY>G`1lrVI@MQaTTGHpnEB`Pn8C=?QWM3@9o z5j4(XvWzZvB;J$M3#1yZTU6fBI!osQZRh;a>2$T}G`Ab(RvSTixz!WdZWV+l zwbLUI?ku{~NA=Nb2W86W@ah-q*6mH_D>2?}FrmZ+Pc$h>QQ%sKE&@tK5+F-7I*7Gr zbSt8WU=%Vy5)EWI(OR^ESQw-egs#O!PZBz$^E9EO!_x-GvTgiqxoTs?Zdf`4INz{0 z+b~#df%N(b0MC}Up1O1HxUN_Coe!_h>XmM~hB8EA^rU%;%2T|EG&Z85M7sdCrEc$m zIzr^Vbp|w@5S>TGfQ)Ndr1dRoQIYrhguEceh>)6q!$nW$9mK$NweVfnbzAlbAf~RXP`9qfpD)WcKE4v3j^S==WAtBiedFk{=*@2H^uj z8g@*=anI9i2WOc_VGYBDQ+6J3Sx+EpPewp42HxT6zq(|tC;62tm zoV6$^sq2>3+2}*`=a^h>fjd8g7e0!~xK)f=57oSBA3k_^dh7b7OE*_dtE#G@=(ngu zL2yJVU{G-Q%v0z|%}D2vX9yHR2%<5FJSR9u-?q4VPM0doGnWwuW6&Bl%ti0*3*i9;WkU-F0@gwPl?72m?}<%~SSBRH1j>}?Eh1WC1Z2Ql zi?=Ny1eT5E;d1WYdH?RijcDbz*sRYrU+wvE7x@vxAKMd8UF*Z?yAO_j^Um?{y;ax7 z*>XkQG`On5*%~PXN(#&%MU8v-{Q{c?f~|-K)ZUPoYlI1eLSpwyLO(+Y!MY|B>xA6Z z1Xt5pN7Z%Qn;yrL$-JJ<=k*4F-7vPj>;(Wn))vONFkA#URNkdO7Ipty^j`(5ZCpj>gNaxGI*2(ZyP!rk=o!wq-`4N zreoDu9y~m?@4bKLN(2ZV6Crv_3@u7p0v%{UR2r`pUV!add}pbvn#FR-+wb44zV)5& z9o>6)vfN^?*&6U|&P{xLs>$Uuuny=RolJfs%goK)Vec1;yiA1@lv<+`g$f`yQ&|B} zX^P&zL~I>0(Vzv+S%lFbB(`k`!Qs6n_(D0gW`kN>3e(>SUI(G)}ETUGM zwHp4TsS{+HgOms*2uiFw%@KTOY3qvFYC+>X)7gUAY8AhK>(1(rzVqhMo44*v zob%gedb$PjY=H1Ajq{HSJU_0v@@I?&ypPrXXsFuGKAq)RFU?8;fh5gP#vqlVYiruB zA$m)2mf$*U+p$_zteT4He8zmajCbxmsQ&OzUO#&M-CL)NRlV9W(`^>d`{EOa?LXBq zCIIWau+GK3(P){cS}azpOTE#!mn4bQ3KFGg>y8*a-gfKdEUxWXEM`m>b516wOlH&Y z_WK_!fB&`bKKS+hv7I`Btv#FA6xH1;`&KwmRpHHc+yE9@o9W=t52T+JtgJn+3Q!Yzx>?wFYT1QpWfNsefh?XtCtd! z7%hZQ2$Ygo=c2PVEEh|A=i$TE_ujpA`rUWlKYe&It$Ya0maK8+hYvUFXp70!1>44F z3UV9h*=R|=8RFZ~O6|S)?DglLxqA5WsNZ|3SLTOVp7o``h#&7^KR>uz3vpse9gi*pi`(<4V#{2&>%@8sSaYsk41B_K&7b)Z{4F0j+<D1U literal 0 HcmV?d00001 diff --git a/team/jimmy.png b/team/jimmy.png new file mode 100644 index 0000000000000000000000000000000000000000..91abd1d8d57f20ad732783b58027c733479b02ba GIT binary patch literal 8207 zcmV+qAn@ObP)^D-u!k++zR$03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@03UNnL_t(|+QppNudT^- z(0{9{zVF-P8SXjf&V8@D+ik~5oS={pOuzvJ1&|;KNDM;aB}hccb9l-_p7;y+b9hQb zK!o5S*loK9ci(wB)1JPms@CFR@7vye`d;_oZnCA)nfKYhTD9g?TlfMVfAWX_TuzQp z-H-1)bgIUx%`{!I^JQxy!g~+TZ0pwz;Faq~GM!9_G1=Si-7~(xhkRa7^k4tJVz@6LnC$?4)|pYkm;yB&OaHF!VDDYp{BX;Bn2 zFETf5X82<@ne~ZzpG~W>^4`0vArwa@Uawxe@wh0f)AQMEdFSrEbobuo;z_`}%9I-kFTYC*J$!z4z}VAOpHtpBel! zOZt!g-8aKufA5F;=ZpGpNhtn7O#FHu^H)PrT^d%SswfKYof9yl@Twv?woUB2w#V|k zaQ@VZd*Xbt@;>bJG2iNA+%<9Yth{UR?v*Q7f3UxQ=|>MAKfd>aAH8*6*G&&>!{-Z< z|Kgzk)9?Ih`Q5i3-mLrn8-23h$;RI{DX#jW8frH2-iZ^T^q%2ph&o3?(VWP!GfUA# zHGAkqM9Z>tS*7Y?a%vWvwqJ>NGePd>oZoEQ?tji#^|$J_KQprih?|wS!1a^9e*bBK z|L|Y^TJh#vcdsov{m03Q-&F~JPo=n)@q<3&vLe}@@28M8)8|aK^|ylaQk8{})eDrW zR_3gwIPV0JoHdx~z%)&;ybpFsu#mEzrj%PXdy!$&Ps8x3p#S6V{d)NRTlcP>ulj$G zWbm)E%C9ALM^U9z6%iNkp`ZwXA_S_kq#BfncVts?j9@S*15Sh#BQZr$GeRgZbM$>A zYZ6uUW>$#E5YUwMS<1RhS@Q*G`?N>=6GQ*;@BdTx-5=e#Ja6=yS*m{%vwS0~93-VM zaflCyIKXhu5&Tb<^Byddx*m@*D$DiHf(JEJ!MlKS9y93smYg%FIoYUS$~sS~%bc~d z4+CE`Y@ZMGfBEBoE8l(d$HTLE_qTegf7$l>4OP2rDun^!9O678kaI>%5ez4a!w_dU zz>z7OFd9}2LdkeI0w5X0@87Eq≫P$ydzj|$_ zxc}t*l|^U2S4a6LZEvqQqp_mzFhzLPM2F^)kMla6w2uaoA1#A9^T-e9@=|B4SzbW5;=l;ksRuQJ2*Eq5qQY{bC<3FZ0t^*!;wVBv>4d@wxJX~(hc}n=m(Ey z)oR(jUN`ZZDa%(x{m2A~7-ivc&QUmHSOfxwM-k^3mKA$DdzcBGC0u|iI7%;!f@fS7 zT-n_v6a{1NaWS!2u9z)XEMt!%c<&(#P6E!Ag_FE*bYCW=dJsaLv(8dVEpX9)+h>OU zgMaf4_k$llyj(ZUH)E%N-|$D8%^N}zMKn=}Q3l7T3=D&3IvjGayUV46LyiuQ7*BRs zwJVyYMpW?@Da4qJhTOV&lgW5QbL$pgyZtJ&`GV8=oO>t7oXzH(oXuFK77;Kf5;Ij0 zcVy1JVc2p!8Xm_O>psSA%Wpr2P8+{zpBVa&fBzrJ58t^zSS?ns_g(xurg9T!r4ti1 z7!(f6iL&(UPbXYE+~?ZS0k2%W%H@LtcBW${;~mDM5rPo=Na|a1Y|*}>Dm+&&UuHBM zqH5HauhP^Vi>~I$V$RdEGv2@ZfCmqs@Z{MkvsFWiQ7|1i@kcSIFAYbd`(5A9QqH}q zUWB&I*B_DiOQBCr7w&Afx;$Ifzurgr1vS5Gsdr`$5F`pgjHBIsUb}sr*Kge5*0n>9 z_V+m2-DNPW7?u@-YDiU9ICZEdP(@=$5TPmy97fKWu|OX@ds?xxGvfNu9#{8vxqooT zJ9qAK=k6n(oXwckjW=PMv)vTrjmda?*0$ZM>-%;i-HVp}lSALV|7@_FufE*(_N$7& zZXyMm5ezZIsbhCC;Y-)9@W#!X+`N2=tNS|~?oQdC4k(MTw$`ObFw`l*dCE{>TCAOK zUI#25!IyyoqcjL*!QQB3>;lt`@pA@dM%}j3#Z;>5rLIe_SA+0uFsP2ZzTXZ{(^h!; zkz@W+mvuM|R~B{m54+xe%N2ubIcX3PFvVkxi@=v|UgwQhUg5@-1FjzIad~&j-gv;M z^b8A6S$Mo`{InCC6GXs?A+i>LT0}J?DBiPPPVj)k2u^SaF=tkF!?Uw<+LR=V^BM47 zS|^;Xnzr6DXz4;+&c{Ok?l-?yJbrfm^KEbcB3tn*h@Zrm*6~)3l+L)ezsFa&LARKZg?j}s6l-~^n3*!pt;6Gd$ugdmC&!%2pm5zC-T5RZtV zX4GBJ>3l}r^|U!lM#PK7!EkU|x9uY5+`k|h(TlOUy9oTJ|LLE}>DjDmy7YR?@@mG9 z`ec%_k~O26s0zm`SB|)O`4ZO;E^&E(huzVDDmV)7S*H$$kx@0&6fDCg=unhwwy`+t zfW$ciS-(E-j35x)+FUjnMJV=x9bf_sfpVk1 z?t|>-WzhfqTR(Jd+wNlSYf0sLRw=qZk&~{iwHK})UgB%7-{$t!%N$HcOv-{m5!Ugv z2pD9Alp(8Oy8c@9j3NMU?B}bQbI6B&6SQZ3lm?f_{ zjy2~?WfAs7WD1Od(FJI?ol1WMdKf5T7jMLDKd&ZxDVxvP5OH|tm`umK_S$V;edPvM z4lXen4j7byGI&bwk35Emba3%x;uMo`P4ZI01gEPUa;0>G^qK2w%OwT$L#f;!! zG9Gbou*YarQ3QvfE^99OuAMmNrXn)gKo2&n*nrDVwcc%)23^dzo3_7UVK_81aX{f6 zWq_U0kegR7Gp+q1B5-J}V3>;+<^YoEI!Q2!iv5j}b!=GfHs~lz|h1DU}Gp9FuCoe33+4a>2VYnGHnbxrD2& z8ZCxWI-Hp8+a&f~-*1dxPgkL8SaC8i0lkW#mHX>RSxoO5^)a@Qm4jTKo# z6&uiU10A-Yw+)$m2zu2t<+5#W^p+zdH!l#IK4NDw z!pulgP)+w)M&s^#_nFl-^{QjJs!`31Mq~DOce!=*2A6hr*cp`!Tmjx8-cx!K;Ns#SjN(8AUaeWztn^X684N^;^f;Mx?Uiuqi{-9I;yH9Bb37d z$uik8h^Z5oo%bo_%%*1OUf`Qw481=IK1Oy`_0X~vu2>iIJnH~zSPi(ex3l)gBHVrW zg!k^=|Q#c984(6(WbE1 zvs%qr%oc0kEkaJ2^VvCrs>GY(MQOT@tj7I^k9g<(yWD^HgtJx6$@v`bg#F!1ciuvqi(Rr%#yA=C}};PIvf~TVG;-cb8!SeSJ?7?CMH)w(B`Nn|)9?_@%G^0(DcEC%vGcU@wfwo}JCISNhBQyY@10JEL%%Z_F&qvktAcSkpzSiL@+@YF zxLQ(JW_N#|{mBF`p3!K;D_5@Y_~8S*gJ6oq4o_lKxOL#+GP!FAPLQI&OnLO^At&cQ zVmPR{v{SJ^9dNL}!=>FFc6WE^am<^9s@h~a)$wSQk7tXFS-y}~zD&{|4o*_a>{eB% z#1F?s<@>=Xb+OUOc#71(5n>rj4G-?zrCUtc{rRslolH?*u``*l zJKf=Q+0qVr*{Xu(t(9I@B>WKcFWXj>^$w^4&MT?|<~p+cv67CZiFB z_v_RVhj_>S?hrF!QPhl5B7^~|M$QS;=tPOZgC?fqlBx_8&VzY;QE_y5oy&)3zzHe^ zdwV$j`H=;!wL4{y}-+34i>sUHo7G8~j>jD)hF3?=Fcf?wDBLs5{r zNX{AO9AYJXjEu^Fr3BhDtOA7(6u!i{5>tmr!OqSuZP(*npcG{~8BiyWNQtwO%hL)p zA`XgB;GD2G8M0FrRDw%w%gqSLHkiph{EXzttas3~1#&QHps4AfhI4A29 zVVUW4f?6h}L{(LcM!R%YY|1(rF9|OS&S?5b4;<|6^V;oOoUU5#ou7N>OXs~O#e zh>~(o+qR_12p9YZ6^(UDx=Hz*!#M}Kmbd_IOsrN7UDq-i4MAjGF7O_g*AiS82NS`8 zb7Aem+&X;L462c28B?Qh0aVF-Z`Gj8qw!GV$=Odf{G;*qM>fC#Je$=zZ~F7cCnxWy z_YZwlHj3E!?2Mcvp$ModUF^tatc!$7%o$bvpmq6tNWi)ErZ-K?Y&N6oBT^K&qQoR1 zvdOo-$N6;z*fce&iom+;YwOw>oAOc0O3q5o>kX<`OG#Zva3RN>Q%cD`={Si44ixU^0tRPhLIQzhxUo|F$(r1R0hC zDk*W|KG;T6LvtdfH8cjQO1)ZfK5tlck(`ybX_=odI6pt*$&<(2zk8qMaz*fg;b1`U z#ikA9$ryd#)8|Z7rS4khiBHl*)0p$z%;vxhm;(!-*|d7% zc1Rj7?#ju0-u$=!`9I#j`{?1Hsik+1PoCcXxi?;2j>aR$6}c8dQJAn9kH{$N`8YAb zFj8Iz8iGS}rcaqrmW&2ds;VHi9ZkC;$hx~B!INw)Q7KBKa74{GO;{4z)RWcd&1hn; z56@<4xGU}3Z@yLk_iz8-leh0ZnDsF>nsc|+yi1=Xwfvx;n^n{4VzKyN-}~Mj5vjeC zg)1J(^($8;QyLC(s2v7+rdyekO4z|=^-AUMZhR8kZL-V5c> zug9x8VS43|x@%Yl2q94j4BfiM>AgqIh&j{cYIX*p`U+??)T8#ZjMpaNT%!4^lGELvp z_AO?Rat1s_QL?)~z~d<-pg9rM07r5TR}~bcqZ$-sl)mer@C0Xg2Ly*JJZ72svP%z7 zXZ2tG@SU@F?maq>IoE2o0+w5AwK>w=1@ISUS=*C$X|r1m;LXgfn&#o7XUFfZnpeNx zcKxN8H6&XP*Q{s1*0FSo2@Je|pdjmdHA#tm2U!_-M_Cn^^VI#i6FD9Zs73=;eM8@M zWUnL7q}mHmEm{%Z>g%U)$j6r&dn3;GctcKQVBT2ale< zHD5OGrffH3wm~1WcR_JM2tH7j1>QMUvlVUA(k>ffA3+@xS2D0b;T^-l02c(ynJ#s- zu|tBaPmOnsrz70BfU;O8F9>ZP?dkcvd;8vl)v9eFU|pd820SMv{vS^yvoteDn2kvnl<{bo!@F3~tX}nt)zEIv7?(IGBz{mx`*Ii1$In zN!NC?O^2D`Hyx4SJi}_Z?sut?%|HrzurtP0p6u4Y+w_T5 zO8E!(9n^qOgBGln~t^zPG>`1ZXA%X?3rEmO)3KhfvK2LAb4UI5N7gZ{)*zy{P^9~X6Z z-gMnrQTlON6o)D0iDh+8+Qyx_=AD`P=j~5#$pKPRjx^=9ZpQg*7W!_sv zgvF}SY#M{3EQ)Y>JQ^MrK9s5|n%C8pRlUM_sD=Z|s#?#07X{>5`C0#+x9-ip`@^?q%er~)d!PH}i$3{dqp;6%TjxW; zOVjnu{iml7G5gC9+>bqv}=;0#@3L5nciX~2ARF(`wpm&f9k7nh3zNC#k z=gV`B&yIQc_z{bGNhrKtxpJkydpuiy|J^(D)7fIRxwp}5B)zS}+tB%w&U}9wXxWa~ zX3Kg}7UAyb@w5M>aOvn$GwShI+P*bsnok#L^=Q7D9iPpYTP|w3WxN(IFkI=APWXSCds*8Z!5C9&o}JB3 z1%80YXtAiP82jHyIq!FM=gt;2)6s-NJc9tkfu~N&?xF=8XNv_7A3bETTrpqGS*#Xh zQ;V_diXzS)%@(s&(=}Vi`nf*OKE@yOc|(6FaEU3`$Fs%pXf%8ilf%AgUPlzs#(KI)z32FR#*@=C=5@oeX<5`Y ztG=UYYD+oCm~63ZVPvn^d-U5L6q)oq>6 za@TVEmcY{Uzu;KsPkZOmea5Sn+mrK2vv!5|OD}SgRhNC&XzaT6H3TzKP8dQqQ0LZ# zMN?AFRAot7R#}k7aI-GuWy<-v#oqSG%NO|N&ve)FXSr4TK|)fNMRGoz7a_c}oX_u| zc12Woa_l7|Sd0)ezRZN8#GG3X#CdO{@i5PtRnw<@7M1h1>+7t#ZLt?GaZ#Vjc>PRw zEnoC#x=tqJk?o9z7W;nE$9OH~I8`-YlwRDr>4=%4rotbA*+4K1NbZgCC5R80k;Li(sJ+EuVcrYQ~Uqlp+AuJe6=#?LpvA_7S2i2 z$6m~IplU%3vRao?T&dZa2xp3%rmSam*DYgAtCu7crx${e__Ij)^Mn>aVoFlCo%LB8 z=fk;k?!4>!UYv_&){2v3UxdfmcoI`SZTqyLr z=d7z`-JAsP#W~lA@GNKDQPq)}Rhv_08<=*>QlD?F*$V;@<7a&Li_cTivK6qzjdWbf z*|DD6>^4y2%{=yV=y<^=&tKw~^UtcwUzDVuhp6$w6mH%?*PE*b)g~}{o~k~tdp$1_ z)LT0IxgF~-5<0)^$ZtTZt-BT5KYL!!Znt3L=PBVY0{TVZ+tANjMa9+tx@{#c&sYC~ zamUXM_+zJVepVN@HE_OtpTb|bJ!2P!SYPxWCiZ#1IKE(T*@E;JzHfZ=4IPxv;jMc9 zrl2pvU)%_}0CutcVqfG7`v3KipYlJyaM10?{{x+WPcn9^D-gf>y-xrD03CEi zSad^gZEa<4bO1wgWnpw>WFU8GbZ8({Xk{QrNlj4iWF>9@03RGlL_t(|+RdD4tYuer z*MECD;~n06HMOhkw%c~xLwZQ7o3uIufe3{pN`w$dL?BHLelAO_hh?0m&cRJ&q_;Bv4+`4{cm)&;YNn7W= zQ}@>0|MOpa?X~`E?JIcae#F-GZhqp{^&OkkI|Wj%f8V?>wgASh-@`izUc8O}kNAa8 z{mjQ7f8xn|qj#T>f`9z-%P*%wD5ld9LP)05i4a1DG|&ErGTE=c@WQn}{;l8sz1bR+ z-@1k^@bUi#zyc8e>?eQhC$C()_R*$lzx&l!Z#;1G=1uCRCi;j_LI@%uKw=aCqsf#@ zmo7Qy+#kN@!H19UyL9O{KlStf;r9Wz27Ge$Z#VF_3RwKRpZk~7C!cuY<376o{)I1o zrQE-HXlw}h08vOm3=kqpDV%c%ArMkPh#&=8DV+BdS;2cBxxf41`#M;NKMJw*pxF=#Tu+juQOmXD?s=tIs_1+{8LBdKVDNAf>=shfoS} z%Cw>%K2=B%V)%G1B0Hm;M;>`N+;{JNpZ|^D`GcQ0K3>d$ZawUJ_zjbPOTga@VDWE% z_NR6aW=H?@tB-#5$6k2pg-geWOBk#a>mx!bVuauWLP!MSjx!Q+_-G*nc#o1G1?)`5 zeE7rP`uQ(^?dgC0%Bwf70?m4KK)+$`Z;5Snw_tzfpa1yxzHsHGfAi%pfAt?d@zk@E zw(Eh2P?{J)YlGGa@?-{qfyP^oc^E>v#U(*55z#(?6jfxbMtg`TApz|F_4U_{O)t`syJO ziO~sZmXRg}0vHt|iabLgkwM@?04avGd)tsG1aUoI5g>*L2!bC_c^{b_A6+a`^RZ8U z@?+_9&%b!tIUm=cw^@Bt!1ZfwT*$S_0Eqn?*M8uom#+QF)6YCVZF)~R+Fi2;MUjzc zL)Ru0Wr0$Pm0D2|@xcZ{CSg(( zl&N7_WN198f>9#Ll^|7;A~lT4f-FgpL_~Ci;1D8!2sm#E!6Weq5fLIHiNo}jq>IBs zt)1hKzw{N^^{apIqd)RPe_IG~4%h`IKnWxp4?*0GPrA*dKlZ`*iEsPJhsP1oKX>^B z@uBxU{JB5*{1@+=ttzst6h%J5NCClPw8BV`L=r7X69Wnot<1SXr;H_veN4rPoH zQt(@@mAhkprh0y|I z6ecwoqme=lG(?F~5-l`F3Q_|?L=qz?vV_d64J||#%N19yT)z0pZ~wNxuavp~oCS7( z5s+<}y0~kGUp+YD`@Z)(FJ8KECVcL*pZzD#J^S28wU9!fM5;AS-4LxKGlIR{DU-5f zR2CFjMhK3+Z;?`wWeHkHyz2=ekY*{y7>rgZr65ESB^ebXQk~$vMX5k$BxR8^%5t*Q zpp>GoTk6rZ*y87|Iov#X*=tKeZSK3dnS{S zkU~?}J>9B8d5;zmqf-(k*qxMUqp^JhF+&Rw+Mtt+UUkIKqa>g;A%e4(L_yGoL>Y># z!1b1QDN{q5 zBqT~BiNxs1(t**`NVE_{Z_xEbx0YxXKx2@dnAL2p5GZ$ z8i|yCa7bcsT-F78?@)b2WGT{ny3Qj-Kxjc?Qi?Rk_7>k;#%0N9lu~41L%>=KE<%J{ z3#LVe>w8)kiNSGjaL7X+zvmNKn*34Q^&QZzBe2czGprwi*am$Y;K?YLUEh!1b^f03 zIlOU0W@%25BotCGosJl#IRZzSmj^2GVoBg%moy_utGL@X0OgKB8P!<`P5@g0OE;ACN z!Gk}uiw}ViCCVhM>X!YR2OOV~ZD2teC5G~N+B9M6u$IaBND)x`@u1JN9RV2$0d7x&;D$Qn$77$U{=+1RfY4GYE|?8N5+>PdGP)R9)Ifc zVjYOA)}Y&sB;)l>8W6AUzk0E4`kiTEWV5W0MS@8bnU>K@DN<>)lqh3J%>dqL0|IQ{;QJo@kjn=m0fBcG9Rh6#BnX@U zEg&(HR7RrfAqGZ8$~aAETMyRJH7h>+-upiAyMLH`q3!y`8gRL0y50yx!t0r|aM5Sh zIqBMp*!99Whl(JDBvBD9hjdP<1f>&<)+m#Z7=unzv`NvaMkhJSq(DFr$&JJ%hPJ8* zwns`yK!AWC6)Fa#R44>esUc)i0^j%8rp5?KS>^~LsWKP=MugXAa>BLwe3D})e8sW8TnB$_OdC}ogR4++CYGJh-K zm&5yf^aupjf$JNr?f*>PQ3~kCY)^mPS*_Uwez~ONsr1AN+{ud#C47sBLaa`kY@%dQ}p^lAmk9>J5SfN^wweR zkn6^c&A|07wzum?{AbZ@IMKD%vX4*#sRUXJlu#%!-0!QJrml!Yw1N-=);p}XLK5|w z(G#GXVC8l(;5C3Bc;GzKvC^6{RS_ndj*xnMXCHUc?TI=ZQmOM+cH8{Nn zdIDCRQu%mo;BjVmPn2oF%FR%TLCdvMS;xyt4r@>`n4gGpBcF~q8Ij)MgGSkP4j1g; zZJkBLi1z{SJkk0=;gk}k{NN9exDX%)ob@C|lNrT9)#Ak*7YB7DM2`?M_SX3|IK4Ga z1^gO@_jb=R8jT=EjMhjgA^Jgr!J_~rhIJ?qh`9bc3J4%W9I_niaD9*MI&9O?_dVWP zoOOe|BS0!Sgr`#C8exASls56 zx4raqI%PWDMGA?M1|{XdNbq=fOL;>h5NNcJNF*|X+{i?OA51n{M+^}eKn+L+Ws_n3 zOC^Xg67Yk+(8EJKQ8^Q37!@U1VsPFQtlikgM11ku&FYjw-W~O=*O>IU$k-W`7_HE1 zc#m^oNc;L8g20(b^q{rC8ABo!NHciaz}g}-N=Skh2yfS=2Ix9Rh<*sC`bghf+NPm* z7AYe#M6C7ru16CQN|2=~X__K>OCYTGXpIs&-ne<(-J$Fn-w^PH$w;cjq1w@olnzL6 zBGURm+dEdG!TN@xC{fy=wWV~Cauk`A216ja4xJW=7!X3C@0#o#}*lbimo&9d;*U5+#Wu;*>{c z0Vy@kHbW*e1{(rx z=P*hQIyIhDg9siQBc>=Q%L!%H4VhGy@!);$;(ZUkhecJ32hZ>AJ^J+XSKff-(*=M@ znLJpgDQahjz3C3~wns>T?LEPHl$LmF5n9nT9o1q%-+L0HI6RIh0ry|L2M3(7yG)$J zC`r>>mdiPZhX-8W-{-lPUnVU^w9X=RMmZ`;(i9^igdV&l`WA^onFI$IDVdaG&P*~M zxaS@wslnEQd-iscy~!v&TCDE0cH^BwOHmkuih(>$$&!@grUd~>V(5B>P?~dRb}=Tw zyFk@6xZWeAU{t2y0=2aq&FAEKPT}%(YS>dZHM6SXr5iU$ijvkj&YZi*U-;yAaQXRX znH}E5;c>RZ)fIJDF&RzCrC_;gzy)^3C1)lDxt4^!W|Su4zI)DPX=2PN9{SWCliL_h z5`)B(r8&FP5jPi0q?GJT#xO3JWEmGOoJE<0w(SW%PT^vxVe zU|N)viDGwBaPjPUW~)xv8^`^P!{d`W({`XCx3?_4`2=Q1hs}kD9w>^Uq(}|6t8s0~ z_}n>UFce9`?D&|Q`!_i}o?%Rib)MbbU5q}%(gjB4h?lRuOt)C^{&(NcxeMo+%@4Wq z@{4rNv3ubH%T-O&HXt=GJpByTHl!-BI~_9}m0Y-RhMm!vkQW>+R_yQJU_9Mpl&7Q` zin2tf38oDq48;lFAow_aTgpe{pBjzIUo47}N517@Y8%i+%HE{J))kqIG=0xBGd%c_ z4kwKqEegs! zAx~hjoZ-8cR7iAc=z9yU=i=TT7cO36wQAX&CXB~Bznkdt(Pjz zD2tNw=PvM``&%YEQk3n!GquOFpEV6DDJ;-38g*K_nhCE03Jc4Ydd-&7(e(R$|O|v;HA%B zxInqHLs3pxcFXv+=dP?yS-W?Pwr*qi#{Qvg+TP~p3sd$z+IzGZl!tL@$hBrVDKR=D zL@-H$$VSM-(04t(?MbBI?5M;wEy71KlhJk^QbL~ROvhuS4_v(GJh{nf>kh3Ux`=lm zV_Y}E^kh2|bdunFWVKj@l~8L8Hki6)6daZK2rObgDQJxihu!CU&aBif!kN!i<( zGARl&lc0S-hCpT%qtuXTLn7pm1BW;y7E+QLgLggF)+FmvZPWBDtBU=@Bb*Q0O)ma! z_hEkb>z7~s>p$4MlH5E%ct_h*RL7E1pJhDW!B!nc8i*R@LAoI`&a_4$u?SR*q*9|~ zK-fTNTYP89#85vLHj)TPktpxbQsTRY;4IQhLJ$}PB1uq%rfzE%^^9e;j7Au2yAn69 zJ&({6e&sWN@Zv^|c(b;2$EFv(z9DXH(uoOu^fb!_t+O)yzJA`Q^n%Bb!@S9Qr%-cD*K+jzE}9b~|m9OUGWHJ$IgNxuWYW zo$bid45JfrlMKm&k{GRt#Pwbvv9`zhq1va78e|(S5k?T5!z2Y-N)jnBN}{AhM}brY zii8jZ(BXQ=tzzDqj&eK_=kC29?*(6Y^h-yVZ`_=30X=DL+H7ySjb*tVd%k>d{ELgG z`SfJ>4CgOh!o@%k5Rrp6oh9fjCCd|%BpE`&HFzIAUE34A!x#fb;tfO{@dSF;Q?FJ; zXE9o%*Uc@3DacJmn&xC_PMReonZ^f4suk8+TI<7Tx=XoxmZz@mH~;l_KX=9Xa8fmF zH~P6YOD(VI-jmx5|MaJR@yTlk$G_(V7AdhYtaJW=kb)@U`dve=8bu()NQ@EZJRt-U zlQ5c2F{2!9G}4^p)&bYlERPRa&1YEGBcex%cuOjZF%o4&sX?AK#t>tSWmc$kG!pys zDt`J8zwq*+>Z&!PCt&NXg4!nNxLpw6+`QH2zxL!SA9?SCNs*=>JD$&EY6eX@OH+&z z7;T2?fDni%2*J^Hj@5F(Y%wFxGv0OaUF@9QrI?f`spxD^bVH)iTZ;&RA}`Qd5Tif} zf%Op|9er>_EKRdywOVp;yo%56FIKP4+v+#}=+SHc`%k}qZ4Igh7QhTR1df2?b&aWB zzs8@I9&R>$g;mvbpZ?7M`PIMk1K<4#XWb`y*W-PP^F7W9tR18pX*AA*mWsHRXtdPB zI?r>`ET>2_aDz704B8Bt7AT>Ky~RmMkb#&g9AT()3VTb#?purXA$<1hFTDEHD~}#+ ztkHJO=n|N(#|hAOt7LjBYf{_Av=f$JdgX>cvol_t+Z+FIB8C^{X@ZhNKUD~W;^>{H zZ+lkD14xm#4$wg{So$-gPuh zMQ1HHj+_2B9)0?%^YH|1y)K%~*Q_3_89rV!zFM>EUay$8*_7>o?#A)rxd+Zo9-EZe zhphF3nCFLjkFx=xBLrxwnyT)Gwg;0^H7$qxhtyri(wL#i)CP*IL=e%^5F=RU2ytjJ z4ldv#cqIwJ;cx^INRu34lGwZ39Mp*^A8!DiZ7|%Q#_nl=#RlO1_y73IFMjadXCKqM z#fOHFuP0^-@Pr6m?{J-^sXMy510=>6cG8rz$k2H*^nRg8vI5qfv(`GA&JD#gY4P4+ z6xdYbguq6Nwat2l5+6nMA-WAy-emV=%-8p~&G~f;;+s)R?|f*|EbSu#V>F%Za6ZAy zp-tFzj&`x4?JV9wY7$Ih(8f@dV@#0~Y>!@7A6?VqWH$hJ(AgF%A;<_q;vxiw?Jb5d z2oJ8OcOhpl<6S zFd3zU-c!$Jhz{I^3VRm8(rJ&$cSjW2ImU$QGr3@`w8v5 z;&^#Lv#6+#Rv2keDkaSd5|bdJqq7}dQ{in-R1q&dI?+rfd+bi82&2(j(g#n|bi^p= z9aNPISN3P~4Z!^=kyW?Vpce0z;Zr^K)$7Nc9_4OKnEl$z8Sib>91vjZ+r zEgCv!N%EY%-Cgpm!1X=GWJoo}wj-*p!uxLMyv2yM2 za-5Cirew4`Wm1gDikwU*H0_FmgBw^Zs03vcA`xKJ5WYt6ZAWc8l$5kSaJ+2&6IWiD zb-iylGN67dQLv|&@>@Fda4Qh`;^WV*-us?Qw#bt2P%;<+IM)dm0=BbAsURxSB&W#B zVJ!wv-L6=ymK@CvST#$8k)%aNHZGBw!HY-~5RJq}N7K~wwnYF<=i*Z@-K_rS7oWab zb++0HBaiP8LWVcp5q}4>_MiL8bH81l*?n#}K(f)E0|3-q?9^FzgdK3l|V*RS_it{*SkA%i$^R3|B5eTM|$u1>e;yExu@VlMsR zd|6#TYQH$r_PdO;9~kFJK2D4j&JFGSIzj0a0VJs=7YRlxq>#7NwZ>KSKGM6M*7h`g zOWk!?XQ5xlX{qW@i(p>A08~)Wr*=4 zggnWL4%WaIYo<3-z_;xv-nOtUd*{0d3+w$7LTuVPLsI5tsfuze1PY~w#ht)=Mf4HS+oW}0k&hRbM zu9_~)mQ6FS?7|VN7$Zu?oit6;JWZ9i0j(9mJ5e_cP1g?*T2;}yj=HX5-&v053%7qb zZ(o^p^UF7vhtFI)I^LgG%if05O!#rXz>MJ+r^JlNkj&Clj zYE^f2h_|U3#~ZB9H(G=3mMOpOfH$)!w_ZCkMD((1)XUC;P@-<*@zJb*IMwRRl~-?0 zj8VB#7$1?rdwdMhIUAjeq3(QtV_q$<9xfNJ94}VA^<9j&yz!=*u_@hbH-87-9jB)9b?3GWDCu~COTY3e-bRh|eTc7Pov#jX@$S1C1>f)SA% zLE=Nu0VF=+V~8O{A8!vEPuSg7GZq`>+}}+a_;#$}Qw4&}96H89cXB=slXw24H9z0z za#fp>@J5{6Y{;%Bpch-`80b-L93DT#e^N}cF!0sGB-t;MP0{YL9VZGyaC^-XIZ{MA9LIq;gp`qw|#=VgTPPx#AY({UO#lFTCIA3{ga82g0001h=l}q9FaQARU;qF* zm;eA5aGbhPJOBUy24YJ`L;wH)0002_L%V+f000SaNLh0L01FcU01FcV0GgZ_001Ia zNkle2AM41>=Bwk43 z6=*PGh%ttUL8BLPVB9_#T_KmI9L=k&IyWN$K=h_LTm!4=YM^(EjH_IQE082 z^`@u;NF1(z=xUD*B=fj{dHJOm@yg3DrFG*zv0fEFx!!C)y4tQ$RTYfUP^?iiqpoYT zZ36;9kpeTrS_=r^j0Q17nkG3+(+})TCfO%H{;_8SvJk@86Rp;8?SkuiRc(ut-}s&X zduzEVq7?}qqq{v8V7~3W&*JFbQ9c@vK2}xj&uq);BX!$?h>#c!TNkLx0(D)&IST?o zYYnY6L;xZJ3xh$h%wTI#TL)6+S!I%E9b3t>WS%B!ok*fomcZrdSAOJsKKe_){yV?- zyR+3cT2XX27cT7`gQMT+8;8eF{EZ(?4-XHnYmM&(__@)9jhi zX!O;WU%#^si>w~U{Q!Rqi}}Gn_r17!?FqBHzmx4<*nip)ecW32q1L&qEDEfaOO$1W zsw`pa2I3gjGODUVRaLO91r(5E2|$F_G6(|44q!sDtx%Q)nx=tu77C1}%u!`2a$`U& zG|sc{csM7(fxM6F?M%fGo|B z7=xy*VOFpcqa{Je-rv6(+SzK$YIvJ10DlrD9Co`O$%&=K+P!XU6dnfy!agR2*DI|+;(aDh4R&@W*xQ}T&NN@Y^y=+@_36)i z{?jaS3Sa?X`%b}m(-`x@fBF^thyVOv@ZW#)zdm{M`0ig_ZPx!_zFhtI>1=j!z1|o@ zL}`*>b~3|aHp6PMM7b^DoCA@9QVIkD0U%NypmWO+Q?`izJ6e^914N(zC;=REcuv5M z(b^Vu+hSW5u=5C~WV68$S2EC7qIYrx?? z#G9M9umB#!f0nQh+RUh%8f{(DIM4SkAMPhrT`w1#?KXfiED9eFFsHLQs>R(bpNxJ? zl=_FG@%Zv&Iz?HOn9pWt>IQY)V6j-CDl0h09uRGyv<8SE%y8C%or7~ewlLV=JESi< z!cBV<@<1wz?$?_bfx6Tq;VA_`oJCvL=3r-f{cvxGZXKQ8Zmn(5r|-9AJrB)F|MB1b z5{%aR_PzU~x~YCtr{?F!lj+r_X>t3`9lZYfP0VI9D5YSufj9<{0x1H7!0gaAEn3?` z9D@TOB=O25SV<^c#oszb7($HE6dwr@iU=g(u?{qERStsHW=o1_a(LmwN5A#@lP`ba zE3XtdTiZCi#RBjFixCm*?-Fj^zJFz1Y<{e2>VKrPzFyZA?%ltSSHJ#s93LN}C<-)n z17|I)bKVskqiq^gRfV=`;948pM!MCFMZAwW{rAQ=q==vtK@p%KP@T>AN?Cb)!Wp7^ za5IRYts8)4=Wus7n{SHOi>fXIIPE!b-k!zG%h&M2=f1GJT+M&@bhZ4uwyB?PU5lb9 zaR1&t93LN}EJ`@`t%|U~7y}`Juz0r#Jy2NW4h;e!l)4Y3LyDH7sDEJiyZ|H&5J3eH zeYT@6>j4TZzWPcTm*r-NmL@!xwxJ7>hS)Iv=o@a#LNe>*}XY?w?$5 ziVDOIjV2VEEjH^7oMULEyPH?RY9Ow=Kt|Iyw~uFcTIaU#6>+qj7>I`*dUu@ZE&jp}e7`Q2 z#dpo_9zVaCEwNp0U|WmSq_C|+Q(Gv~AP|fYi~vd)#14u9aKDB`F=_;0sC&k*IC-EH z`p^@Nd+;f}Px;gZLIfrH7k6&jhiU?Yu-cSnV$28Md;Q7x12_b*4`2!)4@NQgf;X_3 z%ov)Vo<2L9o#Ei@{f){lvbKjkXbQSfG@Gpf`OC-a~Zms;K{j2x^zY zNuWVp&?WNENvMpwTABe7f+Jt+Y>R5|iT&LVyr|SyLoXFAXV^P>!nsOhhrG_)MY!X!58VQb?4Bj#ff_>>*O&?4R=|pecM# z{9Hv)nxHj7ktepi1qDQfAWUE(2z>f(Sx_`qCB{7S)a47`0^s1B)g%L>eWWYV!S3#X zCVD8UzD^A%aGDj1&w}IDKv6fusKK^QQ^{ zIRs^;07cTZR58zs5JWr}%mfw%7J`L>BZ4JDkKJh25uF*1p$}=Cm~&TA4h{q8ekDrO`D{~T*RSCv^(Q{? z5%c7Q3qLVm%)W2E*(7yc2S94yi`WJX_61hgEqg?S&X(_8&^;IHNuO+t$b*2!hlK?@(~*Xv`RQUc4>2av5)qg)y;SE)AN|1l56boWd&=s6O8u!n^Mu-fitNkET=>k!JEV24k@fY`Gf-L0%@PM1_?)e8v*Ix z#|W+i>UvECdkQZOLAgI0+agiw@XEpdQ;9Kq!IdWG;>?*?)49@Ov#z;q?(OdFh_NX_ zDKt$J%5Dt-qj9ePLLyHQkYMOB!}u=4lK%ng8T=h{ba-p`oWy6POTio)&!P48J_#Z2 z7bHHdqa!gMkG*5 z!&ygFRcioQu#`Of9WCZet$C)7IoKPIl;T(0rgYi>#wcj5K?K;gg<=7*UkOcwM5WMV zpgV&W$eDOE3>ZDL*o7VG{}!RZOL^<$Sd9ciN|?L$!pD%{suKR60$A{cU37U4*T5`# zZ#2G?7(EJrWB^k1(}gota0iT13ipm@C!@*a|BXhOBLTElzVA_hV+SPy#SA43MT9I# zkm&?kg`f<93T1mdhpX7Jjh=!7cQmGeT_EftM;xCQ_Mn7mC0Ii0m(WA`yygHn>MaPN zyZ0#@a3a_lWfwDJ#=%M=C_`ZI05Hsqm+u^{zwPV8sp`2w8k^ zYch;UF&6qRemogv7XmQxH0N9iz_|j?Imgzz`pVU-0-fOY-TNr(7HOh^#-V68{vw1S z;>l`b3@Fh^h#=0QaTaYf;gE6%4lwZl-rFQ(9t~Ee29X8N+?lHPc?7HK> zgVom{2$4$DWRD1`$OBgM=*m}|qg!{5)TJv=(cy(lc;=aR`C6u_F->z6qY>)L57Fwf zf@X(Q8Bl5<F})BLL``Ygf|cdi%kbU%jcP(-Dj!9PaL7yIz5H zf}MN>XIs?UEmn&K+NOmOL6#V#Sqeo2lO(aLMOoJ<+7`<)aK51)>C?8qK}O6-Lmv+e z4#|L*k&YScZk&8ua^~G3_E4y*1qvL>$2?2ML`Xy)8Gr$tWAN@Aonks2$$T;YY3h13$8K@DT;CPJ8opmz!cQ(M3<#{w zmA>;k-=BZ@gCF?IPhGqA{inyr$*otvhV|(wu3o&1X`Vwv`QnZgG#QxD7^5Tsw+)PQ zNR5F>5-9R6lI04yCXCYrsUj@O6054kwz058u)=WS2XL%yt%*gowJh+HpF~9Khe;;|4|M+w|{>6j+y+7kD=XK?W@!U8l zA~@$zl?9r*hB$}TTC}b6KCLvAHZUdwk%lIPL@T7)AWt$(Mq}hj24aQ+kQw7|EHpd5 z)=+)i=z{fGdec|S$}f)6FbXi|_+LfQS^~|9J}W8!b<>-_q z&r_sX2J0-^)}ksZly!y1wXn{@TI**_&OwJ+b*wn!_bR23rhRC}v;;eRSfF^@PD`>4?!u*Or zL2DCQ1KWaJf+R_h2SL#pwQ#&S3ABY!B=#I09NnIoYY+KOs+(5-(bsPsk??(^)qAc! z{mhjs*Pfz_hX-hiEw-yQ>av7p&*|E>^)j-6t+PJvG_FBeZLuv&)Kv)|x2E#ACGV~o=bqb$W_Ji;W;k&&;cG)qYT zzSg-ds|$c^>s3?n97n(V;TEu1ivGGH)@rhyd)5THpR zH3o?xq)H*x2{L0aN)rD##1HAhN(MOl&78 zC^FCrn2b_fIXuA5c#8RE1KTuE=w%`dfVFI!Ki8U$Mi?aqN)uLV3tKZ%C75I*989OUw6_Ze;byT$&1F|_;gAkMkwVw?_eoOVEtlXb3P}-XoXRdB2QX~1FUl}B-j~em?kL* z0#_)E_YZM#{{Z7OL8cTmY205fakMx^1q%xu*ucK^Ap(lJUT(^2H2@?I`OoWS9_mUF z9Jz7*smXG7y0cl%0B0f2!7)4!BZ4&46haCj0wwzhVu^+18d!u>)4nGQ*2#)*7zxk<)moFatV6$0WZ8n83-CbnboL_PFwM3q! zUVumh9ohj6>c+HjoEw|EE)as?KyWOmt%HMx(kT+%de;+!lz?0ja;*W%Fy22zrVJ9t zAQG@nak^dN{&J2Agh;DI>OlhGUN!Azxh>}dP>OIy^~0m*N*yvHc=lb_pIk2HAD^8Z z!8LV1ZdDpdk|NJ1Fgig~w1Dm7iXk0>9}Q;P)JLGu;DJ;(7qU*!Ha5@_)NQuNlLQck zZ5w~fq><^=yRBt72W(o4TPLSjR9lGlpG(qTfhGb8yRxoU*10&yFW`&0I3YOGRX-}m z008dZJDL@n3ILW{;u2C*K*@0#r_rRt|~rsWqyhL_8QIzOPlGxuZyVbc~gs zvwG<&dm#WR-_h&!$k$<{B$-gj3lD~E^p1iMVSa0VGDB(_TtCAFr z0Nc8SfRH5q#??R^6jf0oJz0bLJBb`pB=z*#3~nigysj>YrE?7)i9I19rT3gVktrNY3{yGo)3lRU%0WP&71P;d(; z0@Awu((&ot#im#VYuVx~V|QLof9819?vq&X*_(Iozs63MhSY_fQ4T3;FDn!03n=zC z3i2wZHV)T@qQqbsDu9A+V5Sg>ej$Q$fVBeaysJV9in4$<8sjwgt$~USxF3lmi9%|C z-BE%Z3Kg4ZQ7SW9Qe(KWwhBO;ccY=Dys0bo_714Ycx0Y^=K6Q67V~$P>otjWfqWkF zsRW4@0t7L%>gGT3HN#n0*U}1L*`aD{lue7qIXGrG$8f^1&OwpJIG-Rjx>H#7A|gQ8 zLfFA1z$i<6Q<)h`6rr}fT5QXcfg2seH;$_}vY0pBWFf-z{CmIk$%Fm9@4kEIwpyMp z0Oz?G$374X0ZQwRX4i_KLt&?alx#Rh>bJ#Gm=Zcvu0`2el(t394lN5>=O9E#(+uN0 zN0ubess|<#S&9gbTWC$b8&3_g#L!q{L?V1=vAt;>pM!JjW%*I0J~am zi^H-FWL@O9$kfsTez^wVQpMx49 zOaeu9`rk8*KNt!GtrBlRp{~)2kmY0S?(SkV8X-xHw-AXnk%VmMTa$5;pmi#YVgt)K zo?@(Yer=LpeNj>3SmM+%4%h|`c@~^EvY5EQZnju#Z{NFrFLkoFGo8Y;jB>$9#3407 zA+Dm%e=t`LMHz#8jb2m}kq^lN0hER|DY7(2mNZCHU_44O$}^1e6sa~a+QboDKN+LJ zXX#Ms##1RMGMJ7hYFgXF3)9KL(P}dWFveNIkitWP@0;z36aajcY47BiQca$9*tu|A5HC2>?82AG3ZN-=YI<6T{vsFR| z*vyY%Tfl(2AgHzWn=A$eUJSai)s-F|kPw^z4nBBW_FIe7#K7pd>H@71CIi|Fk|egx z6eE@Y4y_OdHc;Fzj0i))L6Mk5s|mdJF3QXzFd9BVo^hwQ0*n+@;nGP~Ub%7s(pETr z<#o7X8`M+1PwP(4tGm*l(W^2Yhhk6=lu-!6AO;5)Fh+N31qznp-PAXj(HK>SxzBtE z9kmL2T2TZAhO-Tsl7fEi;VK$g>oUZDE-G%tz@k zx&^fOx`kz+aDvyrSm&Ec5ef63_@7rlL^UYH7lVr8pv}9HCO~QLIx4sm#ZErT-Y9G> zA%X>?t}C=6ErF6rnv5Ik;xIpsX6c;(0|2rut7f@g9lN^3cDsczd-(@^N30P#Y8EuY zVY(r(=$kzWU2z;T#@)4~JZU3f_}lHJ^S)*YHBq=}QeII$WC4}LScYCB1E8*I6lKAz zjIC{fX_k&Rb(6M^W6(V_uYTJxMkk50BHQI=%j->{RLe+$EX<0am7sbV=;s)I^QV(I zJq~g)1c8tEwN}!vG=h+^lhc!*X_+9&?{}>D_!jpPboo|-;3&*Yw%ZNr*11KiHnUAx zCz_bf0`kZa?OOuow|?t|;_9_0e>GF|ELZIhq%9lAUV0|%{EoKZE;0KEA!zKPvFTM>XwDK zEDuZtVyZi93~vD!YU+l5_cNbeUc7MewS&EbCySyqW! zZ@wl=ht-S6>$^qMuElrOr{SE#Hg`!fIQW15_WybL)n~5%^HG|~J9+w? zCb_iQZh5xaG<%cLWR#jwYD~H}9ZmPglGU7cwuQ(wlq!*Ok?2~9pIc`(GgJF7N@hBw4~}g>&=q=kgbNN8shm-O7rak6UVnT zfbDv zwJy1Jbn?QL!^3y&jYijvQi_7QyW21d2}=5)_NMr|4e%^_*8-ehsfWp5Jwnbh%Bsf7 z%J#Hu3dhoh>)Z~`AqoCaS9-g@IMk^koZ~p^jO=^d%@Icv>)C2`R}tMk*qL4*CCMeA zFWY_dN6=9y1av7k9#>3g*~Zr~T{qrI>e0DO zY!V|76be5IAgCy#?%a%UI-lXyd-tmQl{;xzigj7f8|NY@M>tDs#?17<@lJoEYN(Eg zl8WJ=JpS74@${u!ugm-?>Lq22pn1YWv zV*qTmznuMM5aNZ9ebCvUqJns#DC~nqK(e|!7QljT59LohGpAW zw+dj~0dNz*>+mzBI8Pe>&cm7GkMnbHa_-;rAVm|c0GPX{^Vh>FMVZ${_%t8cv`6+W z@8G&(X|aKiDYF3>F&jPX`X380Zv<969Qr}JM$doP0N4_5vN8M}UPE;4ExhZ*spBJO z)!%4f&R<}RK~1ZvX%Q literal 0 HcmV?d00001 -- 2.1.4