zsh-lovers-0.8.3/0000755000175000017500000000000011156270257013524 5ustar alessioalessiozsh-lovers-0.8.3/README0000644000175000017500000000470111103635725014403 0ustar alessioalessio################################################################################ +---------------------+ |README of zsh-lovers | +---------------------+ Please report feedback, additional information and bugs you notice in 'man zsh-lovers' to zsh-lover (at) michael-prokop.at zsh-lovers.*: zsh-lovers project -> man zsh-lovers refcard.*: reference card for the Z shell by Peter Stephenson, taken from http://www.bash2zsh.com/ zsh.vim: syntax file for zsh for editor Vim by Nikolai Weibull directory zsh_people ==================== adam_spiers ----------- Description: zshrc Author: Adam Spiers Web: http://www.adamspiers.org/computing/zsh/ arne_schwabes ------------- Description: zshrc Author: Arne Schwabes Web: http://plai.de/misc/zshrc bruno_bonfils ------------- Description: Zsh resources files. (per Host/OS resource file) Author: Bruno Bonfils Web: http://www.asyd.net/arch/zsh/zsh-latest.tar.gz caphuso ------- Description: zshrc Author: Stephen 'caphuso' Rger Web: http://caphuso.dyndns.org/~caphuso/ damien_elmes ------------ Description: zshrc Author: Adam Spiers Web: http://www.adamspiers.org/computing/zsh/ grml ---- Description: zsh configuration provided by the grml distribution Author: Michael Prokop Web: http://www.grml.org/ marijan_peh ----------- Description: zshrc Author: Marijan Peh Web: http://free-po.htnet.hr/MarijanPeh/files/zshrc strcat ------ Description: zsh configuration files Author: Christian 'strcat' Schneider Web: http://www.strcat.de/dotfiles/#zsh stchaz ------ Description: mouse.zsh Author: Stephane Chazelas Web: http://stchaz.free.fr/mouse.zsh thomas_koehler -------------- Description: zshrc, klammer.zsh, uhr.zsh Author: Thomas Koehler Web: http://gott-gehabt.de/800_wer_wir_sind/thomas/Homepage/Computer/zsh/index.html zyrnix ------ Description: zshrc Author: zyrnix Web: http://zshwiki.org/ZyrnixZshrcConfig ZWS-1.0.tar.bz2 --------------- Description: ZWS is a simple web server written in ZSH. Author: Adam Chodorowski Web: http://www.chodorowski.com/software/zws/ ################################################################################ -- Michael 'mika' Prokop http://www.michael-prokop.at/ http://www.grml.org/ zsh-lovers-0.8.3/.hgtags0000644000175000017500000000057011103635725015001 0ustar alessioalessio343236d95e98e8d7e799adfad68285552e6fa21e 0.6-1 83947c5b4871fdcdb61c27984444754953a43bf7 0.6-2 58df95139fec9be91798bf18eae57fdb1988b06a 0.6-3 c65a4a53c3ab982ed7a0cb9bed229bec74dc2090 0.6-4 21b4f22a4c92dbe0536584a5f4593a844ca35c56 0.6-5 6c7063f150187d3ebcf32be931156d82fa2a104c 0.7.0 4cc07939fef17e8d318c1701c61626dbba795299 0.7.1 f13a3fb5da7c5c062e8153f125f3d0e3e48f5a41 0.8.0 zsh-lovers-0.8.3/zsh-lovers.1.txt0000644000175000017500000014561411156270243016546 0ustar alessioalessioZSH-LOVERS(1) ============= NAME ---- zsh-lovers - tips, tricks and examples for the Z shell SYNOPSIS -------- Just read it. ;-) OVERVIEW -------- Whenever we look at the zsh manual we wonder why there are no examples or those simply things in (shell) life. The zsh contains many features, but there was no manpage with some examples (like procmailex(5)). That's why we wrote this manpage. Most of the tricks and oneliner come from the mailinglists zsh-users, zsh-workers, google, newsgroups and from ourself. See section *LINKS* for details. Note: This manpage (zsh-lovers(1)) is *not* an offical part of the Z shell! It's just a just for fun - manpage ;) + For comments, bugreports and feedback take a quick look at the section *BUGS*. SHELL-SCRIPTING --------------- This section provides some examples for often needed shellscript-stuff. Notice that you should not use otherwise most examples won't work. + Parse options in shellscripts. Example taken from ZWS by Adam Chodorowski (http://www.chodorowski.com/projects/zws/[]): ---------------------------------------------- parse_options() { o_port=(-p 9999) o_root=(-r WWW) o_log=(-d ZWS.log) zparseopts -K -- p:=o_port r:=o_root l:=o_log h=o_help if [[ $? != 0 || "$o_help" != "" ]]; then echo Usage: $(basename "$0") "[-p PORT] [-r DIRECTORY]" exit 1 fi port=$o_port[2] root=$o_root[2] log=$o_log[2] if [[ $root[1] != '/' ]]; then root="$PWD/$root"; fi } # now use the function: parse_options $* ---------------------------------------------- EXAMPLES -------- Available subsections are *Aliases*, *Completion*, *Unsorted/Misc examples*, *(Recursive) Globbing - Examples*, *Modifiers usage*, *Redirection-Examples*, *ZMV-Examples* and *Module-Examples*. ALIASES ~~~~~~~ Suffix aliases are supported in zsh since version 4.2.0. Some examples: ----------------- alias -s tex=vim alias -s html=w3m alias -s org=w3m ----------------- Now pressing return-key after entering 'foobar.tex' starts vim with foobar.tex. Calling a html-file runs browser w3m. 'www.zsh.org' and pressing enter starts w3m with argument www.zsh.org. + Global aliases can be used anywhere in the command line. Example: ---------------------- $ alias -g C='| wc -l' $ grep alias ~/.zsh/* C 443 ---------------------- Some more or less useful global aliases (choose whether they are useful or not for you on your own): -------------------------------------------------------- alias -g ...='../..' alias -g ....='../../..' alias -g .....='../../../..' alias -g CA="2>&1 | cat -A" alias -g C='| wc -l' alias -g D="DISPLAY=:0.0" alias -g DN=/dev/null alias -g ED="export DISPLAY=:0.0" alias -g EG='|& egrep' alias -g EH='|& head' alias -g EL='|& less' alias -g ELS='|& less -S' alias -g ETL='|& tail -20' alias -g ET='|& tail' alias -g F=' | fmt -' alias -g G='| egrep' alias -g H='| head' alias -g HL='|& head -20' alias -g Sk="*~(*.bz2|*.gz|*.tgz|*.zip|*.z)" alias -g LL="2>&1 | less" alias -g L="| less" alias -g LS='| less -S' alias -g MM='| most' alias -g M='| more' alias -g NE="2> /dev/null" alias -g NS='| sort -n' alias -g NUL="> /dev/null 2>&1" alias -g PIPE='|' alias -g R=' > /c/aaa/tee.txt ' alias -g RNS='| sort -nr' alias -g S='| sort' alias -g TL='| tail -20' alias -g T='| tail' alias -g US='| sort -u' alias -g VM=/var/log/messages alias -g X0G='| xargs -0 egrep' alias -g X0='| xargs -0' alias -g XG='| xargs egrep' alias -g X='| xargs' -------------------------------------------------------- COMPLETION ~~~~~~~~~~ See also man 1 zshcompctl zshcompsys zshcompwid. zshcompctl is the old style of zsh programmable completion, zshcompsys is the new completion system, zshcompwid are the zsh completion widgets. Some functions, like _apt and _dpkg, are very slow. You can use a cache in order to proxy the list of results (like the list of available debian packages) Use a cache: --------------------------------------------------------------------------------------------------- zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zsh/cache --------------------------------------------------------------------------------------------------- Prevent CVS files/directories from being completed: --------------------------------------------------------------------------------------------------- zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' --------------------------------------------------------------------------------------------------- Fuzzy matching of completions for when you mistype them: --------------------------------------------------------------------------------------------------- zstyle ':completion:*' completer _complete _match _approximate zstyle ':completion:*:match:*' original only zstyle ':completion:*:approximate:*' max-errors 1 numeric --------------------------------------------------------------------------------------------------- And if you want the number of errors allowed by _approximate to increase with the length of what you have typed so far: --------------------------------------------------------------------------------------------------- zstyle -e ':completion:*:approximate:*' \ max-errors 'reply=($((($#PREFIX+$#SUFFIX)/3))numeric)' --------------------------------------------------------------------------------------------------- Ignore completion functions for commands you don't have: --------------------------------------------------------------------------------------------------- zstyle ':completion:*:functions' ignored-patterns '_*' --------------------------------------------------------------------------------------------------- With helper functions like: --------------------------------------------------------------------------------------------------- xdvi() { command xdvi ${*:-*.dvi(om[1])} } --------------------------------------------------------------------------------------------------- you can avoid having to complete at all in many cases, but if you do, you might want to fall into menu selection immediately and to have the words sorted by time: --------------------------------------------------------------------------------------------------- zstyle ':completion:*:*:xdvi:*' menu yes select zstyle ':completion:*:*:xdvi:*' file-sort time --------------------------------------------------------------------------------------------------- Completing process IDs with menu selection: --------------------------------------------------------------------------------------------------- zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always --------------------------------------------------------------------------------------------------- If you end up using a directory as argument, this will remove the trailing slash (usefull in ln) --------------------------------------------------------------------------------------------------- zstyle ':completion:*' squeeze-slashes true --------------------------------------------------------------------------------------------------- cd will never select the parent directory (e.g.: cd ../): --------------------------------------------------------------------------------------------------- zstyle ':completion:*:cd:*' ignore-parents parent pwd --------------------------------------------------------------------------------------------------- Another method for 'quick change directories'. Add this to your ~/.zshrc, then just enter ``cd ..../dir'' --------------------------------------------------------------------------------------------------- rationalise-dot() { if [[ $LBUFFER = *.. ]]; then LBUFFER+=/.. else LBUFFER+=. fi } zle -N rationalise-dot bindkey . rationalise-dot --------------------------------------------------------------------------------------------------- UNSORTED/MISC examples ~~~~~~~~~~~~~~~~~~~~~~ Hint: A list of valid glob Qualifiers can be found in zshexpn(1). See ``man 1 zshexpn | less -p'' Qualifiers for details. ------------------------------------------------------------------------------- # Get the names of all files that *don't* match a pattern *anywhere* on the # file (and without ``-L'' because its GNUish) $ print -rl -- *(.^e{'grep -q pattern $REPLY'}) # or $ : *(.e{'grep -q pattern $REPLY || print -r -- $REPLY'}) # random numbers $ echo $[${RANDOM}%1000] # random between 0-999 $ echo $[${RANDOM}%11+10] # random between 10-20 $ echo ${(l:3::0:)${RANDOM}} # N digits long (3 digits) # reverse a word $ echo "${(j::)${(@Oa)${(s::):-hello}}}" # Show newest directory $ ls -ld *(/om[1]) # random array element $ FILES=( .../files/* ) $ feh $FILES[$RANDOM%$#FILES+1] # cat first line in all files in this dir $ for file (*(ND-.)) IFS= read -re < $file # test if a parameter is numeric $ if [[ $1 == <-> ]] ; then echo numeric else echo non-numeric fi # Show me all the .c files for which there doesn't exist a .o file. $ print *.c(e_'[[ ! -e $REPLY:r.o ]]'_) # All files in /var/ that are not owned by root $ ls -ld /var/*(^u:root) # All files for which the owner hat read and execute permissions $ echo *(f:u+rx:) # The same, but also others dont have execute permissions $ echo *(f:u+rx,o-x:) # brace expansion - example $ X=(A B C) $ Y=(+ -) $ print -r -- $^X.$^Y A.+ A.- B.+ B.- C.+ C.- # Fetch the newest file containing the string 'fgractg*.log' in the # filename and contains the string 'ORA-' in it $ file=(fgractg*.log(Nm0om[1])) $ (($#file)) && grep -l ORA- $file # without Zsh $ files=$( find . -name . -o -prune -name 'fgractg*>log' -mtime 0 -print ) > if [ -n "$files" ]; then > IFS=' > ' > set -f > file=$(ls -td $files | head -1) > grep -l ORA- "$file" > fi # keep specified number of child processes running until entire task finished $ zsh -c 'sleep 1 & sleep 3 & sleep 2& print -rl -- $jobtexts' # Remove zero length and .bak files in a directory $ rm -i *(.L0) *.bak(.) # print out files that dont have extensions $ printf '%s\n' ^?*.* $ printf '%s\n' ^?*.[^.]*(D) $ ls -d -- ^?*.*(D) # Finding files which does not contain a specific string $ print -rl file* | comm -2 -3 - <(grep -l string file*)' $ for f (file*(N)) grep -q string $f || print -r $f' # Show/Check whether a option is set or not. It works both with $options as # with $builtins $ echo $options[correct] off $ $options[zle] on # Count the number of directories on the stack $ print $((${${(z)${(f)"$(dirs -v)"}[-1]}[1]} + 1)) # or $ dirs -v | awk '{n=$1}END{print n+1}' # Matching all files which do not have a dot in filename $ ls *~*.*(.) # Show only the ip-address from ``ifconfig device'' # ifconfig from net-tools (Linux) $ print ${${$(LC_ALL=C /sbin/ifconfig eth0)[7]}:gs/addr://} # ifconfig from 4.2BSD {Free,Net,Open}BSD $ print ${$(/sbin/ifconfig tun0)[6]} # Ping all the IP addresses in a couple of class C's or all hosts # into /etc/hosts $ for i in {1..254}; do ping -c 1 192.168.13.$i; done or $ I=1 $ while ( [[ $I -le 255 ]] ) ; do ping -1 2 150.150.150.$I; let I++; done or $ for i in $(sed 's/#.*//' > /etc/hosts | awk '{print $2}') : do : echo "Trying $i ... " : ping -c 1 $i ; : echo '=============================' : done # load all available modules at startup $ typeset -U m $ m=() $ for md ($module_path) m=($m $md/**/*(*e:'REPLY=${REPLY#$md/}'::r)) $ zmodload -i $m # Rename all files within a directory such that their names get a numeral # prefix in the default sort order. $ i=1; for j in *; do mv $j $i.$j; ((i++)); done $ i=1; for f in *; do mv $f $(echo $i | \ awk '{ printf("%03d", $0)}').$f; ((i++)); done $ integer i=0; for f in *; do mv $f $[i+=1].$f; done # Find (and print) all symbolic links without a target within the current # dirtree. $ $ file **/*(D@) | fgrep broken $ for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i $ echo **/*(@-^./=%p) $ print -l **/*(-@) # List all plain files that do not have extensions listed in `fignore' $ ls **/*~*(${~${(j/|/)fignore}})(.) # see above, but now omit executables $ ls **/*~*(${~${(j/|/)fignore}})(.^*) # Print out files that dont have extensions (require *setopt extendedglob* # and *setopt dotglob*) $ printf '%s\n' ^?*.* # List files in reverse order sorted by name $ print -rl -- *(On) or $ print -rl -- *(^on) # Synonymic to ``ps ax | awk '{print $1}''' $ print -l /proc/*/cwd(:h:t:s/self//) # Get the PID of a process (without ``ps'', ``sed'', ``pgrep'', .. # (under Linux) $ pid2 () { > local i > for i in /proc/<->/stat > do > [[ "$(< $i)" = *\((${(j:|:)~@})\)* ]] && echo $i:h:t > done > } # for X in 'n' 'o' 'p' 'q' 'r' 's' 't' 'u' 'v' 'w' 'x' 'y'; do ... $ for (( i = 36#n; i <= 36#y; i++ )); do > print ${$(([##36]i)):l} > done # or in combination with ``dc'' $ print {$((##n))..$((##y))}P\ 10P | dc # or with ``eval'' $ eval print '${$(([##36]'{$((36#n))..$((36#y))}')):l}' # foreach in one line of shell $ for f (*) print -r -- $f # copy a directory recursively without data/files $ dirs=(**/*(/)) $ cd -- $dest_root $ mkdir -p -- $dirs # or without zsh $ find . -type d -exec env d="$dest_root" \ sh -c ' exec mkdir -p -- "$d/$1"' '{}' '{}' \; # If `foo=23'', then print with 10 digit with leading '0'. $ foo=23 $ print ${(r:10::0:)foo} # find the name of all the files in their home directory that have # more than 20 characters in their file names print -rl $HOME/${(l:20::?:)~:-}* # Save arrays $ print -r -- ${(qq)m} > $nameoffile # save it $ eval "m=($(cat -- $nameoffile)" # or use $ m=("${(@Q)${(z)"$(cat -- $nameoffile)"}}") # to restore it # get a "ls -l" on all the files in the tree that are younger than a # specified age (e.g "ls -l" all the files in the tree that where # modified in the last 2 days) $ ls -tld **/*(m-2) # This will give you a listing 1 file perl line (not à la ls -R). # Think of an easy way to have a "ls -R" style output with # only files newer than 2 day old. $ for d (. ./**/*(/)) { > print -r -- $'\n'${d}: > cd $d && { > l=(*(Nm-2)) > (($#l)) && ls -ltd -- $l > cd ~- > } > } # If you also want directories to be included even if their mtime # is more than 2 days old: $ for d (. ./**/*(/)) { > print -r -- $'\n'${d}: > cd $d && { > l=(*(N/,m-2)) > (($#l)) && ls -ltd -- $l > cd ~- > } > } # And if you want only the directories with mtime < 2 days to be listed: $ for d (. ./**/*(N/m-2)) { > print -r -- $'\n'${d}: > cd $d && { > l=(*(Nm-2)) > (($#l)) && ls -ltd -- $l > cd ~- > } > } # print 42 ``-'' $ echo ${(l:42::-:)} # or use ``$COLUMS'' $ echo ${(l:$COLUMNS::-:)} # and now with colors (require autoload colors ;colors) $ echo "$bg[red]$fg[black]${(l:42::-:)}" # Redirect STDERR to a command like xless without redirecting STDOUT as well. $ foo 2>>(xless) # but this executes the command asynchronously. To do it synchronously: $ { { foo 1>&3 } 2>&1 | xless } 3>&1 # Rename all MP3-Files from name with spaces.mp3 to Name With Spaces.mp3 $ for i in *.mp3; do > mv $i ${${(C)i}:s/Mp3/mp3/} > done # Match file names containing only digits and ending with .xml (require # *setopt kshglob*) $ ls -l [0-9]##.xml $ ls -l <0->.xml # Remove all "non txt" files $ rm ./^*.txt # Move 200 files from a directory into another $ mv -- *([1,200]) /another/Dir # Convert images (foo.gif => foo.png): $ for i in **/*.gif; convert $i $i:r.png # convert a collection of mp3 files to wave or cdr, # e.g. file.wav -> file.mp3) $ for i (./*.mp3){mpg321 --w - $i > ${i:r}.wav} # Download with LaTeX2HTML created Files (for example the ZSH-Guide): $ for f in http://zsh.sunsite.dk/Guide/zshguide{,{01..08}}.html; do > lynx -source $f >${f:t} > done # Move all files in dir1 and dir2 that have line counts greater than 10 to # another directory say "/more10" $ mv dir[12]/**/*.cr(-.e{'((`wc -l < $REPLY` > 10))'}) /more10 # Make with dpkg a master-list of everyfile that it has installed $ diff <(find / | sort) <(cat /var/lib/dpkg/info/*.list | sort) # Replace this fucking Escape-Sequences: $ autoload colors ; colors $ print "$bg[cyan]$fg[blue]You are a idiot" >> /dev/pts/3 # Get ASCII value of a character $ char=N ; print $((#char)) # Filename "Erweiterung" # Note: The (N) says to use the nullglob option for this particular # glob pattern. $ for i in *.o(N); do > rm $i > done # Rename files; i. e. FOO to foo and bar to BAR $ for i in *(.); mv $i ${i:l} # `FOO' to `foo' $ for i in *(.); mv $i ${i:u} # `bar to `BAR' # Show all suid-files in $PATH $ ls -latg ${(s.:.)PATH} | grep '^...s' # or more complex ;) $ print -l ${^path}/*(Ns,S) # or show only executables with a user given pattern $ print -l ${^path}/*vim*(*N) # gzip files when containing a certain string $ gzip ${(ps:\0:)"$(grep -lZ foobar ./*.txt(.))"} # A small one-liner, that reads from stdin and prints to stdout the first # unique line i. e. does not print lines that have been printed before # (this is similar to the unique command, but unique can only handle # adjacent lines). $ IFS=$'\n\n'; print -rl -- ${(Oau)${(Oa)$(cat file;echo .)[1,-2]}} # Lists every executable in PATH $ print -l ${^path}/*(-*N) # Match all .c files in all subdirectories, _except_ any SCCS subdirectories? $ ls **/*.c~(*/)#SCCS/* # List all `README' - files case-insensitive with max. one typo $ ls **/*(#ia2)readme # case insensitive checking for variables $ if [[ $OSTYPE == (#i)LINUX*(#I) ]]; then > echo "Penguin on board." > else > echo "Not a Linux." > fi ------------------------------------------------------------------------------- (Recursive) Globbing - Examples ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ A list of valid glob Qualifiers can be found in zshexpn(1). *Note:* \*\*/ is equivalent to (*/)#! For example: ------------------------------------------------------------------------------- $ print (*/)#zsh_us.ps zsh-4.2.3/Doc/zsh_us.ps $ print **/zsh_us.ps zsh-4.2.3/Doc/zsh_us.ps ------------------------------------------------------------------------------- ------------------------------------------------------------------------------- # Search for `README' in all Subdirectories $ ls -l **/README # find directories that contain both "index.php" and "index.html", or in # general, directories that contain more than one file matching "index.*" $ ls **/*(D/e:'[[ -e $REPLY/index.php && -e $REPLY/index.html ]]':) # or $ ls **/*(D/e:'l=($REPLY/index.*(N)); (( $#l >= 2 ))':) # Find command to search for directory name instead of basename $ print -rl /**/*~^*/path(|/*) # or - without Zsh $ find / | grep -e /path/ -e '/path$' # Print he path of the directories holding the ten biggest C regular files # in the current directory and subdirectories. $ print -rl -- **/*.c(D.OL[1,10]:h) | sort -u # Find files with size == 0 and send a mail $ files=(**/*(ND.L0m+0m-2)) > (( $#files > 0 )) && print -rl -- $files | \ mailx -s "empty files" foo@bar.tdl # recursive chmod $ chmod 700 **/(.) # Only files $ chmod 700 **/(/) # Only directories # print out all of the files in that directory in 2 columns $ print -rC2 -- ${1:[...]}/*(D:t) # ^- number ob columns # or - if you feel concerned about special characters - use $ list=(${1:[...]}/*(ND:t)) $ (($#list)) && print -rC2 -- ${(V)list} # Search all files in /home/*/*-mail/ with a setting ``chmod -s'' flag # (recursive, include dotfiles) remove the setgid/setuid flag and print # a message $ chmod -s /home/*/*-mail(DNs,S) /home/*/*-mail/**/*(DNs,S)) # or with a small script $ for file (/home/*/*-mail(DNs,S) /home/*/*-mail/**/*(DNs,S)) { > print -r -- $file > chmod -s $file && print -r fixed $file > } # or use ``zargs'' (require autoload zargs) prevent the arg list too # long error $ zargs /home/*/*-mail(DNs,S) /home/*/*-mail/**/*(DNs,S)) -- chmod -s # List files beginning at `foo23' upwards (foo23, foo24, foo25, ..) $ ls -l foo<23-> # get all files that begin with the date strings from June 4 through # June 9 of 2004 $ ls -l 200406{04..10}*(N) # or if they are of the form 200406XX (require ``setopt extended_glob'' $ ls -l 200306<4-10>.* # remove spaces from filenames $ for a in ./**/*\ *(Dod); do mv $a ${a:h}/${a:t:gs/ /_}; done # Show only all *.c and *.h - Files $ ls -l *.(c|h) # Show only all *.c - files and ignore `foo.c' $ ls *.c~foo.c # show data to *really* binary format $ zsh -ec 'while {} {printf %.8x $n;repeat 8 \ > {read -ku0 a printf \ %.8d $(([##2]#a))};print;((n+=8))}' < binary # Show only world-readable files $ ls -l *(R) # List files in the current directory are not writable by the owner $ print -l ~/*(ND.^w) # find and delete the files which are older than a given parameter # (seconds/minutes/hours) # deletes all regular file in /Dir that are older than 3 hours $ rm -f /Dir/**/*(.mh+3) # deletes all symlinks in /Dir that are older than 3 minutes $ rm -f /Dir/**/*(@mm+3) # deletes all non dirs in /Dir that are older than 30 seconds $ rm -f /Dir/**/*(ms+30^/) # deletes all folders, sub-folders and files older than one hour $ rm ./**/*(.Dmh+1,.DL0) # deletes all files more than 6 hours old $ rm -f **/*(mh+6) # removes all files but the ten newer ones (delete all but last 10 # files in a directory) $ rm ./*(Om[1,-11]) Note: If you get a arg list too long, you use the builtin rm. For example: $ zmodload zsh/files ; rm -f **/*(mh+6) or use the zargs function: $ autoload zargs ; zargs **/*(mh+6) -- rm -f # A User's Guide to the Z-Shell /5.9: Filename Generation and Pattern # Matching find all files in all subdirectories, searching recursively, # which have a given name, case insensitive, are at least 50 KB large, # no more than a week old and owned by the root user, and allowing up # to a single error in the spelling of the name. In fact, the required # expression looks like this: $ ls **/(#ia1)name(LK+50mw-1u0) # Change the UID from 102 to 666 $ chown 666 **/*(u102) # List all files which have not been updated since last 10 hours $ print -rl -- *(Dmh+10^/) # delete only the oldest file in a directory $ rm ./*filename*(Om[1]) # Sort the output from `ls -l' by file size $ ls -fld *(OL) # find most recent file in a directory $ setopt dotglob ; print directory/**/*(om[1]) # Show only empty files which nor `group' or `world writable' $ ls *(L0f.go-w.) # Find - and list - the ten newest files in directories and subdirs. # (recursive) $ print -rl -- **/*(Dom[1,10]) # Print only 5 lines by "ls" command (like ``ls -laS | head -n 5''). $ ls -fl *(DOL[1,5]) # Display the 5-10 last modified files. $ print -rl -- /path/to/dir/**/*(D.om[5,10]) # Find all files without a valid owner. $ chmod someuser /**/*(D^u:${(j.:u:.)${(f)"$( /dev/null # Show only files which are owned by group `users'. $ ls -l *(G[users]) ------------------------------------------------------------------------------- Modifiers usage ~~~~~~~~~~~~~~~ Modifiers are a powerful mechanism that let you modify the results returned by parameter, filename and history expansion. See zshexpn(1) for details. ------------------------------------------------------------------------------- # NOTE: Zsh 4.3.4 needed! $ autoload -U age # files modified today $ print *(e:age today now:) # files modified since 5 pm $ print *(e-age 17:00 now-) # ... since 5 o'clock yesterda $ print *(e-age yesterday,17:00 now-) # ... from last Christmas before today $ print *(e-age 2006/12/25 today-) # ... before yesterday $ print *(e-age 1970/01/01 yesterday-) # all files modified between the start of those dates $ print *(e:age 2006/10/04 2006/10/09:) # all files modified on that date $ print *(e:age 2006/10/04:) # Supply times. $ print *(e-age 2006/10/04:10:15 2006/10/04:10:45-) # Remove a trailing pathname component, leaving the head. This works like # `dirname'. $ echo =ls(:h) /bin # Remove all leading pathname components, leaving the tail. This works # like `basename'. $ echo =ls(:t) ls # Remove the suffix from each file (*.sh in this example) $f:e is $f file extension :h --> head (dirname) :t --> tail (basename) :r --> rest (extension removed) $ for f (*.sh) mv $f $f:r # Remove a filename extension of the form `.xxx', leaving the root name. $ echo $PWD /usr/src/linux $ echo $PWD:t linux # Remove all but the extension. $ foo=23.42 $ echo $foo 23.42 $ echo $foo:e 42 # Print the new command but do not execute it. Only works with history # expansion. $ echo =ls(:h) /bin $ !echo:p $ echo =ls(:h) # Quote the substituted words, escaping further substitutions. $ bar="23'42" $ echo $bar 23'42 $ echo $bar:q 23\'42 # Convert the words to all lowercase. $ bar=FOOBAR $ echo $bar FOOBAR $ echo $bar:l foobar # Convert the words to all uppercase. $ bar=foobar $ echo $bar foobar $ echo $bar:u FOOBAR # convert 1st char of a word to uppercase $ foo="one two three four" $ print -r -- "${(C)foo}" One Two Three Four ------------------------------------------------------------------------------- Redirection-Examples ~~~~~~~~~~~~~~~~~~~~ See zshmisc(1) for more informations (or less ${^fpath}/zmv(N)) ------------------------------------------------------------------------------- # Append `exit 1' at the end of all *.sh - files $ echo "exit 1" >> *.sh # adding files to foobar.tar.gz $ eval set =(gunzip < foobar.tar.gz) ' tar rf $1 additional.txt &&gzip < $1 > foobar.tar.gz' # Redirect output to a file AND display on screen $ foobar >&1 > file1 > file2 > .. # pipe single output to multiple inputs $ zcat foobar.Z >> (gzip -9 > file1.gz) \ >> (bzip2 -9 > file1.bz2) \ >> (acb --best > file1.acb) # Append /etc/services at the end of file `foo' and `bar' $ cat /etc/services >> foo >> bar # Pipe STDERR $ echo An error >&2 2>&1 | sed -e 's/A/I/' # send standard output of one process to standard input of several processes # in the pipeline $ setopt multios $ process1 > >(process1) > >(process2) # initializing a variable and simultaneously keeping terminal output $ setopt multios $ { a=$(command >&1 >& 3 3 > &- 2>&1);} 3>&1 # redirect stderr two times $ setopt multios ; program 2> file2 > file1 2>&1 # Duplicating stdout and stderr to a logfile $ exec 3>&1 > logfile 2>&2 2>&1 >&3 3>&- # redirect stderr (only) to a file and to orig. stderr: $ command 2>&2 2>stderr # redirect stderr and stdout to separate files and both to orig. stdout: $ command 2>&1 1>&1 2>stderr 1>stdout # redirect stderr and stdout to separate files and stdout to orig. stdout # AND stderr to orig. stderr: $ command 2>&2 1>&1 2>stderr 1>stdout # More fun with STDERR ;) $ ./my-script.sh 2> >(grep -v moron >error.log)|process-output >output.log $ echo "Thats STDOUT" >>(sed 's/stdout/another example/' > foobar) ------------------------------------------------------------------------------- ZMV-Examples (require autoload zmv) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ *Note:* '-n' means no execution (just print what would happen). At ------------------------------------------------------------------------------- # Remove illegal characters in a fat32 file system. Illegal characters are # / : ; * ? " < > | # NOTE: ``-Q'' and (D) is to include hidden files. $ unwanted='[:;*?\"<>|]' $ zmv -Q "(**/)(*$~unwanted*)(D)" '$1${2//$~unwanted/}' # Changing part of a filename (i. e. "file-hell.name" -> "file-heaven.name") $ zmv '(*)hell(*)' '${1}heaven${2}' # or $ zmv '*' '$f:s/hell/heaven/' # remove round bracket within filenames # i. e. foo-(bar).avi -> foo-bar.avi $ zmv '*' '${f//[()]/}' # serially all files (foo.foo > 1.foo, fnord.foo > 2.foo, ..) $ autoload zmv $ ls * 1.c asd.foo bla.foo fnord.foo foo.fnord foo.foo $ c=1 zmv '*.foo' '$((c++)).foo' $ ls * 1.c 1.foo 2.foo 3.foo 4.foo foo.fnord # Rename "file.with.many.dots.txt" by substituting dots (exept for the last # one!) with a space $ touch {1..20}-file.with.many.dots.txt $ zmv '(*.*)(.*)' '${1//./ }$2' # Remove the first 4 chars from a filename $ zmv -n '*' '$f[5,-1]' # NOTE: The "5" is NOT a mistake in writing! # Rename names of all files under the current Dir to lower case, but keep # dirnames as-is. $ zmv -Qv '(**/)(*)(.D)' '$1${(L)2}' # replace all 4th character, which is "1", with "2" and so on $ autoload -U zmv $ zmv '(???)1(???[1-4].txt)' '${1}2${2}' # Remove the first 15 characters from a string $ touch 111111111111111{a-z} $ autoload zmv $ zmv '*' '$f[16,-1]' # Replace spaces (any number of them) with a single dash in file names $ autload zmv $ zmv -n '(**/)(* *)' '$1${2//( #-## #| ##)/-}' # or - with Bash $ find . -depth -name '* *' -exec bash -c ' > shopt -s extglob > file=$1 > dir=${file%/*} > name=${file##*/} > newname=${name//*([ -]) *([ -])/-} > mv -i -- "$file" "$Dir/$newname"' {} {} \; # Clean up file names and remove special characters $ autoload zmv $ zmv -n '(**/)(*)' '$1${2//[^A-Za-z0-9._]/_}' # Add *.py to a bunch of python scripts in a directory (some of them end # in *.py and give them all a proper extension $ autoload zmv $ zmv -n '(**/)(con*)(#qe,file $REPLY | grep "python script",)' '$1$2.py' # lowercase all extensions (i. e. *.JPG) incl. subfolders $ autoload zmv $ zmv '(**/)(*).(#i)jpg' '$1$2.jpg' # Or - without Zsh $ find Dir -name '*.[jJ][pP][gG]' -print | while read f > do > case $f in > *.jpg) ; > *) mv "$f" "${f%.*}.jpg" ; > esac > done # remove leading zeros from file extension $ autoload zmv $ ls filename.001 filename.003 filename.005 filename.007 filename.009 filename.002 filename.004 filename.006 filename.008 filename.010 $ zmv '(filename.)0##(?*)' '$1$2' $ ls filename.1 filename.10 filename.2 filename.3 filename.4 filename.5 .. # renumber files. $ autoload zmv $ ls * foo_10.jpg foo_2.jpg foo_3.jpg foo_4.jpg foo_5.jpg foo_6.jpg .. $ zmv -fQ 'foo_(<0->).jpg(.nOn)' 'foo_$(($1 + 1)).jpg' $ ls * foo_10.jpg foo_11.jpg foo_3.jpg foo_4.jpg foo_5.jpg ... # adding leading zeros to a filename (1.jpg -> 001.jpg, .. $ autoload zmv $ zmv '(<1->).jpg' '${(l:3::0:)1}.jpg' # See above, but now only files with a filename >= 30 chars $ autoload zmv $ c=1 zmv "${(l:30-4::?:)}*.foo" '$((c++)).foo' # Replace spaces in filenames with a underline $ autoload zmv $ zmv '* *' '$f:gs/ /_' # Change the suffix from *.sh to *.pl $ autoload zmv $ zmv -W '*.sh' '*.pl' # Add a "".txt" extension to all the files within ${HOME} # ``-.'' is to only rename regular files or symlinks to regular files, # ``D'' is to also rename hidden files (dotfiles)) $ autoload zmv $ zmv -Q '/home/**/*(D-.)' '$f.txt' # Or to only rename files that don't have an extension: $ zmv -Q '/home/**/^?*.*(D-.)' '$f.txt' # Recursively change filenames with characters ? [ ] / = + < > ; : " , - * $ autoload zmv $ chars='[][?=+<>;",*-]' $ zmv '(**/)(*)' '$1${2//$~chars/%}' # Removing single quote from filenames (recursively) $ autoload zmv $ zmv -Q "(**/)(*'*)(D)" "\$1\${2//'/}" # When a new file arrives (named file.txt) rename all files in order to # get (e. g. file119.txt becomes file120.txt, file118.txt becomes # file119.txt and so on ending with file.txt becoming file1.txt $ autoload zmv $ zmv -fQ 'file([0-9]##).txt(On)' 'file$(($1 + 1)).txt' # lowercase/uppercase all files/directories $ autoload zmv $ zmv '(*)' '${(L)1}' # lowercase $ zmv '(*)' '${(U)1}' # uppercase # Remove the suffix *.c from all C-Files $ autoload zmv $ zmv '(*).c' '$1' # Uppercase only the first letter of all *.mp3 - files $ autoload zmv $ zmv '([a-z])(*).mp3' '${(C)1}$2.mp3' # Copy the target `README' in same directory as each `Makefile' $ autoload zmv $ zmv -C '(**/)Makefile' '${1}README' # Removing single quote from filenames (recursively) $ autoload zmv $ zmv -Q "(**/)(*'*)(D)" "\$1\${2//'/}" # Rename pic1.jpg, pic2.jpg, .. to pic0001.jpg, pic0002.jpg, .. $ autoload zmv $ zmv 'pic(*).jpg' 'pic${(l:4::0:)1}.jpg' $ zmv '(**/)pic(*).jpg' '$1/pic${(l:4::0:)2}.jpg' # recursively ------------------------------------------------------------------------------- Module-Examples ~~~~~~~~~~~~~~~ Please read zshmodules(1) first! zsh/pcre (require zmodload zsh/pcre) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # Copy files of a certain period (date indicated in the filenames) $ zmodload zsh/pcre $ ls -d -- *(e:'[[ $REPLY -pcre-match pcre-regexp ]]':) # or $ m() { [[ $1 -pcre-match pcre-regexp ]] } $ ls -d -- *(+m) ------------------------------------------------------------------------------- zsh/clone (require zmodload zsh/clone) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # Creates a forked instance of the current shell ($! is set to zero) and # execute ``command'' on /dev/tty8 (for this example). $ zmodload zsh/clone $ clone /dev/tty8 && (($! == 0)) && exec command ------------------------------------------------------------------------------- zsh/datetime (require zmodload zsh/datetime) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- $ zmodload zsh/datetime $ alias datereplacement='strftime "%Y-%m-%d" $EPOCHSECONDS' $ export DATE=`datereplacement` $ echo $DATE # strip date from filename $ $ zmodload zsh/datetime $ setopt extendedglob $ touch aaa_bbb_20041212_c.dat eee_fff_20051019_g.dat $ strftime -s pattern \ '???_???_<0-%Y%m%d>_?.dat' $((EPOCHSECONDS - 365 * 24 * 60 * 60 / 2)) $ print -rl -- $~pattern aaa_bbb_20041212_c.dat $ print -rl -- $pattern ???_???_<0-20050815>_?.dat # Search files size == 0, to be based on the file name containing a date # rather than the "last modified" date of the file $ zmodload -i zsh/datetime $ strftime -s file "abc_de_%m%d%Y.dat" $((EPOCHSECONDS - 24 * 60 * 60 )) $ files=(**/$file(N.L0)) $ (( $#files > 0 )) && print -rl -- $files | \ mailx -s "empty files" foo@bar.tdl ------------------------------------------------------------------------------- zsh/stat (require zmodload zsh/stat) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # test if a symbolic link links to a certain file $ zmodload -i zsh/stat $ ! stat -LH s foo.ln || [[ $s[link] != "foo.exe" ]] || ln -sf foo.exe foo.ln # comparing file dates $ zmodload zsh/stat $ file1=foo $ file2=bar $ touch bar & sleep 5 & touch foo $ echo $file1 is $(($(stat +mtime $file2) - \ $(stat +mtime $file1))) seconds older than $file2. bar is 5 seconds older than foo # list the files of a disk smaller than some other file $ zmodload zsh/stat $ stat -A max +size some-other-file $ print -rl ./**/*(D.L-$max) # List the top 100 biggest files in a disk $ zmodload zsh/stat $ ls -fld ./**/*(d`stat +device .`OL[1,100]) # Get only the user name and the file names from (like # ls -l * | awk '{print $3" " $8}') $ zmodload zsh/stat $ for file; do > stat -sA user +uid -- "$file" && > print -r -- "$user" "$file" > done # get the difference between actual bytes of file and allocated bytes of file $ zmodload zsh/stat $ print $(($(stat +block -- file) * 512 - $(stat +size -- file))) # Find largest file # ``D'' : to include dot files (d lowercase is for device) # ``O'' : reverse Ordered (o lowercase for non-reverse order) # ``L'' : by file Length (l is for number of links) # ``[1]'': return only first one $ zmodload zsh/stat $ stat +size ./*(DOL[1]) # file size in bytes $ zmodload zsh/stat $ stat -L +size ~/.zshrc 4707 # Delete files in a directory that hasn't been accessed in the last ten days # and send ONE mail to the owner of the files informing him/her of the files' # deletion. $ zmodload zsh/stat zsh/files $ typeset -A f; f=() $ rm -f /path/**/*(.a+10e{'stat -sA u +uidr $REPLY; f[$u]="$f[$u]$REPLY"'}) $ for user (${(k)f}) {print -rn $f[$user]|mailx -s "..." $user} # Get a "ls -l" on all the files in the tree that are younger than a # specified age $ zmodload zsh/stat $ for d (. ./**/*(N/m-2)) > print -r -- $'\n'$d: && cd $d && { > for f (*(Nm-2om)) > stat -F '%b %d %H:%M' -LsAs -- $f && > print -r -- $s[3] ${(l:4:)s[4]} ${(l:8:)s[5]} \ > ${(l:8:)s[6]} ${(l:8:)s[8]} $s[10] $f ${s[14]:+-> $s[14]} > cd ~- > } # get file creation date $ zmodload zsh/stat $ stat -F '%d %m %Y' +mtime ~/.zshrc 30 06 2004 $ stat -F '%D' +mtime ~/.zshrc 06/30/04 ------------------------------------------------------------------------------- zsh/files (require zmodload zsh/files) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # search a directory for files containing a certain string then copy those # files to another directory. $ zmodload zsh/files $ IFS=$'\0' $ cp $(grep -lZr foobar .) otherdirectory ------------------------------------------------------------------------------- zsh/mapfile (require zmodload zsh/mapfile) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # grepping for two patterns $ zmodload zsh/mapfile $ pattern1="foo" $ pattern2="bar foo" $ print -l ./**/*(DN.e{'z=$mapfile[$REPLY] && [[ $z = *$pattern1* && \ $z = *$pattern2* ]]'}) # or a solution in combination with zsh/pcre $ zmodload -i zsh/mapfile zsh/pcre $ pattern1="foo" $ pattern2="bar foo" $ pcre_compile "(?s)(?=.*?$pattern1).*?$pattern2" $ pcre_study $ print -l ./**/*(DN.e{'pcre_match $mapfile[$REPLY]'}) # equivalent for ``less /etc/passwd | grep -v root'' $ zmodload zsh/mapfile $ IFS=$'\n\n' $ print -rl -- ${${=mapfile[/etc/passwd]}:#*root*} # or - for case insensitive $ setopt extendedglob $ print -rl -- ${${=mapfile[/etc/passwd]}:#*(#i)root*} # If a XML-file contains stuff like ``'' and ``'', number # this empty tags (ones ending in '/>') so if encountered in the same # order, the preceeding tags would become ``1'' and # ``2'' $ zmodload zsh/mapfile $ cnt=0 $ apfile[data.xml.new]=${(S)mapfile[data.xml]//\ > (#im)*<\/TAGA>/$((++cnt))<\/TAGA>} # removing all files in users Maildir/new that contain ``filename="gone.src'' $ zmodload zsh/{files,mapfile} $ rm -f /u1/??/*/Maildir/new/100*(.e{'[[ $mapfile[$REPLY] == \ *filename=\"gone.scr\"* ]]'}) # Grep out the Title from a postscript file and append that value to the # end of the filename $ autoload -U zmv $ zmodload zsh/mapfile $ zmv '(*).ps' '$1-${${${mapfile[$f]##*%%Title: }%% *}//[^a-zA-Z0-9_]/}.ps' ------------------------------------------------------------------------------- zsh/mathfunc (require zmodload zsh/mathfunc) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- $ zmodload zsh/mathfunc $ echo $(( sin(1/4.0)**2 + cos(1/4.0)**2 - 1 )) -1.1102230246251565e-16 $ echo $(( pi = 4.0 * atan(1.0) )) 3.1415926535897931 $ echo $(( f = sin(0.3) )) 0.29552020666133955 $ print $((1e12 * rand48())) 847909677310.23413 $ print $(( rand48(seed) )) 0.01043488334700271 ------------------------------------------------------------------------------- zsh/termcap (require zmodload zsh/termcap) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- $ zmodload -ab zsh/termcap echotc $ GREEN=`echotc AF 2` $ YELLOW=`echotc AF 3` $ RED=`echotc AF 1` $ BRIGHTRED=`echotc md ; echotc AF 1` $ print -l ${GREEN}green ${YELLOW}yellow ${RED}red ${BRIGHTRED}brightred ------------------------------------------------------------------------------- zsh/zpty (require zmodload zsh/zpty) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- $ zmodload zsh/zpty $ zpty PW passwd $1 $ zpty PW passwd $1 # ``-r'': read the output of the command name. # ``z'' : Parameter $ zpty -r PW z '*password:' # send the to command name the given strings as input $ zpty -w PW $2 $ zpty -r PW z '*password:' $ zpty -w PW $2 # The second form, with the -d option, is used to delete commands # previously started, by supplying a list of their names. If no names # are given, all commands are deleted. Deleting a command causes the HUP # signal to be sent to the corresponding process. $ zpty -d PW ------------------------------------------------------------------------------- zsh/net/socket (require zmodload zsh/net/socket) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # ``-l'': open a socket listening on filename # ``-d'': argument will be taken as the target file descriptor for the # connection # ``3'' : file descriptor. See ``A User's Guide to the Z-Shell'' # (3.7.2: File descriptors) $ zmodload zsh/net/socket $ zsocket -l -d 3 # ``-a'': accept an incoming connection to the socket $ zsocket -a -d 4 3 $ zsocket -a -d 5 3 # accept a connection $ echo foobar >&4 $ echo barfoo >&5 $ 4>&- 5>&- 3>& ------------------------------------------------------------------------------- zsh/zftp (require zmodload zsh/zftp) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- $ autoload -U zfinit $ zfinit $ zfparams www.example.invalid myuserid mypassword $ zfopen $ zfcd tips $ zfls -l zshtips.html $ zfput zshtips.html $ zfls -l zshtips.html # Automatically transfer files using FTP with error checking $ autoload -U zfinit ; zfinit $ zftp open host.name.invalid user passwd || exit $ zftp get /remote/file > /local/file; r=$? $ zftp close && exit r # compress and ftp on the fly $ autoload -U zfinit ; zfinit $ zftp open host.name.invalid user password $ zftp get $file | bzip2 > ${file}.bz2 $ zftp close # Recursice ``get'' $ autoload -U zfinit ; zfinit $ zfanon cr.yp.to $ zfcd daemontools $ for file in `zfls` ; do > zfget $file $ done $ zfclose # Upload all regular files in $HOME/foobar (recursive) that are newer than # two hours to ftp.foobar.invalid/path/to/upload $ autoload -U zfinit ; zfinit $ zfopen ftp.foobar.invalid/path/to/upload $ cd $HOME/foobar $ zfput -r **/*(.mh-2) $ zfclose # long list of files on a ftp $ autoload -U zfinit ; zfinit $ zfopen some-host $ zfcd /some/remote/Dir $ cd /some/local/Dir # If the list.txt is located on the remote host, change to # zfget ${(f)"$(zftp get /path/to/remote/list.txt)"} $ zfget ${(f)"$(cat list.txt)"} $ zfclose ------------------------------------------------------------------------------- zsh/zselect (require zmodload zsh/zselect) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ------------------------------------------------------------------------------- # It's similar to ,---- | $ sg=$(stty -g) | $ stty -icanon min 0 time 50 | $ read yesno | $ stty "$sg" | $ case "$yesno" in | > yes) command1;; | > *) command2;; | > esac `---- $ zmodload zsh/zselect $ if zselect -t 500 -r 0 && read yesno && [ yes = "$yesno" ]; then > command1 > else > command1 > fi ------------------------------------------------------------------------------ OPTIONS ------- Navigation options ~~~~~~~~~~~~~~~~~~ *auto_cd* (allow one to change to a directory by entering it as a command). *auto_pushd* (automatically append dirs to the push/pop list) pushd_ignore_dups (and don't duplicate them). Misc ~~~~ *no_hup* (don't send HUP signal to background jobs when exiting ZSH). *print_exit_value* (show a message with the exit code when a command returns with a non-zero exit code) History options ^^^^^^^^^^^^^^^ *hist_verify* (let the user edit the command line after history expansion (e.g. !ls) instead of immediately running it) + Use the same history file for all sessions : + *setopt SHARE_HISTORY* Privacy / Security ^^^^^^^^^^^^^^^^^^ *no_clobber* (or set -C; prevent '>' redirection from truncating the given file if it already exists) Spelling correction ^^^^^^^^^^^^^^^^^^^ *correct* (automatically correct the spelling of commands). *correct_all* (automatically correct the spelling of each word on the command line) *dvorak* (dvorak layout) UNSORTED/MISC ------------- Mailpath: simple multiple mailpath: ----------------------------------------------------- mailpath=($HOME/Mail/mbox'?new mail in mbox' $HOME/Mail/tux.u-strasbg'?new mail in tux' $HOME/Mail/lilo'?new mail in lilo' $HOME/Mail/ldap-fr'?new mail in ldap-fr') ----------------------------------------------------- Mailpath: dynamic mailpath: ----------------------------------------------------- typeset -a mailpath for i in ~/Mail/Lists/*(.); do mailpath[$#mailpath+1]="${i}?You have new mail in ${i:t}." done ----------------------------------------------------- Avoid globbing on special commands: -------------------------------------------------------- for com in alias expr find mattrib mcopy mdir mdel which; alias $com="noglob $com" -------------------------------------------------------- For migrating your bashprompt to zsh use the script bash2zshprompt located in the zsh source distribution under 'Misc'. For migration from (t)csh to zsh use the c2z tool that converts csh aliases and environment and shell variables to zsh. It does this by running csh, and having csh report on aliases and variables. The script then converts these to zsh startup files. It has some issues and usage information that are documented at the top of this script. Here are functions to set the title and hardstatus of an *XTerm* or of *GNU Screen* to 'zsh' and the current directory, respectively, when the prompt is displayed, and to the command name and rest of the command line, respectively, when a command is executed: ------------------------------------------------------------------ function title { if [[ $TERM == "screen" ]]; then # Use these two for GNU Screen: print -nR $' 33k'$1$' 33'\ print -nR $' 33]0;'$2$'' elif [[ $TERM == "xterm" || $TERM == "rxvt" ]]; then # Use this one instead for XTerms: print -nR $' 33]0;'$*$'' fi } function precmd { title zsh "$PWD" } function preexec { emulate -L zsh local -a cmd; cmd=(${(z)1}) title $cmd[1]:t "$cmd[2,-1]" } ------------------------------------------------------------------ Put the following line into your ~/.screenrc to see this fancy hardstatus: ----------------------------------------- caption always "%3n %t%? (%u)%?%?: %h%?" ----------------------------------------- Special variables which are assigned: ------------------------------------------------------ $LINENO $RANDOM $SECONDS $COLUMNS $HISTCHARS $UID $EUID $GID $EGID $USERNAME $fignore $mailpath $cdpath ------------------------------------------------------ LINKS ----- Primary site:: *http://www.zsh.org/[]* Project-page:: *http://sourceforge.net/projects/zsh/[]* Z shell page at sunsite.dk:: *http://zsh.sunsite.dk/[]* From Bash to Z Shell: Conquering the Command Line - the book:: *http://www.bash2zsh.com/[]* "Zsh - die magische Shell" (german book about Zsh) by Sven Guckes and Julius Plenz:: *http://zshbuch.org/[]* Mailinglistarchive:: *http://www.zsh.org/mla/[]* ZSH-FAQ:: *http://zsh.dotsrc.org/FAQ/[]* Userguide:: *http://zsh.sunsite.dk/Guide/[]* ZSH-Wiki:: *http://zshwiki.org/home/[]* A short introduction from BYU:: *http://docs.cs.byu.edu/linux/advanced/zsh.html[]* Mouse-Support ;):: *http://stchaz.free.fr/mouse.zsh[]* Curtains up: introducing the Z shell:: *http://www-128.ibm.com/developerworks/linux/library/l-z.html?dwzone=linux[]* ZSH-Liebhaberseite (german):: *http://michael-prokop.at/computer/tools_zsh_liebhaber.html[]* ZSH-Seite von Michael Prokop (german):: *http://michael-prokop.at/computer/tools_zsh.html[]* ZSH Prompt introduction:: *http://aperiodic.net/phil/prompt/[]* Adam's ZSH page:: *http://www.adamspiers.org/computing/zsh/[]* Zzappers Best of ZSH Tips:: *http://www.rayninfo.co.uk/tips/zshtips.html[]* Zsh Webpage by Christian Schneider:: *http://www.strcat.de/zsh/[]* The zsh-lovers webpage:: *http://grml.org/zsh/[]* IRC channel:: *#zsh at irc.freenode.org* The Z shell reference-card (included in the zsh-lovers debian-package):: *http://www.bash2zsh.com/zsh_refcard/refcard.pdf[]* AUTHORS ------- This manpage was written by Michael Prokop, Christian 'strcat' Schneider and Matthias Kopfermann. But many ideas have been taken from zsh-geeks e.g. from the zsh-mailinglists (zsh-users and zsh-workers), google, newsgroups and the zsh-Wiki. + Thanks for your cool and incredible tips. We learned much from you! In alphabetic order: ------------------------------------------------------------------------- Andrew 'zefram' Main - http://www.fysh.org/~zefram/ Barton E. Schaefer - http://www.well.com/user/barts/ Matthias Kopfermann - http://www.infodrom.north.de/~matthi/ Oliver Kiddle - http://people.freenet.de/opk/ Paul Falstad - http://www.falstad.com/ Peter Stephenson - http://homepage.ntlworld.com/p.w.stephenson/ Richard Coleman Stephane Chazelas - http://stephane.chazelas.free.fr/ Sven Guckes - http://www.guckes.net/ Sven Wischnowsky - http://w9y.de/zsh/zshrc ------------------------------------------------------------------------- SEE ALSO -------- Manpages of zsh: ------------------------------------------------------------------ zsh Zsh overview zshall Tthe Z shell meta-man page zshbuiltins Zsh built-in commands zshcalsys zsh calendar system zshcompctl zsh programmable completion zshcompsys Zsh completion system zshcompwid Zsh completion widgets zshcontrib User contributions to zsh zshexpn Zsh expansion and substitution zshmisc Anything not fitting into the other sections zshmodules Zsh loadable modules zshoptions Zsh options zshparam Zsh parameters zshroadmap Informal introduction to the zsh manual zshtcpsys Zsh tcp system zshzle Zsh command line editing zshzftpsys Zsh built-in FTP client zshall Meta-man page containing all of the above ------------------------------------------------------------------ Note: especially 'man zshcontrib' covers very useful topics! + Book: *From Bash to Z Shell* by Oliver Kiddle, Jerry Peck and Peter Stephenson. *ISBN: 1590593766*. - *http://www.bash2zsh.com/[bash2zsh.com]* + Also take a look at the section *LINKS* in this manpage. BUGS ---- Probably. This manpage might be never complete. So please report bugs, feedback and suggestions to . Thank you! COPYRIGHT --------- Copyright \(C) Michael Prokop, Christian Schneider and Matthias Kopfermann. // vim:tw=80 ai zsh-lovers-0.8.3/refcard.pdf0000644000175000017500000262771211103635725015643 0ustar alessioalessio%PDF-1.4 %äüöß 2 0 obj << /Length 3 0 R /Filter /FlateDecode >> stream xZ[8~iChk ‘$"/8qu3:I\1+AS/L\3T-.| prb ?6#P:blYμ{E b{WxW84ƛեpNoIR%6n8OaQ N!w~Ix4'ɢ`2k (9v Ÿg4)1xRcſF‚=d\(i bynpXpX:gGpd =Qh xGG4C2 Bd~wv;D }.K$duuщ$#|wC\9{[\z2`>]F[ƞ"mK@MAbVI< @ߓ!Gfn3o^:^pd*ZBHRA~5.-B! QGΚ&^+|]4O1Rqmw e` 9r5_#bYϲcFvΘȧjw~.Ys]bh.Rp<! nA_Ic-]p N0?'O>c8rjfu99$Kak| sUp$o%5r YTL >n2>"*Α|IFH)). EH/-i:gOrm=V`mrTa20L Y<> ښ`뎃mǤX[X4Nh [Q5r Bi,qͪ9u%dVTSbU{$%6"r%'/9HTs9?Wb,q>& Sg-+vpDA 32>/^آRD>tb3r@ +%E!{YՊBR~P٬3_9?`RK"RZE KsEpJ5"u ގg_58. 0:DzNVk1ì8s(-9Sci l y5ViΚ(׼hKOֹ^ȉ(Xaipsej?CIf7zcc~t,D2`M)(XCkM:j(KS 2#g#`K*">&1o|@zW8Y};,>ݡ,兗R/M497Q+?=$#C9c0i)eB|~hFPĿ"+'9M_lJUQ(y򈫒IY3pL\gV0 $|b?n .~㶎pehF/aW#;f 8.ɿy4( G.e =u\n jJS-w!zQ,ڨG`fK=R=~;{{6:a'2i.U&jMQ>”2Y@ʈzƓTfeAӅUG qƕ3Q2Op*c6Y]mRy[Cfz+Oxi69bQN0`ep>k-sG9d&d ZCLXp)ڿ|FV;~>dn=c6KM%\7CoTm?29R0Q~t:)w(1W|bԟqt>mY7 oS|O\.ꌧ128yE -+'IUQe1e]ިz #)AJ۰ioL|!(\~WBFSzXVkټ؂]~cPcfqݛ7j CYw*œK7k"G2toMEȡW/_ȸzʰS{g$`$eN}NJʐ{e*q{liN;A3;PxU_6X?SQoendstream endobj 3 0 obj 2588 endobj 5 0 obj << /Length 6 0 R /Filter /FlateDecode >> stream xɎ@;vY @Wի9\)B?R1(.&߿Ro9㯿(@"%E%jUx8;AZ&*LFIF|3e?qg5O.z݁LZ/dk&&\Ͼ3pC##LĨ0.$ Xcg k$5z>o8zQ<m76M#$!S1vvbȄ۰sl?ЈЂRF5LTN%|![Xԡsksk/٪o2zB在24Ϻx\jD y2w`| "ڌ8%7?;5d^ xG'=ܥrvYD3}=Xɠ>A8YO>3[`0߿ݜICl(;%.Y #ϱ}ױfI>OOAnfYa8H Fr(z9C64Dm :+:_z2ށ2H;/  c'Zݏpp)-T︛N/L,Z Lop6 FaO`MAT'Ԡ3 7F*_~s^zK6*((?ˤq7?keqy3F7b]!.lJBL^ ЃɎ8F6&GVl}ZC [g@/j4>v 3j{t3"5P~\Z5a5;;uf5p#SCvgj5FzZR_92)k7(qZW5y@ u< tj~ d * BK]߿UJ3^X+Xv#1Sc> rש* v{;,V.DH~4KS?tL÷ '[XeWh3~&I5_fw$U¸sZ;!XssYX \gqOKlMB}B^KVuW0S,2 XGTMgLAn7 Jm P.VVp]6#T5O曢D0+JO2.|RVPьW9"s0PD0W$v6@X -Sv6.$XGbms+l!;s_ 8dbJM{ >p_k}}7HI476P3pMU-KXPz=fcqrgaۊ-sI c>Rh7VN`BbtЖ&]ϫb?#MX_ $VF{_lgcOv5%֦8KAbo[HMVX zp6?UI ri~ՌeNm=VB^9ϐPN΅~N9 ¸h^{:|B:̖Oxe:|s:ݪ:|ŲGaHCxS!Kno~]lH+ }pJlb9ì䒶P]s$JMCek11gu3TzDw\u :Yi}Mk6QTr[mc1lVMi#ۦ0H|<,/JP%=P%s\U8aӺ[6)fE 6Kno=V jB{SGb79X$hWl'Ţj蛇F"m:= ;͙D=GG9{C,$(?(.D 5B ث@nx/S?QaK}/d]5gPI_osj=`قsmQOmQbx6MHRE;^OujU\oؿ>ڻx']M\\4qwT+y+ǁX͇ݫǚ*8@Kk*P|_|[wg.8c^pcЏyT!i";UOSק x'0X԰~y+QuzZ6噩֚pGݭ3b`U:~.eb,3T'c5Y8B u/ai "0r:{b2!~bAr=V걞aq}~l6Qe:0e؂aY >l>s&9|=גfS03lم P8`t鲜q贷ĘzWשfDÆm[cv9S7b9D}$Yuo؞Hc[u 8A]7xIG27>u4b#EiBx/0)\G\;ݙ"BpLb)T eF}q8Cj=iye6szwpw ?=K,6Ҿ ^[m^/'uhfS-K:! *[B#/'%fm(LJè5E:R rn=N]GGj,Ez8@1=Qt7$8k߆1l({rٺ6ckka+k- .؉R 'N'q$DMcgBo^)aO8[R32oL7k nz 3ʮ)zܢhsXfz(MTc[ if7+dM3"?ṲcM{ln 7rȻ^y]_kFcxSo%dž+K1)?ք˝V (<bĄ|y*G?[S-_NDR-tĿʅ;^Z/@WŤzpKȳuM5*&$7Sp/Y.ic cƂ۬.=0ĵs8V& B6j󖱏q2Fϣ 5?v67~@e܀r`62BYhHԤmHr۳˿'XۀwUf9g1@Q%+(u5pcB"Km;8,-,]XyCKTqPHHWbe!;\bAfRe)P(bY~J柣i wi|+/ ;`-"(8si|q6G,DR2鄟;z\q>6\J8J@C2' vC{~3bg̭}{(KdI |r-UYTtӵkS3WnyT5SwtďN3(;Nn;8vp\o4\L#rWAq斜78]877e`:?:{-nT *I` [oE i:VsW Sq=k~GO_R@#xk6rz`k8U>:Ĭ,yHsZN9X$)?OnV4T_}lM* ':ƗndK3%[$'TLer~؀> stream x=ˎ:nzT T~  E&-ۤ,w1շD⛔<}ǿ{9?efc8+9|͏9Ч$ۣOJ ;k*E&$\2"=K=@Pq!ւoYT^kWÁMx% L8pe/2 6cPh\Vl*qB({0яqFW*?s įޙi焘Ў;R³Hcuvh+MQҹ֦)N #$h Βϟ|aQH!ׅ=%57Dbj~1%ٛ?YݡoUp "UT"*H^;ҹ"Y7G)ޡKß@uw`polQ;Aǡ1y$k|YP@ E-V#Cr 5=*zi*;nCS !w!~3|aBRryDnR8wP}i`XY$6vqJ9x;-~_`/Q"=`g~0݁W#u5jT4jʧ`[.铨`M1'0)M1v]͔2EA(t*@p֋B.UT `e`'b0}E͠J멁r3.PE;x&Tr#}f^߿U̪w9M:#WhWvXf^UEE{p@UjiS5DZmur:FܺR>Us@5wQ5-'f^UEU?^Vn-5[(i=8vR*x30/ ,LLΧYw^6"Lzrԁ{:CѠʰ)9SJqSiRe*m65=zeףO.U gG݀ʩ8 9MJRsY :bdM2G j'eSd~ak11\<6r-CQk~bm<9Kn#C_0kJl=#"N?G >7۽O~ nm6yW׉ <=ryCԔߒ% AL<' 2K텁HeS2roS]㦵?d_иeNN΃~ygbJ>j~_Uqx?-f-9̅kT {R^]1[Lhpa+[\plxmWlJÑv"UGHR;`ul䊮3 |`A(}<ͼ .@pLݹK sa]V]-.&TomЮSB[$cJxϑ'^.=c*/ZE6nNz#0j_~+Qrmf[&A{'ur=.I5@j|AZ^b]r fJ:QR+&]/vd}F__*\[%^ m㭜 :RP;=HW -{ӤY|cnn=C͉&݉vAS:{3KTg<:> stream x]Ɋ$=;Ĺa] {/cf2-KMY)}fRno?/{ۭ__WT/znj _t?N^=\>T+^>5Af 2^d%A A:LRvBЦ Ҁ 5AڻkiM)7!h3]~M)7YNғEdQmdMɒm 1|맻OگzT'Odq3Ѥ M&~V̄&Մ&cMhғgJMh1NhһФФd^g40IMm|Waƕqfk@~険(^ g3q0J O/t?tم:^J2g~2΍eOX8TϤ\ӄdE~{^gz д4p4);[k<~Mz&= ck!]88nS/zs߿"ĆOUācßg`>a;zQOti``'8tG3&]bN7#k2?|Ü4sç{ZGlʱ2*OLEOϭ~1ӛ{q6 [>L3KS8]z}E y-h4|ր2T8&QX)Z=aDSM@ct=y,ssO@?I%}bzz}" q5y" p=5cM uoO--3avXUF :7_ s[y<8H=+Iq/ hw}XD3gy2iIUH H(>ߝ@X07l3{9PeU ??"/+rUާc'9m#/}Zzk(*>Z/IASpa9iKXnp`W>o}O|.8Lꎒ\A۷ 0:R x!vʍ)Gr:j ]2>d漅|fp5T-ȗ0!DkNչ"D?AlPd'T^<ہE ĪYT*9MIXm4Z ^OfXP ,2pxrDOyᢎ 6^7vCR]ٲ^ͱH>J6QsW>RNs<#?Vʒ,چ&z#ʂU| z & vL齏hHnF%oJۛf$< /4h6 <*`ukJ"E,%-YG=Z]or?:^{$HˬZ#"$GWX-/0&kv&o=9Ef"{Mqhkv :oXfXK˺/HB۹R.SϢMYR d,>U#9*NAnmV ;iC ${gJ+h5 #] 99β>PlePڗ/X %ܩ^[YQ lJ \Z1վŁNkk:xZ~轗oJQfWOfX[ eu J! [r7[^M):L:KMԴq%E"p"n]zUC];S76IDacHW.Y*,1r}͹kQ䌛e2N(Ib.B΋~,UXi eyĠ]}6 g ыB: '&]咘+`{"Y@~#寪=)Yl=ńBHٻy<{ f sמpqGC+z6˜Ju*kWd4&4]G_wҦ3 GxA6{7(הP8#Tiy+beb]uS2b;casQCM?%L),2hX5§˘iԜ`EI ؏q,CBW#  xM.cyPƥ4U_\CHUR ȉ$K3cIa'x[_*=ZmP Rm2"!B %5ؗL*߭3q$%jTy`Ū ^@}$AW`6O\m@J )FSE CF -mR𱺸 [NkϘ`^:Mg7I\Cs@zH940}^` ڿf[%$za"Se>9!<%7dfDB,ZYZ \̱jǜ$'2x0q|ϳc~>rv7zD O%r$rۋtH^gp Q:1{jnΨ ،:4cVe p]ݚ5LN:Q$`vI>3.w%r@ * TڃKՉR$A}SaUvށȴkw_}LH"GFr +d'lFP&ʜ3.yz<g)[sS%!v b<zXnʇqz 0vaFk5ulqoT yG(7i&/ũ<[ue2GJߨrgb/47kW%6\,E'}}o&rLSGgTS .kLy&I}Y25hI Z]PJPxi5=鐜BqTTYāk`gYaTF3ǡO=qݧFt(.(@et^ɦkdC,'vGhms %Ύ'6S;U{خ\yx@Zy١r͆|mWr jQ7hlN\:,$RfʙpF%}ʍMTz}Š39_-6ސKd'Qp۰Ģ-|zB+4r ct 27Fۺ\wZ+_̶fϧX[vzϪo[Gj3nZr'V_PldU(,f/7QSaPjpCN_7Jp.qH|W)kE헵4TşwQ.u-C#/7 ^sф[bb5hWMwn8>ƜTɓ OK5[7O{ZjC: -/9܎c>+Fq/<!Ag咧MY' JB)G*Zjݧ[b2ώVd1˟@]7Li| J'ˣ? >r9O̰0V&@2lKlK أb\ƪ)Ksz_7=dK ߿8}8^=gT$2t]@P8%MV]JtԨ)7">5g^ra,g#zԠTxMV'^TVnQR2Rw6N>r|t.C}RWѠy"“>J ]Q szrH`Gt.JD8qn#in(\km;t`sS9|X_ۻ7 r: t ABg?Ioww :f$0H#b3$#R.ڪUrpH5GBtPO ǻ[!w DiCJB 6DJ>ܢE{Ϊ-0!Hx>)vggURy0zH]uhG܃ Kq̛kdΙy7zwi.Q+wOYo1\»4Lηm*`L&`΃tNL vɩZqr R rsl}w&W!dwek嚾`ma_<) `]yjQۉ6szGY=v'VHRd_#wjNeв=sfN(eIc VZgX,3MKisjOkށ.Х4rKWLzӯI[үOr(:3b_`|w˞|Hi i>֥Bp?|&endstream endobj 12 0 obj 5556 endobj 14 0 obj << /Length 15 0 R /Filter /FlateDecode >> stream x]Ɏ$ 7\!``+ 1ſoc%1kИd(j{[nY>mr-ďt9}ěY҇[5|خ0ُ+PO8X7P,}u\^긵F\_M_ׁ:.Ա#} =+MWmBuЖ+; }5 WȀ] hϮBB`g_! 7]r볦:`dWhEe܂q#*AvJ;|P62&s[|Wd"eU[mWd2.>dx+2sWd2έ}\8"q/U&~T1=ꂫ2>dO}\ɸ#]qE&lL[\Wd"dU[MWd2.-}\ɸЏ*q/U&\?^L~T3x2D\KG+*)(Q=>=Hb00@ɐxo /H20ï8R׎J$k`_T }euNAS-91s޳ύKx1RX84+8hlS, {Pϡ?/ L#^"2S&ZkꉰPxBxy4$AmZ5&Zt[WޏmEǠaЧW2} h]:|Kq &w^ + WP1 wͼsP1`DZt {w$qk"؊iT=hZ˭!9PZXHiŸb*||Ė%1†+Q\ cB W3 Ra1&4E8xn1E\D8:>vaBſ]I՚ҩS_gKђcŰ߲~kC&aCOgRR"f aD״6/FJ&u2(Rp&&&!>lnWFg1Uɢ>ocr5됐&2Pa~xOik'M Hr7AY&[RAG@8 ZI7pb3!L[[ؽ6`mY~&T!ka{vIulgg|9O5,e72O,]nj4ڬ-]Hy7CW}ۚt̵R3~p fc VR:1v܊%iT8̦a*+NZXffLhuFܦs8[SݱsB1Xm8 q?e+VYH?\5QU٪i 9a W*xkGA]q~* CdUE*cPL>LwdCC0fTT?Trm]5qIjܤ09%.VJςO3Z>Wܦ Lu5zO}k=[N"H'g ++|YY o)7oo Om $5AدxkOӫz).ﵺhxK@V]:#&$ZhFLϚ(hIHdTeNvio;h O||+ޮɐ%Y=D8rIgiќv NsU?@5+@1GN|#Eow|S@~q(l! QoxqңKhf|߆<,51NzG[@z@"a S$`'wryX(rU0irZsr\2D9a.էܺߩƛΕ'Of8h36bbt/0 f|Ls>&!7FzHڌg!|M|40ߋ K߽owtNevv+h0F= lKUU#h1|PRQV La" y|%4-{䁽0#C'G1&CktN|Rˡt+mBߨ%,cZՎc |5|) ˘7`Ɯl_ZĽvio^"k![~[Z~LN/mћNXWNwY-Wv4RgFMHu;S֒pF(002aͦlRy'5y,vӕkL`Ψ$Lմyro5ku&L`ͤy}jkNv3}k SY|?]|[_ :YiP9;f$u$mIOWNv57vvG&X& j 4㗀T{N{7WMl{YƳȭ)-fGԛSvew7'{#ǞV&Xnk>[]lߢMa={/oUb;7w yȬ-|omFi[=~!' j8k 'ipY8:HXo> stream x=ۊ-;n?@: @$C ߏ$_UVT=rےe%{-~,|GX߿u1k8+\?alh??OÏ?>?`,'O0p)`;~x [n3g/g՝ĆgGY+U`Y Uz&qIga kOvcr5}@#lLxաdg'u:F℣ Q8C|!N@˧hxa;tZNXɑXwNX3JXNހ8c$u89"1ʧDψuc:1z #eȟqJ+Ci4ֵ a4 'De(p 9N!˩2dfTF%!$,H 63$l8 IC PgH!|3?G4ǿ ]o_hk4TC̘_f9]jknb*+ ɕO݈6_;_M;qAAf9898 @C@rV@M Nѣs O w| h#[/$@m}#_@ubZȆ"D\B7Hzw6)@T;Bm؂Xakfuga5OdkdԋGYaKo<2j&56L/mTue`;/[.y $O:&Wl~WwJ@ 6?Q 5vC$7? *>FgzW\=%fb8*nOJ\e W(:IDO <IYglf5Z7J,MIh/9Cib1Br{ּE0T1h&MsJ"&VQ/jI=^ρ0"@& %UąprQK۴,_ /UQ6fk.6>ቧ|=7=żǵ{ ٣00 6<]}#٦ 쳸L d"M f{8*tkYHtSS>~jh 'P\MΠ*8t>j:$ n5zjt)ɹ5&Hni[R5%Qۢj@u8VUsP7C?g)%20- A GLD(ZyLeԾ3o(glU@W[i$GЧÌܓA"/e}Jj!ѲN#CD/ɶ_ԂYTVf Pԛ5˾%.st5 j/URƽ~mI`\5Ee=Cø]!kXj$tdBw lk7Z)K\QtC*XZ Q84.s} {ݻKD $)؎@2GQoQhcl i51cs!ɩhB;ڹUSx8k6Sf:+Lv|M&j8etj> (#s쵿Y0˩1,(dHBSrmurT\@:X[w JD~-a!pT'/PyyD.ɋ!Pң84V. W)~>g^ch09 ȫ@ ))Oϰ vrȞJ3JACzͪ*jJs5uc~*ߊQ @QZHj~ hNyP^p[б{zyQ oOT>7+l_{4 >W侀O4"l!p}Qõaz\~e-8r:ePJmmKOoI!_5a*_{Pb0@y 3~eJaJ51;A\.U8'Rߛ.q܍ :wemmZ&M^teNGA ]i0TFV_~!wI"w(|3֝G"ؤS!.eshNr}5+ɄUI?&Hˌ S=x:nXGe<S%(Agjߊ4BC@}UϹ*P\m-#y';,6Z|p >Yz2n]AX W6ɯX9Ґ%CV%x tݺpxowh)r +$Ǵ݌bcuPt3Xə&,a_wB/r%w δ:6*N+aO獝Fk}$Srbaɩ:h~N$ސv%[WjB=Mw,:s9̅3<0SyoЭ%q8^n:],swkWCA5kQ ֫9@hʾMab SIfsX& Kn@)2HmY!a1PC]V:Z1nQwP6i bokzk7o=ņreEi'%j= 9V-@BsY*i}+ 6 [{AHlG0_ SC %zɌYrKUJ%7]S¢^MB;||-vN7oBm亐s-=zK|ؚ=`;33_n By8]W$ql5C 8:NN:Bؚ䰕 bj)^9l2bc]zWK/PqI5V>=zvYyt>qq2`U"u'6(m;((NhOVEz;0_J *atľ?"k}',hH,z@=/E̗^UQkΨ sDx4MyãIw/K:̍@pDO-WuJOmU(^=BGmk}j*XJ՝,?2MüLvv5B~.f EkHj*~?c¡-w iBKMm\H?Xxܤ 05.d%*5}YQs{\+D1.n/ïRIn^ǟGDuGqjexo?7 <PvC3ɿ]|;zU^>o ђoX8/B:!.b4L EKb y3 qliҮnuR1q֥2J_I 8*F, ܑ~{G1NcV>cfA^2 Z{`,ڨD'5/߄Eo׶~:_WNp:üۧ 1|A<jUN1';RPT`qͅUPaH_7ujĜc!ZBl]tx阁tY+@ uy9*:zM9o%ڈ2f\G6uDx[y1-msğ{-;h,tH7)^yN`Q0{R]G`?%OON#qv %2Jk\O*ށs_Yke#4A<nZrWe$>/5\(e` XZ뻉,S 6=NKB?Sg{zijktqטzx}Xۘ&Aȉ;/sۛHO ާNse?ywz>ۢd:4q  Y)$aVF4+WyjbqhVΥ4 YB*ӼcatoCwךCo(>hq+fJNmtF2 NN`d[sv !SM ?:.O]Tq̰~\ݷoqkbz#~ojBendstream endobj 18 0 obj 5898 endobj 20 0 obj << /Length 21 0 R /Filter /FlateDecode >> stream x]ˎ:Pz@c̈}07CR%IGUpoeELҡ<=}L~#- ~|6X&G~,i&.!7>7o²s?/~~P$П~.'}I'}i:|FߧnOJ>yiL\3mrLtM2YJr՜8c9ge  0 'Lx 'L91q`EΘ3r6 4_T1]9ULOӥStl?ULNMb\_J_J_˯~!ʯ}%ɯ}%ɯ}%ɯ}׾׾׾:,k 4{ǟ_~?SoL_aT?~'<$`(XE>@ٕ'h37N3<}؄ǹq M4)pN!^Jxâ4r8Ucrr]bۨ~l^3xeMG\*{Twr*'9et}/ T%7@b(guG%T7Ep'X*!|hә OOUgcS)g8O?ygQ'|o| "/0ϞWRi+ S\‡P+q/sX*!6FAYW0V_BIJtpuH .r >и1-iC, 0ژ?A Vb_Rx/&fPA }DmZ+42XBȢx() NʼnZ LK P4[NҦj{,PA2[˕ofx[Iтj fKڴWd~%CfKyMZ@w&ě 4k'jd:ު!%AEvoq[65Isz3j|]M8sn,R8mqzd[S jv'g+#g:}fV R Taw%UXMX0edGU4 NZ,Wc ^*y& NE;X*4N&8( }CEL2Q*B&ՄkP`35^0[]%%-P}ii_%1C5ΘuLǃC;4Ff#, ݿ jyگsϋNWU(S@GyDZ~moj+[V=ϊU(TNxn%G!sbb%p30ngA漗oz#j2WX]0W۸w?R;J Q8X{DvU[jo HV3eޮe )$ 8o6+5fk#뽹ofWC xv*?.XQ1܄>z$,ahw s.E ^6ɪIVka5-_Ԝyq94.* g[*q ͶFz/{[Ƨ+QyS@`نfaUfE#6_Khƻ1FBt]Zx-uYx:[ϲdl[ϫor[}ؚ3v+8G˩s|w_Ì,O,SN& xԣe0Bj-\XaY"$*m"tSņyzp/㮅-iDŽhT %]`FBeêD S](}[* +(7da%=@3G/{eOD}v't3ho.;F+mȜ s7dEN/ˎQ 5L3z1L!^j/a#H7Ô5 iW*Ӆأ &ae Nf>lgu4 lDGAKæUGL\*F8@mKkq[[;;WCC=jBRH A +Wh/ 3!#}S%DYX%*R:miDZ3^YWצŊam*^2!r Rmvf|Â0_ք$SG8cķIs88;OXޒ1جRh!f/Xham\UYa @ hW_SAY+";iR<ه="fof{oٵPַٚT9 _`gYrKmbגqLղ| v|VA+#x MWxħA|  Uy45<̅d[y>R{$;㡮 AY:v aj8}Jo(~~vwi>HMtJŒ (V>Q_X%>v틀yQoz pBP_z #.[vDhQi)ܰ-[5a[Ku)Ӊ4 G}0רremkGGmnkx88|oOTF"zj7)E5/t-06ְtCž]#8W1O!M3.IkUqkpa͉5 x?}Rm+ X{oRigU5MZL ҲUɄG%69elvΟ /}ݧjgyƺn%/{PkF|ss:ϵifزNa,gֆV?7׋_yn NkNf8e K}G;(LY9$ pk2i/vs0Y=:Fx[m}coQj͝ZW+8gjJgh+ ;eeL,-zϭ4Z#gV39Dtkvn7)ADej]pLZ[^yk^֘C9 \+z턱>]hWI*`L#7YZnt6c&L0hf]9:k>J|ժCC{ڃ{jKᾔ^Z`Ԧ^a᧢m$uM 0oܥ#Լc`7ʀCX=ەy cJf[ܴ7Vjsi=Gߛt7Vi]_94leǫS-pZj`^0>S%BsI)g9虮7 gQWޮPdOxeFVZ@xڤa*5nMfp'ܳ֜XygOzh v}~$!ehͷH#z| XHc,{,C|M2< 9Za=a_lZ;CޅS3|ҪH̄i7F9 Oy~#/8ФZwʓav$]vb,}s]<`k@wdDendstream endobj 21 0 obj 5684 endobj 23 0 obj << /Length 24 0 R /Filter /FlateDecode >> stream x]Ɋ5;r_\N)h Ug7\ ;& R4ߪRfD( ߿~>V.:?=oW\T_9֛/4҈S_?bV;(#: ӧxDG({D(Oڻ hQP9@ ӧ@#MTH>D4Q-G1﨡Yx]Wzqp_`D}0䖯`=Gox4:/C2;:/C2tt쨽 !Q|r͗!Q}2ݗ!Q~Z:C*v_֎ːlr Cdt6 6p#Ď=摵cyw1=t* Uj Y2vgɐ=c:[tg{ːlo2e(.fo|gː]eрRG Ы?"B{DG3JBGYQhYj=T2LC%SPɔ9LC%SˡCPC;,o(}L/ob?{ş8I?Ij}/4,;:v'oK& Ă<BǮaȧbyNS4(fhIR$$s{*\yZV!}]XS7FFXT32y+]wu0zѫy97p' ٬u#,Jz*o5L :z tCmaO ?AXByݯN›;bԯ@.8G\X= u)b#0  YE/_P&LзI=wv+r:i5&q^;~ݹҁt>$KjV+Wx kkdU<|>WC{]4eZD45̾hЙKܕ>@%L ҇ReY-&iR*mS[$ΰ噠VwLeZ^s!5) y\ˊם%,ӲHΧHO _S' Ƽÿ 6 )R-q3.*23.{>.\&N u3SMKP0ͺܠ7Mfc  R,V+_iAhʠ)&x%gu+l8BȪX娦e~ֱdը &r w!x"cWPc'|[}ǎTnjN{mY{r ^GdY8笋n[\ /Z+m+W@*m0u.. 5B2 6nq;J1,6{C܎,$%tPZ\1*e92*(/D *dM0pѧ@!'% u[̺2ɇ Vo Hq_׊jޖkC{$h.7YQ:ܩ)J~ O&_܏ӅµΗ=]eC3F",r]VWf3ԩh[nMZi3C7vҒa]|W긳x~D37.=u.R h` ?=O}HQ* Kq[0!GMנ}*/ - "ē.i ^h%WIDc`Ib^@ț}@ή_ڌ9RM.ٜ4H7M;.!`YfNջ&2o#\[6K f=Vdy46Tle1#^l~سz>7u0M:L|d$fnS)|whjC[.Cڦ*맛6UOc"}ݴ5ifrCLԱN-mS6 iTm_X462bڇ*X>ԅOMC-XFY̞&A=Y&Uj^u~Ҙ#zȮu6.tϓۜLYFY2AD`c:>)y #SK#GV< "סodдRwId$vN>3KtEdZĊ1+x^hk9o\J$O##"݌ey)F T VI4ra~>j$r鎢AHؼ?esL=y)FSv i] *KHpEpkL]V>^fѨgEF[̫|Ȼ.aS0chB>v5v}RrtJ5//({^;~ss6L[qV5:~x:9`vn ߒW;bvj-cbN&QAU#* ܲ$-ןS+ [MwRv.cA#̋.XkXp!ɇ-f2cRZ4qhMlZ#D  ݲռUVc5/`hitAc9>Qیdu’.* 7 ʝ'ռr`Ulj.$̀1t|Tx(M-  m:Ko-k.AB;jf?VD:\U Kǥfi Z5n5!}?M!RxM-n``CMrc-]Uev gMNO_>Qb3-q sM sPI?PZXG=B:S1~Y:;" "|eۺؑ\+?QAV( 64ʽG@wjnt7W i=XfAj~~iۚ.~ڎl띁[ x3N޺WI`H*r<)r#* Ie>E{%aE8-s38^-e8oǨr,K|`>Wj6R=C<Ķ,M7X>> stream x]͎$9n7P\0Py_`|0H)B"(){1UIHQH)?o|>l~Q>~#>ÇCLlTH\<ПWth.%גx-tגs)W-*/%Q_JDi(܄&&އcAVDO}ͧ>p1}G;}`4+m/PR)1\ '+!4|=*H}Ԩ$i@+?~Q,*lWM@._̟9O3)U!|FY&xK= ʄ>A:b!GI]j|lIYͩ9yMtQfvhPLrk \o CTEJhZ1*2$mK֛3zJ8@3ߧ;}\t|SM ~yZ 04 ;h&FQ ~wJ<X8HO 燳Ml L߈dLʥ?|p*چo6tYˈ ̹)*PG&i:Ȩ]-୞Ϋ'ݱ7SCWGy`\bSR°0BxlC9s3x~ìҴ?a J^Ppeh]0?E |Yǔ>3a(B+Xi5y('硦 cSlɢS~cD{BX[Y0# ؟iZљw;VV2!O~&_W;GЀq `1i_C+A'GφF\[Y00+.&6LUboqL\>}7ai8 O'@0Q;VV02aL6!{&p慮#o<*Z:y6U5}ɦ$;2 !١;kq*(:z6S5~ T1)]#-~P^t;6`S5~ T1).,b}w~;VV2!LtN3/IcmeG*.-}+'^}ZreLپʖBKpgϯ:F4=src2㚎4oys&>,hʊB c tN;[@Dvh% }HFיV yY7oZY@#}(ȄeZv4cs6s&2`5;!mOg=Ti| sF 43Ik=}H?C-ݦj]%*^K*#jg$+ݬsP m+Jz5/$&X&&l *\`5FT |9tGfnY#q@$g{\ʬP9>Iϊ6=)Hէ  o/jXyױ<  $1H~l:&"ݓiK;Z.67(cY7td47Em Su(lQP qew-)'G*{|q/YVsmHL>˖R\|[%M25پA֖ E;rpEӶ9saG2Xd UuƓ ={U"VE%ٔ{fZ-s:]oC64wcqz朕PY0epv3k3=lsUGRa+4<µ9,y?0cJ}-ї ,uVw7 :p3<9l,'l3(3ZuT!d߰AWYnk=\/ D Ax0H:{|5^આ[om{G,~oѓdYn=Iz&cHOT9=uϷiW%zBKw2$M+qt<)ŅO /O87zJtxdICʄ:KzI+|0 k+zH)zDʀ(o.:с\u݀{uzf{f=53c{LǕn1 usmen%D}8ToSX 4Y&Q}"a?7v-SG") +'yp^bpЪ-bCh`e}垍^shlOV 5ۻ\SUn}l97ƨR|ԆF-=o2xفjJot%̩ҎX$,%& 6Z`H0q{7YsyݼURb=kQ9|9H,"npNd൅enf`H *+Q[#Lv TKpk m?%#2q`DJ m+(ʡu 늢ˮC\[B,o%L`(YpՔvGZǛb, =teQs*(zergD-Pݣt?0гmĂr}'dZ[3*qV8Z.4js`ڥG lB "- 6X>38"S,Zڽ8с3z$\a=%ƛ luXbLy*.3?y(Zа <";qEo; aGxc;Hfer4~ŶZF 6zmwr#҈-xR2x:ib9Wڪ*KIĚZs{ljnǷ ^[):PǗj]v P;6F0m`]Dy&Xb>oW'`B}5{i('pm\hQ`2ScsmmAHGY뻶5f݊T9fw,>L%2嫙a=;ɐ Eua%=S cv_R̢w$weǡSyT&4Frpk 4nr'ɽ+rH5 *xmR_=k|gl!IوWqB>HMcq݀ws@¨6ǹX+6``kn 7veA0cp%Y} L086Li7ͽCqvvډ9"/y29[ַV:;&F5<;/xr=/qJ.vp-:|kBzK-:t_x-(w<%S[u'l}/y#DuLrq'x3(Y+eN:BL@L \&ε _=|Z>O_`4dfc0=p/{N)<UkL%V_ +OGƹ ꊫ1bQ^ B8W*.?_jpcω'N+A=O]W_z>Ulx"PV}_jL*o5Rly^K#9EUbpz$)\ʷ=QSLՋ{ol9HvWdzQ 3]i<Kz]9gAZ|lok\=ʻ}2 FXJpBX{1vdAκ}oAk|fr^zHohS{u i> OED=K=g 6#*oMh41PIA73Nof/e[>Z' ]F| z-nfqK|dHx8}oC8'ZlU rm$rM"ڼsHmuN$[».NFnnmCx[JݻS{-MPNQ|${8749ny_z|y2!=f䂹{1'xg,ح˴9կw,> stream x\K$۩{ >}G2Cʌ,gT }![߷ޢ7_?ϴo?inڪR8w>p`Iz4`Lo' ՟n2l?ST!XkBP+Mwmdqs4Ñ#>#P9L? Hv >Ͳ} 'Cp 4n{-<`M`f s3N6Șe nqB% '5de6h j"3\9  jH4?d slP s<=G<8jeaA?~a8\fv>ϸ8=%kOါ3c161)5S`^pts8ωtDŽ8f2R@U8eDYQVf>ORQc0h׿G~34_nGo,8W 'R뇺L|_{2 X4DB0 {PFHhcR#+95mE]7ǚʯ_`w#h΍˵[giܼS/s?>9d吐[0%x GXݻ`}Br> ;LUvޅH%/$*|  dѢ,_Wx8u"i1H b|00>1=6ƆDe QAq ;ԑp=O<OU3IFk7)|c]p]sl] yӪXGBIXPp;atP>APT+g0!4\: V9߫͆$Z̋UjuOp~'n?kRp:J $]6/׉>T@?(-FڟQxeL $ `8q+ǬsWfu si"^^S*x{y,8v^aY;>X2cn-T-Z=ZuRR~l{S+u\.5O%gzd}4M(Z_2`8zBpC$ {F3_ tbڏ3PXp-EaY}9v7{{EgIY=[Ө M ^9pPsG A! YHpՖ- V-W3ڴ޽p X"s;н!pH(Iw61r)*!TrL[kAO4{*}%CݠT4poCv79 9b$iE#%GAm{yG#Ey%uawm\1;EMjvԊbJ%jZ1z8:^}ƚFvbvfZ1HYG9:{0:!8) pZJK#^m<i6͏^q.^UM?/wvr'kƙ;j sf /6‹vZV:dUmi,ð4'4YNd;\Zsgpi3*5rWXF~BTfW:um@S}пSfK sϑJ"$/@K5.-BRѕ%>Ѩ]_/"\P!W u~cحRI\ER]Z+l'PFˈ@>o{DͶw4z^ts hpL񫥗dYcWͳ}<~́7L-ȉ6H Vu9Yn;R.hycuzG~v}m.m`y]p*3TB\/."D}yq%L{,k{euGDF襏)z%6I8 a5]ZqypԌA6ӝQG]o>Q;>(*vx'AD ZHU8t4SM);UZ^\ fDaEe+ l l3އNP@Re}06=4JǢ`S3ӈh@#|gݵbսRE:2<u,r}cY9nvpx/S:4N$?Yݦ5@SuF] L Ӧ;Uک_׭oṳ?5ZfAtzG7Ɯn J YRT=QpR?-X^ )6Rw-4"쵤{KӼ("K zP7YJ_#)@Z+v8T ZxiIk;etN6( `'^y/2+ W;y#}!V'/ ) zjM8~KPU^``M/$[endstream endobj 30 0 obj 4233 endobj 32 0 obj << /Length 33 0 R /Filter /FlateDecode >> stream x][; ~drvׅg?8HO|$3v&^=BvN|%n߷Vna wOc-߾~ #>m6;_>X;c>bo-}Nɲ]N7ے.'K,~s>';2]Nܶu9qkrrb,ω}N'ikr2cΡc>6Ci;C1eb~SATyPUԍ5k!\yPW ;˃n<-V˃f<. v,uAvyP3^ҭuA~yP7`,:&̃ n<[1jfCb+V^ԝ/E`r\`'$ӠiiiqiP 4ԉ4 4؉4 4FggghDhTC4 ub4 v4 v4 v4 qz;;;`MCn<[9 VNcӈn吭 sorkOn oo˖?ř~>,C>3)i.2_~$ȅO'}BZ'>9]Dy8bVɹBnPEk~W_3Kb^dU>\ ftUcWdҼMw U;w1SZ |!1I!I$ӔI.!2>tb5RK~*yxYCe)fPNf߽xcQW+[^9>pH&_>LT135~wby51l&J!D#׾lNI;"nr ?a\tvvTf 6vf,eA-@14ΊJxfjE_ ,e6[u'l+3`hي L-jƦ b}NݓnHCʹƄX,k׀4N\oy9f{Xr~t%oLDNL;n$%J7Ϳ L.&-V$n@+)u1=2Wp)&Svf9]Kh8ZϿ~N<5D KIw웄Gopظ}#|)n>ېenw^#)ffW`;{&fY%a{,Bo T:ANB)4!]Idy Η”`@]_@6;b559i ;e>pDE_QOp#`6ȉ1W<$%Gb}nߡ.%avY}{fAzKB|l@” yO޶vՏ7Rjݧ뿥 卞&+՝_bpJ(y~Fǯ|C|e[o )ٙ^"oQfYF1j:f]k =eGf&EL 't_ńc07<>̳DA#/cm&Q̛,Ȣw/e$7bdd'@T78+r|G_YFP_ĈR--5OsWVFJG|8ga=ms^@HLb*}^CJ%21c*s^_DIܰB;VX E 'u^K`OVKPòV1aq*ng!؜Ϧyq76=c?~\^ he)e^7k&fn կ]S WZ$!_{WVGlMRA K熸+^ ٔ.4'Iͬ/Cdiu:cI|GųMxg5Z*'<~ x["?^)_6~ aaeGTqiӝ񲃨\ Qz$ 1oxȲ(}Iv?ԙ|4FgHH6.0I"l3:\lp`j3e,5!sTbLvޗGHu_, .uX iַlH *k7:oE4Pp Ctw^~֙EWjLVJ5y`oSSN,N}b u5ɔ׉ &UґAD/d"ϞGFӽN)~(kroS{mi7"hf۳IT+2W: X9Y=W=KbGz:!ui҄l,uv,]kiH6ݶGm­&mzƣhcџl:4!_k  X5w@/~6^#|]q].l3]4CC~Y꟨Hk|8+<G!KM=āvY &;GrpiET@Nwz[SmbxPq*PkX-+DrYD6K-i`᎛um/`6o)3 xDTx%do|0v^yUj^Z~yȜrSisڰA/RڙmH>v$u߆k YA͉Jf2oo1 妕,C~.rIXo |CȄGk~>zMZkeC ~ihs7r? EҞZKY=^4vspgy8`i5?!ƌW'sŠe q:ngz{"ڍWoU tIۋhJ(Y=C7+{&>:BmL/3`6@JK,z j x&{oJg w$SzJOك5^N: =JOؖE ?PTq-_riҫ. 54U$AO WN,t`9.+೬LA&f]Bzb,5ӑ{TI% Qp:lKE|p-Mc",L\fzgH>ՠYf9dwo:ZId$6}:~o=ʼF: b8 ~5BaY2 IuddYYv2eWK`=1LQM(r 'qTrow$?qFTAD^/)%pCEcgơ8":5w"ž9 ~@Q:SECq"Dr_Wt1/ K:GMFA;I:𨙂xf{ |l!0ih2~0OoB%>=o<p-61RwuD nd t>Ѽۢ4@PǣT.xLgK M_ސW;l$vdtcmZ?S߽9O/3儰 UK09Dψ$endstream endobj 33 0 obj 5077 endobj 35 0 obj << /Length 36 0 R /Filter /FlateDecode >> stream x=ۊ$;rvꞂla5x_ ]2%"kՙPT?c{f|?c{qӏhC4yg"'w6gﴝcٛ`瘘0Dx2dۦ=L1M1޸m6(3dS7jߧ(=!:s 3 CBFHˠGXKv>θ t@GmstL}:2 e:`\+0.St4X): f:s`a耉 :G^n/TY UVBPee@ X`_{, 3o7!F'k7~"Z0_)?ykҶEP 1 t`z7~y?"ņoUzL~K`凚~?S=Mhї X8@ܵ '(txd̏]Gb385MNJg0|'U0%7Furç{[l?]XS_z3Vr+X1cr௅? Fo `}wޚ5X K`wkh+jYLt^>1̘S.CLz;ZFxZ0T 3྽ ~1!+K 6 _@"#!ϰ6gČw9=#q:05^'&ǛNcY., kDf]wxz! 9@I בӄh;abbK]D*6\ʔjTZ &\LHR )ufR D9'!8Yk(ja4:*'x+0աRDGM X遙A+%b'b¢'% kDMzdjz3u,+oW;lV_ J{zވἋHnYo>&%췝 ~ȗEHhu+ Bވd\t/gZ7_ # ޔӱ`@@8fv -O4gK<݃# bΈa;VY(>Vb+ndF D*Dp$ ][_phX쌜zc Fr~oW}jh>y@ֆv "xv=N G7.vE.EeO|&k7T*Q]@3͞ާV:H=Aibhe,&LCo1\0"gMG\,_>2G EMvVWu6M4 89& 7)BIVu0F m!&u360b;:Cr͕{ X;+02dT _)쏿=4_~[İZq Bp5 )E2@ xbj)L\pUp xpsl"cGowah6E-$3hT(^m4lW;,13uYp.' Z}PBY2xdޱ&ɂ}=%9Z']/(FJdH{>ary0+ܺU X%-zBy ޺֫(o}5hPedHK5줊α+Wz&cS4D*yP5s,] {WCr^$(/975̩ʪ.%Pʵσ n/RK3}`7TN6Y=Ga*36Q'\l;&ZlgK@C]CLð(jÉ}Ϗ;47l8tMe:k v#,R5wG^7YAD.<ցbgy5AF5A#c- Ļq&'mMʹ}Ԍ7O,Fz*CЊ^[րT/hWa[if WiTt&a;%,vZpO~)M <OBjk<j'fr@ =C7;[|[2{jW28mǵ;7lvsw'(> D`ݣpI(/)TxI2 P7b$ч W1mk7׃.UC?ӸN͎b>۔N1ի:^sȒЀdg>74h>pE..ᯫ-vWyJxU=jG>-?d۹ڴKhKIBMBL䮩%bQQԣVBm/K>w5U5=V_3m Q bj sQfbNW#ϜsC @3'8;B "&"Nױ{&j1šK-=]kR{Ifi_vI^#$|NWԛ@$WS:R D^1pu_KesyR<e\rjkܰl7Ik(;5U(b֦WOɕ+ۇVi-7dLG?jftWA9VYHo%j oallb/ihF_҉)lG\-kmu{f;8U a4Bnf֗X fq86+u÷ʈ}iפs+`ۀ'ؕwOAˆ\,s^PĐTsx%u)L --v'lޔ(bwq2]*p[hKB;FX$N(#Xtm t.9$zeMo'p`/UO3%*QSRC 1\=O>pUI㮰 faCj63P#Us7]'[z ZW`'Ȟ ^oNNP7L4GDs^y?+n |ߎJvD:rw}J䛵>JrH8캑PZqtz7jw2sd?|g9rd,ʷht LٳRj9~9p\j⾐Z-(T%YeUM}U&_gUIy4KkoJDHq=Vj/^zZuA?|0JV:${ Z4*"GalN;z3pEEk~B4#gWӋhb'oG짍aׅ-ĪDƮ2W|e(TA;a--%h56֋/1]3qK "Y kw({喚qMeH%k˟W6uM9A|7ߌ;R"~ ]ʖirۼ" 9rd!~? W&TPb>f &|w Xt0g_n6]VQ!+»? I멬Ro({<`lWmiug-endstream endobj 36 0 obj 5251 endobj 38 0 obj << /Length 39 0 R /Filter /FlateDecode >> stream x\ێ}_` d"%y7@~ <_a]3uJzc,)QCr/,,/x)[㟗t/˶^>_.Zx ~%*c,/ŁZzps1 $\!}.0K ĕ悐p s1 $\!e\.WVK0ȅ!Rqb sAHB\\a. @1!q_7\Fʾn $\Ӎ| sAH)!悐pEO7RuC0! n K!ĵ!悐pn` B<݈ 0za. Wt#f_7\FLn $\Ӎ} sAH1!悐pO7` BµxV_7\b.WuC0!jn` BU= 0xa. Wt#$_7\Fn $\Ӎ| sAHauC0!Z<|\Հmf4_2aE墺j橞V_*at"-m'd,o7 @$YWd] ( 55JB$#&IJHJqH,$@=` ( $%#JB$#!IzC0H,IG0DV/ $ I"Lb%iNħEɛO$P'1z !J$o>!X@I3śO$PřO'@ dB0duPLb%|` (Iq">d/ $PD|H^I,$ɉ'X@I!xO&'EBg=Ze\{V~Xۮ}9n݋76{+ߙm-W&R#Ŀ[?٫ӷ !_uWkqם=;.7o-2SƩ{Җ#uVG )溌uIg{FM\ZfS97VRFPOt@1ӱV++Znѵg(1l 7z7ضVcC6zqZj`'ԂWj=O 3rUn.nf^lP熂#&hf.'&-}|7>[}ysfzڞ){]bNYEnS:+ xTaJ"(VR "OF̌<ʀ/+.% 6W_hjLVb>X~K3]\qϑ$%X[Ʉl$O Ԍr=&Hw7疔[ i3Ja8f+qܮ1%qt}D+?0ɠf%9Crs,74W;|IFG{y5gljI0I^ouVrO*+ yXnw " Qg8sf<"ha4=4wMWvH0KWQ}Scv ?> ݿ)\@gs>,GQ.q3j/"sgG #@d0=s7#Ҿ͍ .ᙚtFEqK?iJFN6LZf̑?Yׄ(4V֥糣R1V/jZnbvUXyMs(VW? /V/?f$Ѫ߇q;c#X+';y 3.VwTqWRTUꢅ{ժ?zG kze^X}ꥏS ;x3jugexV`?z a=QKl՗_:| `|+[}Hg|$Sy֨hùWƣh$\7@ZrԪssjF/} Z~"o n~ՙhr_߿,='9ECW K=Lr\E.Op+Z*W5)VkY++_ k\+#Fv8wH\pƭ#m=*ZN/g|p/~e0Tvȅ ܆%T# U t L.,B)L'Z(ҮFw>,tQ$ljT2HRzg ֐'Ȥ)_7;lN=ꍯWH3Kr6]o{f~Bol;f<l`Ɯf{vtSgyLyQi\B}5A:̌=C~~h(t;x3دj7C XO$yWLrL#*1d>k1А C.91Sר\fAZ@ hcY;5x> _-WO85I1#MBmi"}^)KYͮ^23iA#0': Ks={OZp9'1f8~B djwzDsE )=}0/ԓz)B ;xHm0C#i˔ u|ҮCt-<%TzP8컾0,]FaJ i1հ-\KAk:LS&lP,ND^9LhK`?M՜fMӉZH %#d\-C f\}V$i){ƩlX-Nh 3 xSn$7C#**-t.&/R[N,mPucMa=+"}N|FSFb~WtJ+?Ra`ٲTyG1Eq%ʶ3}mbЮ, uaN횾rM>a2pkokWpƁcKޘ]8Yhu݌̫Ll۶k<}ep=j|G`,ȂFgfm.LaҔѦգ6@]jǥscEfcftS*{R-.pSDw dݠ^Jה⎬[˯-k{nf > 'Шr*_mqr![Xkl#ԜtK/Oorn#ԵyG^`yAUn̝Gz~]}וz4{zB=0&\@6dbj[bͪ;ҳ챵 %zVh8^` VP21릯ꚣLBitMrkȔ vXNg/g9_hq=g_i_+ٺx c Q)3 " k>Oխ^M2;ʒrwP)(co͡mAt3ςgZNQʭ ;|Ȗjq2l^,)Q& %GfFROu=! !d$B?|qhG3-]r01.zjFl25TRڈ/RiA>ni?׈#yDqC|9\5<){/aFG_y{98gU/ yV岎B m'p4/abQ_ֳ j5*kN=MwmE9b,[0\mWzipr3BZC_<6Ը̮uD=CJ:۸EUBy-PGGGOwGU+ +Qk}oY/fӭYOڂc4c*r-W/y9\,bd&lsZ\й[B-z3:¤ƚ]^69`IcruJu"q̽ !Jm~YJ:*GnY)Jp ll8΅Hȅ ެ0SqiӧI.xyݮ\{0=p\MQ@ ^qxNOƇ7~ܞkw%`l7bܗLolJF;m-N8>z iC3/ň0S)^W|S[]Ha I\j\g[GgZxy`6MbTWG0y/|A qI3 EAN[ 3llC=޹ҝ+GBv G&L7/F?ozdI##M3 wc鑀_W(5E"0SQ-7l:&>u=8yݭANQxZﴕ7}/liNv+hM~zx6sgvai5i%GN _yEW<=Ówۋ0liݾkCw۽HFo*M-w7 "'ޘ*t++BN_oc]Jendstream endobj 42 0 obj 4085 endobj 48 0 obj << /Length 49 0 R /Filter /FlateDecode /Length1 1404 >> stream xkQϝI6%UW2&O t!jk-DN'G@ q{wʕn+(q.\x&EwwDAFBŠ`P旟e_S[/(gկ0|F[1w:e&&*_knpKL~>Zce?_7|vp5=ybTb$qj$1RS@oh_k<+ u l'Ϝ>;;5ypGk2sb{j,eo,*,7xk`njoswAM+%Ԕ,[B4g@`ϵ sVN3wec@rXFe ,ЏOVd71q]ۨOqH2}S\L$>=)JO c0?aJc <J #DO.[췐BejgTٳVs\ĬWϰ2v'}F FʖmonΊ]8f:{D*wӌ޹.PM endstream endobj 49 0 obj 592 endobj 50 0 obj << /Type /FontDescriptor /FontName /KAAAAA+OpenSymbol /Flags 4 /FontBBox [ -179 -312 1082 916 ] /ItalicAngle 0 /Ascent 916 /Descent -312 /CapHeight 916 /StemV 80 /FontFile2 48 0 R >> endobj 51 0 obj << /Length 229 /Filter /FlateDecode >> stream x] EC!i/0Qy1Ӗa6sıl #Ϥ:㬔`cg"2E{*5Svw uv9E(8k0دo~pV#1q9$r[܂r립)(܀UEQCu:՜3oR뇢., )7f컗R<\e-a|so endstream endobj 52 0 obj << /Type /Font /Subtype /TrueType /BaseFont /KAAAAA+OpenSymbol /FirstChar 0 /LastChar 1 /Widths [ 500 355 ] /FontDescriptor 50 0 R /ToUnicode 51 0 R >> endobj 53 0 obj << /Length 54 0 R /Filter /FlateDecode /Length1 5299 /Length2 35500 /Length3 0 >> stream xe\>LKwԐRCtIH34 !-!]* xB>^k^ʽR*2 A`Gf ?॓<̬hhenYlllb Gs#P;v66 *-@ lfonjF nQsS@[Y26F,?NFЃFƳg,h\FC *+26&`?rc'[s;@) K6Vnc *oe?ߚ% !B `[ ͭ& L ^q4271@$]AJFf!mAV6 %963_KjfF6 %!Y6? -_#ЯEEf p8EcX G:#ac661sq l3ٹ@9rW)V#l@&87U*#=#>UR*}82*{ \{" \/=pQG.*EA#{Ah#EE*r5 'dY!j |A"FN2u"eD퍜M p Dt/#f262'1DBG,!*'KHda./, d\yυX*9@ 5̪. 4p\' _8PҦrlU[?-뇘o!hu;^= PMCA0?X<d_@ۡ5$ ʃ`@ thK660@d\'$:3wӡn 8>{M'kCk :hsrz8lA>vr4١36w6Ѓژ A~Mj |PFN=WZҿ92^g6DRt@ Y6p0rc gy  vDqCB[Wρ^ǐGTH7>O?.k zuB/@KW{AgG94A}@'TÿЋ Bx?;~>FV"q02< M8}xqCl y(>8=BU@h!bn1EFrAQw#?ő线zG}p 녣 =For=j3@18Tt{7 b: WA R}Tf4[>~3!JJJKiY{@㗻0_O7[`Q$ņɨ`.L tŸ*`N OHg^SD㺈iJ?^Y?OF30 %Ud4}IT:0ʲR:~uM 3ʼny2IQ;,7KK\()S PFh<oO_Pd///2rI9{V9qoE93˽07ֳE?JBrZDp,fM'ܑ(TQtwP2^M,Ȏg"+0VRۜb)fyA%sLB,[M\}8b4u[cu+mXR׺_#X"(3p/(u9}w7n3J)8[D-R~QrٶGq:m~9R˧؏3c`9J ZM^I^=+Ho2@k%h=~꿩T*5xzM3`|M6h-پ.C?Kk< Ժ5M%LL'?l۱.^-688139Z>r13is.A1N-.\zx|n#HXOpLz/=`+ΛIc*_~iY0PrCj :vHw6`l \\=~\&hQd)jE&WΡ=}?eLi.>{mc߉'UP(JsT qdB W*DIr .6a=;uXd!\(k)4{]ԻoyM}_H[}7 H\`$`szV&T@p71UF/&3ӌ9!}1STSefP* h);hY_ ٮ!: vrˣ/;z\l9tqSUy2ljk9SQ)}>`KJ|Pg=ĐawgN 3z;wAf:[ ܃ ~DaSyzltcw{Ӹ ;=&vϱ,Ť0m{ 7߰<?WIႧX7K+NǥH,uf~yCKtCi(Qn'5e (emh{oeƾrNDΉy5ܓ=ՊɣR~-ȗ|}w͆]Q@~oCYyIyY!CYejU*OܘXE}5ͷLG۳j c/U7RqTRYbO&f ~#A/-ki8Xӑ:A2|@H|VDEAeUT5hRQ>"ruc 'w^Kyw*:IrJ;myMc`]iFɆPɾXl']8qs:[^YHY: }9eܯg˙r]pd#+bd'֭,8H=UQ;6=5RGz 2"^9_a B*|B뉲i'QmA)B(CLQȆT(@v nF#6 MpyYѺWښR U e@:,՗kG<(->jQ4=5׃&5i+q?>ߪ-oH$(DO~J?ȏu)5,K^2 xs0 W/TawhOH8y/W 0EiəkiLo}H·nDc-2Zv1N sKY%ޫHr~i,/u ;Wz\w=^ܬ?~7M/l6E;t0\B2"-Y!*E_\7R[6|q=| "#ck=zeK@Q~nz /H46jï q,c'hPoWoa_]A+Næ Mu%vڠ!6ɏctB]mGcZєI1pO/WMfv!}Lj9Hl0~_1 z>o҇/F g/nOew~ⷪ Yigo6\R1J37^*'Z}.5nGLxU5,@}"v+gO?(4;2*ǛZxQ`w{kǪ2wq@1ho/ `K? Ȫ<*cm; Mπeh`3=" ʺWPzMcR %( m6!کz"4{Hx0B3GrchPy;7:IȄU@pc㟦OY&TŇ:s cعEBykZO#n};NN=%yr6,QI!';]y O~tlrљN Dk h[,U,7X+"x|syL+Y+[S Y0 >9V.eWx=.]72_ؾ⋹߈,VrU# 1+1<~W\4ӊW\7ϒYz&m!=ti,* UkX?++Rd9}DE *{Iܔ3,5+gHNcmgIٸ9څbgs5 Vin'Fk e8wfLt;v?ץ<Ֆshdm^!PSzf1Uig/+}[ aZD,(5ud {t_A7RW()l8hDzx? +$8 cX-$rƒW6*YpG]F {?U<Bmf@It^o?b;s v\ðGQ^sƺ q@)H~o{UJ/x_&tVABGHrܳ驳scF"M*sD^Lx:6YtN+^}-ݐE6&ъ΢襬K$%xȦD?[(2.BUZ&7\ Gp*z95Rane3Tڴ)9BRuF)r[!hKpe©`oKE LG'.\ ],k}adIگ2>}%)Y#O4%5_qH,&!#y:jc| R__njy~EWa }-B o9%iv?L }7O7%ߟxt`ūsz=Uz>37aߖ.v75b➜>@4tIS/ .']?oixy+yYJV_ fpT|5Cf}I}"_" KӂF2.+K۱Mm0G'n9QSFN*YOqݲDel6 XTM] $4\'c[*Li)"+?Mdh6ʝJJP2F f?XINQ\fSolǮ>ooyOam~9Y% UT\ެJӳ$ gvyzqʌDs5[\lĈLSRCS&lOv%`lB b!ŧ9jvcmv5z ?Sݽ]]~e(_C-@ui.JKw"&[;Oe*|/ȔoV*Β\ղ*lحO9 +8$P bkBuCOZ0̧V!TEKL_z619umf?2Yq}_GVpv,|Ϟoc%4(85:DEd[ϤwרO*<[A>Qވ RMx8;JWx=yp|`ba?|B9 OTy^B٣Q8 }0D g; h/5KHǜ1/U{}ym/*WCFIPS:t^zMjT3ݳ_žOO5GH 6yaUzDO?:_ľ^]t.˞2u"ӂݸ [m񋏹HCZ#G7$'_ly.EDl {yz0} ezȧHmz"薞n%%d&->Y55 ?2"?8rFid4|cB?PJؕ)xsq(Q[n &~G'4Y27cyDLa㸡gLѯ]3Tu礗Sdܰg B{^{<*ZYӽ3.S&R[g'nQ*/plբ8h\aKh'co/ёIe-P@8\^5AHahjڲ5Ex* = j%̄"CE_L.!ͮv J@Гw3fJ30 b(˞6dPl9m{rl(4-I(gnkK_Q(aԯpOMx8@eÔo2U4PfS9@]S0r p)Gq.9Tؓwיtvm-<[W?cu4y2ΌorP")Fo{$Ua|qk)| :֒kՋ*xnO'U~j}dN>\'p2U6Q#elg#)Q>ʖ!7 5ʯ%>yboV|[& wJaUU{a]M,Q.Vi &ٽǠ:SQAXLų«u]6OF1'S`:daa3w⚷f!bQv{7KBZۉraG"&;3]4Xkølhۍv7+̠qDi;FnJAKAf#u;1@HfED(Eг?GpIL$-l/&:H3BVw"1S}6WCnEi009ѝRzf/2Y_4 d'bYn9-R~sS}Jnivۅ׬S9>3T{7)ſy_\MڎyBcĩ,uF7D#m?C(-Ŕ(Q|5ً]CymӚ0ѣ͚fG ЅUŪN:'s)+ü:A;1 bH|Kg6!j|7@H|5Vإۈ~u-ws˧q̿{n"u-˧"ِU_'1z̎w< {$HnL3vu[ ٧D+r Z2Р[Հ*^o#;_ډ4ROtR(_zf|AD }J$ bbi 7 qUՋ}8N,5UܶuW*DZAiDfY Z0HRßof 0>yOC?^+)i|>)mkf (]Q:`q! ıgk>aF,=U\ $2$ñc'3cgV◨񵜪e6`-CiuЎЙ k  !GvK&௯C 1e.v,1W)=^nzj9=3C& Ph{9[1땊⌘xu]÷6|5(l"rVݔHH^ ۣ4 2WE.ʵ=!W(7;O5#ym6I6 z$pg/?v!=[sj LX2mA23X¹'g)}k읏2*z|3QuR=`'`1m2% NCwWN{Y3Ii.K!1m9yヺA3'IVqW1]6%CxaҺO}VT1 徕ʭd,8-{hcA12K6 8Y^)豪ʒʊeCC/V%97!,4,>%u{m#kd$ FVoa0Ҕ 装om5c7h}ʧr\Ys"Mf[DtO*ɆEƢR2laC9[FiAo(8ׄ⫙ALSD_M)t{V9P3rۻ9}7|_Q)@Vm0**x%ӂy3KNiޔEK-hWCĶI @eh0nӉhvͼ[ޟҜ,FC< Q5?Լ4_i prkBWZ[9Z=߼ӵ+'WrG`?fQkzz<p31%섉X4osİ"㣠XAvFiuR\f Ox@ɄMLX=~p:KDa9/VS9 .gicai$pY#|Ѭ:'oEe K V/&E@&Iu3<^4j:CpX (r\?C^:e kWdY7~V.JF?f6)]I-'f$ 1\,?$L)Y*=BH@I[X|F-!.y){ t7g5N`[ ?E9VG= Lb"7Ŏg"iZ;qŵ%w-b 6c[%:"y%HSշFXrIPHWP1mrIv~ ҙͧS=\6;\e޳ȡ!e)D? VU f}Оu}zBi5{']سل_f_ xu P-j#NE6uo1&[r'ZDi&?4&ڸS6"K!v-*DpN#/% vAUDsP)nKl`Aڕ»H5c5Y$`۷vrIRf׏fw?oT(&SF-˻,c| oC`y'yHb ~lqi# :Et)SޝhLݾ}n[ճrձ]n`,z.lkHx\( 2d*XVQ·V:>5wC)Mz`P S)DCE 00Ձ,Um;\JT앺$ FM5/q|Ew?<Jj#Ժzv}3v/{%UH(}DJ)K˿)z!UhB ͮcՖ FR&UeQ]沾?فd*3_X`J~l'ddAjo||G% CBj 4ω"׽,|q="tYHuXmI z@KMn:ٯtFKiMeO&epڨ(T%>ZŒj88+=r<~,WnDoԫhINAsp7RM'l"/0޳cY7* X!;YY)(_$Uk{ ՀVj>3]f-(K蚑QY>M$ݿ<*uvhqdB\vZ" {m<#sGހ͓ȜR1RD#u# M58/OD(g,vD[47>?'B#s&!7p%pQx<%;:#5*V}xL\yw,)|@-xm|A^W3=L L/gE ?)\UVwMY͈s x!\p !rGmKy% 6~ar֫gI) -VZu/\DK|y(f(h8B9HLG;]We<dvT ZY^}qe7O2xKಳSm^Ȝ}S߇99S6I' gZr~yI_?tkJp~t՜­9L"|й*|X"T=VI%i<<%4夏NiӰBR6uUGghE'UN'a8馄3GS7$Ft?7l(5f?v[M6#D }}^co| +lĸ{RА-oP34ҕLېPFKi _ӛF\X%a됥 J?0w0٣W&U0ClWt{,6^x<74B;ˀ1nFۀZi 1~&"ne [\.䓮Vfb$ǀ9ԄR'l-ۘ{K<@CEi=$LO[9p"Ϳ%x:RkWdTa}#n^g̻E׌@L5?cZɞĩ #A\-yD\߮3dp_X%3=޿n [IM#=c>`̑^&hX(tzw7ք z[ͺ!:![ttMn(WUEbb^."!7a\̾w|⠓w- Ή(NpUTaتѹqJ-o= _vIZs'ވP+jɝme8k&O},Ih-TX)^uLys"qiE.rqUpAlӽ~dVɩT^xgHIqIbXlC_N5} ǶϫR}y.~*qdίJ}no퇅cf,Ϧ 7vJ!բ)l_3-wwOk (ԇZKCϿtI <,%-puǤaGv`;#rfAoX,= LUZؾ^Anq%UژӮhyٟ}xaF1D#@DJBg b"*D2:Jlav`;Db2~֌rR,WY3zQ s\ww6s CwGeWr2 R J=4gR_&?H GNϻt*Q'k>JG F{!Xё3NC|EWt=ƈ"HG@^V쳜ޞP*D ?29l?xLY6?.`\7yGEal_ gהsbGijyθ7p>רє/ mabr裬T5n'gH9[{ -mlZiAMPt *.H&"[QQ#BSVӎ7IS04{ Ū6 V˯4Bl BdwCJAPI0nL/7UGx||Līu׉zONYPI ʏw۴qXLG\. Éo) TO3r2CcQ24bQs-.ɋL?̬Iz3 M=:;{D,&n>m 7.Z@Kξ SْsVGgTƿylCo.罱LU}o7YZ',vU"ͭ@G؟̴fcvs!-2bie.Ea@^!ABK6(tkjTCحoد,'*SŒKEcʺ WqE—S+פR,de '{'h0\̣d 7w!OII @/vydwoduUޡy(R2plѕ~kw,xԴϜ07&”i|[?/Fmr~Ζ6:T]:>Z-fX5fG>(2W`ůQN/KpQZ-7c(k/^HEUNVZ!fCNr]1,j V jN,A΍{Ş6y i,ZN,<l&7?Pir+U$l8H:Mhr}C 'ՠ=ĔEQl!sV+?gѐB!K$q-~k!Gh_K e_mK~pzHk:^`L^΍8{,E1ykE @Ņ.$3I;Ĺ Dw;{w^_JEWʼTv%fHw+\\Aź6W{ s8*J`g^ʩ8#-V Xy1$2OB{p*ٵBFvzQ1FZ|^ iozqcϖqƎwU2ZFIb?8'ȵ_yYԌV*lz=/$i#p@H HZnb(Y1Vw[5zٟqDC*ŗ&1#?a<z ¯w^?q0= ١/;Ey c{iIDʡy 1ߣn?]1CxrŚ3SйZ/$6'i |p*_DrA :~oboKH SnA=zc ;XD{*5di[+$R&x̯-e _-&xM&C mJG%3y=hYL4t ({Fjev"tn#F("_T/4(Yvå(Ef|:x0u)mf/)G`I_@ e/Hj1 \@D^NN&& y̶"\qRS\+K&M SI.2 3q>>jy}⾀4މcUta)9&]vVhAV<"Ij# DqoԲo1_6l銧KD&$^<7 ס$Bt6ˁZ~&U(pVtjq¼lḽm7C& 4Ҡ-a`C{Oth~u9D-_ a;]s.6M|Ke{eMo(#'FbC]+n/yX =M]g>v'w70<4PkrV[mEjNON1B1] ۅ C bz`^N2os874OHH E. YmӽA(~ Nk uRɏt@AtxwQG،zΟxcAu o!rI_ ksh[lo5Yl/Vw6'=g8 VT("Ac=b$Y 8VO99xxISEg7D5VDΏU% jAK"4Ao4RMd8.]fC\Z%|hV [_O,^ܶ3b1hԤ0lXjVBs$FHV +%eI6WH _s_.~xܼ}iة9I#F/@"A+;&1)qh%dɺ5_:&V=p9eUGekcWst,{8y1w E^1ۂJFo~8UBnڷOz=UmC8,!KCƷ3Wݡkv,|,\fHƴZ{qf5O^kT(3aX}$aTC Qeu&;?cf8M֘ $1¤MP6ȝHS AF~ÝȞb#D~-CHgHH%;ۃ2%7kk? %}gpuACPT7M!?G0o-1 %?F9Ps{% \>Lx [>1uu h=M9g֍ZqP$rG/_[;cTfj~ujcGEinP uvͶBxhCȸp%S6Oa5r.~F0υGkxkFMu\Hq`Yf9R} 7U}LQ";) IUM?kf:r9%Ka-̛ElQ`I2C@CcO (Q;hVF)+/ڂX{GʣFq #^|#,t8c&(7&t-z 9OY H0#Bj[>}0"N6C,WU(cw"]/k0zj-zW?Եqh95HZQ{w'['y4n=HѧuL)CX7=1[2o"F!қ_IV4);o_Oug[1jw80F':g %ZdfjM^ 5i;`+azyL1b`=.cJhRkLGG# {fl o3:z_FwAdm#m2vze2[|Hob_WAP!bd>jt;6CYfXJͿ "vS䎂LX+T7c %W3@I̐@O8~c0B!jIa̕8 /z| {= /yOP7[i޶?Aa:i -RsK 8tOvnkg%5! U$:ƪޚ 9uBV:Ps:eW(DSB2Q:p_TVmQpXܞV.gOp|' VKN9cZtH[@kك ЭwMu= _Ōk,c ZZ?IsrQd x(sW[ rdN? ЪLYQ5FBgKXEƄEƞs ( DmJwYp#vM4DD& Hq4`ǘp *ᶔ?aaŪev+IɨizCfmƏI+xvz &6[$8u sjq7vdžE; *U;yShH^>+нGc/;_g[6#4*\Xsz0.+  10-8UArʝXTPSh3כ$ BUdx\ضpPx$ek>ueG0o:9jܔ&JсD}НMjz# Db1{*;x?7" lA]T w?ryemI6Vo eB)#?yK[54m]B! ɤX/ o QNkZWߧ̝ G}MNusmZTSnZ%c,[a%>ց/ )š(}o`m>ǘb)瘀q߳#,|!LZ/Z79- n,Ǵ.Cp4O5+8}q1 δ|I Z>B-k#@JW/~?L+an̔(7@ b# 0xrN:# ~=R(-R}Oe_Ǐw _5DDFN)ΰffv -+\Se6rAyh!Rsd9oF:] -De$荔C8c ϟΠ7c[94gin3w}Dm=S\>JS:N-YW;Dk"rtmoݻsz̭*dNEݵ}c6!b w/5}} )/*-dmK^ؚ{U !tEBr3*+&o~!+/m_sy'Ʉ2FW~a,l"tG9ͮAxP"vjH*HI@:V$a"4(ާ2u?h16U?c U+LF rsȍ¯E[ RҠ.E@||~2 rBRM.H<5|vm >r|Dy癧}!75ĝ/1'=S׸gFYfj`~hwk-N=eV~f]wp ¶ig1iB$Nm*=fh @܌.=ummAkсiud βPֵǒc^E5(|#@1䧒K}yu:Q$Z' <SZRtp 0 ;YvRYC%,rdazu Mk;@DF,/ 瞗cQ8 '"k7lcO-l xbhe~T꩟9?(X N^ԩ7i:,,WGߞlpTwP\*&Z8 y׿F7k'6$%D5  (.RjD p!0.;TN#˚W =K0+ޣAg,+!KVߎJ a@FVi>d6'؞sD^hJIg BPDo ^F0-d`Q4r|"^ h*~=^*Q@,*ZNk,4ξ?ҙ>~<,vkV% g+t^OMhMH/deIYpH]hi!p|0ϙJ&(r^ T\r.jEA^ar$ݕmğlH$ +E=.4$XP@?н ^ \J$2}ڍъA&vfm:k 73v'09Ԉs;޺P۷lqõN}шeb3[i+vyM72J%OFtߔǡ>e;LIZWc GZBvid v7.ZÙ<œK[->C>#?A8`WRE2zGAbXO(iՍSFb\[ޤg@&$qۊ~z%+h a;ʼL7GFe&8Z;IKŻ!yws5L,pl$x_{L4 YQ&M32є"65_350J♶#:er%= lh]l aP|oJ 8]A-R60D1,L6#t6UL@L{th>ۿfBgo t [EawɽPf,ؼ&an9il.H](/5އو 7!C~W-RZCl4ObI名;k>֛XZk*ڹL8/6MUGߣ4)yK HKif56P`Z7)QaΨ^pGDОb!+$aa\'^yf`Ükލ^iN 2h}.2,yiDb<K-vuT@D|Y+Oj T (~Ew[kOw(#ާo.bD+W?k]-_׶DE/a8+ ܒ ȷ´GMt aODSa:t (T;ĝw r7D5'Ē.0Ҵ#EVyIV+i^lu/:ќn}颵ʳ+8*JvW'\^J8F n< zT1m$}~s8P΄wZNɯ 5)wԊ".:2VR#.KG:Ո o3i固ljѱ$ɕt&r%Ĝ/T4($0ug #<"gy4_Ĺ2aqRnAr* H=YVp?<}6 @}sɧ #z%);$0"]9))U,pM/z>wi/Nq,pBl4TNhHgW_\VC TȏA, m%;`eJ$<.T$f~q2@"H襻vN].lP:\QJZ%srS_ny' 'DPhU{$yi=SV#A%8VN6)VUj$P aڣ&)7 zxǘSb6*c"p(]<&Hs#80'5>|-ntI6 bITPi_i?QK~IfLaS{w=/W2fT*w\&pJ"x%9k?Y=_)*jb$ _6jG4f͗Cw3IKup?ST{vkIZ6`j9lX8Qͭ_QАg2(\o5&t߭W~JR][2z FG꤃¸3hsG(rF҄!1,$雥QOIU!][,l^if_M:T.Uh4is/2Mnvw}\mn_EՏ1Yq _ү*0,AÊZk7HY/L[L!C23bL-no=i+(}+vrKWN8{G orwY$Qm F}rND%FdZd@M\U[ʼbEǧ<"\1[}HHw׿،{V![Px5:T֠<j-8x1TE;l(C,TP 5~H\L(& XJ! e50j;sqG7'ńћ] SI\DU>%ry:$o !Ӕmh唰%(827ex>3λpVhԋRx~UG/X<ЖZX2uRg ie C(Dt>:+Adr3Ea^YW/Xӿ ˀ>mu c }^{:0޸ {HQ7XdD D\sG8 !*pK}mې|«1M<꾊PRRiS$; L07.T 9 iM$,k%*~),/R.˦j@C{uLWT8-*I]Kz1|y zʝ1ȗrYģQ҂ HԊ~GL̢w2IjuwhE|l cftX!K+E̯2?D|d҃4KOHz&'Ns$Q9Ek (ş/ȍBHkvЋx! ΋#s 8r78;AÑ["`NheiE,KkHz9AI.a~\sQe7>p"aʍ=1+;Vg%N2?|N#b'uWFwmOI~deHG(id:ꘆVRXJ1E+y)Əq䤺jUWgFI(ȿ|:cuNWB5y6H(--ξYup6KВƚ@?Yb8JwKݎ O:UTK;R'0L`HnE4,^_tIWu| Q,#UzW?vg\A)<;n0l,ኲdz  ,#I ۽3)~<j` iv䮨,ai.I^>jd,.;uluMX;d"KXfq~tI󿌽hu=Ln#*X<'JAx &:Di{w$ZsuBAPﵸ< Q~L\g6Ցts-Qq,y;؇)3H!b~Y2ݨ;r8y-|eKIQ(6_)\x}WԍވܸyOA[1\LfJ53UC Џ{c ~Dv{D~Oˏ AтVV vž:aH|/wlx-$9[X^-JK C\|{CҨ:#AZ}= 2+24X O i: *ըAkq??zs\(6NvPwUxxWފP)/+𫳫2xpdO'#; ̡ifx/i= xF$.Nofn ,e^]ǹ`5k)z8d4w:\mu؊~Sl_#8h|? k_Hb Du"X0 "\v@E>u/fS5ߡ~_!,U~\kePa+)#N&=L c&Fù9yx]w{t1˒ dܶ|n6&W75T#:>}[yo:jX>\Terw _)Hn߄sc - D[! ꒌ&Au"*ȌrCZ~[6t,

v1B9@!M\(Y|# e~ɓYyXb!Ŭ/SAy[YL,P10`ʉ 'A "<HA ILؿ9du.؞yoRɺ2F \ETH2pϜx<̆ݾ>+Lvc\?QPGدj*xFl q0*>PPlFPǠoi)d $tK(B>4L(č΁y+N|>w725M0^HUU .cD"Ӷ{!ueG:%jjNwrQ:K`z+?J+=*ލtp;|!hX;ȣ}'CʦS ԴʾήŮA7 1r^o&qC,-}(9nWKh[M? ɳRHoe;Pi9uOQ˱r3hP$6U22x. }4z!JT󔑓liGi6yiT($ û*DGk;\ݓQ&P*Ǎ:?\#Y#}P@:efeZ컴*_|fȔaOeVtgF 66)%2/@QJaQh. ω M-O~8tp5r0c!w#Tb|;IX˪2PgO|n HŢp `ǁE5M:;.ʪ]v~MRSsٻg=#X>Bm39"RE)8?F>0D9FHAcʯۇ[Pa^xN p S+5*̡:l.z*k,W#-fVUsoIK` ֹFIRqݲsď݄I_w" -{[4"LW~ȮgA։u(Gڏn\J]$KT$sq* f98j5!%rϊÝVșrh = #V!)0#)s$ ~,K'#&ldFNC$6.(7PmLp4Ո|-Zw<$GkOSdx&'hsl0yѴg2>_ ]o/SP(_aضDrtvd N &dHvk3q?>fK{.e 3rZ`*uT)Omy)BmKM3"m*@~OLHJ$8ibBj `(PMrsz>@Qs~|][`NC7S}`cw20\Cn6>:FTfnIi>|P#T K {FL81wh~|&6.Jw\=mWIGJUQήX]҂۶_gmK5.}.]D͓¨ovUV?+pEj\.=0Т?ڀrYX¾d/q 5=x^z|>۰|Y֪IoAٷ2TG0$e}KDv5gaVTAJtAbj,$ESĕtY1/-N}Nxy#GT\6NMfQi1޵)T-G =z}@䣟LXl,r<191?ybnB,}x%ە*?ΑJT!CM+Qjԫ3)EhIZ1v,CK@_~!}9%K5VV;&=Ru5[mZfoS<(2IEL% ՙd#@].&h{$0GK @c9m0F}!,_s  ӿ^a uXSgKMC;$ zcɕ6i' |̌Qu u|fF'ȋz4ZwzejN IDPdPaqRZ@]Prɑf??}d딬qG?/FVl>4RuA6ҵ4ׯXe9V_ NKuuZ\5GQ QzeBrb7kCD{:D.Z@y֐" 2}ٍ'K D] )~Vn4a@:S+\]rs% $YL֭阋ݘgMkC{tR5Zx(ȱ!R_= ?H0kW9֗ncY9F|n'܋[~<$́`C g [KD 1Yb4x!¦&j4*vUԩJ $z23MCzUfN7ƕ| uL42(5nov]Z f[pJsכn@KWUGӻ$ HWQ$WV;KDeCw0ϛ22]]b!`I:ǡa/}1+!l LΒٖ /s*)OMHY1mJVg$ ̘KrɨXă \10x6: !;&N(ff2\܎<]cQ4I'd(hnY6ԀR$;Y>`Y69tϺ܊2/;Qʥ T^c43|t;N,cd*1r=t + ־ߣΎK%)lѵ}J.5w [ԓc|AtGlh ;붹nsB _~*^Þz^FoPN@) fNJ?,Y%4,4?隒EBuIB|R4,J#M+>v]iTw0uSFpP euEPB>\X.fgi"kšju}{n~3zj<A?Z/d {P&l+æڱ a|{xG^Su@P׃@)j[MuvƎ0b f䗲zR":] צY ȕiAK!4aД{嘢_ Ȇgqzۗ@)HTD*UKg xE挾'{5N>@FY.0 @NtH 1?o@J>x/Y.h=mޤռ-^nMa-F& ˱9S{@֖g}wBI G)c*Uk`M8'ow0Q8h,<(}"|Mǩbߢ'B c⪲=X!5*YR]$ t%S?\]p~Ǟk+V3˻gbva@ûzVO>"`Eȣ_NTsTlqCҨ[X*gKEL;Ֆ:SqUGr)QS9%A-'P})Cjd6F\;1\J2 o__Ͷ_ڔZ&VX/}oa nzth.[ɛp'3i>ku;Vi պo.vU܄ԱᾷVX ?Hr8rWl_y&&¶|~s} /_MLQ2D 01ynWws,o\Czaa^KHՏx%biJU'gJߎ=WAcu ׏iMY'4$wR^c:!*&#~/ux_55olb} ޠ'yY:#du?09¥&c+2\WU%.ۍ̭+o`}c\z@ċ x,L(R D< ΪeQF;j3gsdzd^ .=,Crp G7R"wm'iT}j'`ްX?. GE> endobj 56 0 obj << /Length 1126 /Filter /FlateDecode >> stream xen*G9Ói-!Ku~|L@*Wi5w뺻?/Χ[_t_oG>z|?^[gvzu42bw~!}n=mLeV}j~>ۯWłiOϛ֧ubqy+, KC0 `)xW00*DBTH YB%TFW18zy?.wn?q<561 endstream endobj 57 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono-Oblique /ToUnicode 56 0 R /FirstChar 0 /LastChar 255 /Widths [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 55 0 R >> endobj 58 0 obj << /Length 59 0 R /Filter /FlateDecode /Length1 1346 /Length2 145230 /Length3 0 >> stream x|x$-;cv2m۶mgm۶m7==OU{ލU$r4FƢ6N4 skgG[k}[)cSg_Dw 9;;uR2s8,F&NV#==8:pLl m m̍m z@ @JAEE_ acGsSc+[K$flc7i"鄨񿲥gg99q? Ells'Voutk'-ml]m$MB rin  b)P8__v'H.=ӆ(#جQ 3K{2CՐ7?Ǽ^ՆnOR9ï$6PW Q3P*[<etSX'٘S'j.1dhJ""r3:.+ )vD#0v;|S{dPusϪ%C؋W#w9=Qm* 3.;"E"2`ܰENk+du1CI#G ܑ+D>U^HCzaNg]AWCω==0oxOy D/>ia_g mk1qݵeh O'!\۪ ro.q4 o4o+vSIsB*4ZtK('m菂;+=;AX}ZƒY't\n֍SY858nr* -̝SX}iFRDUxyzCG yLǸOux` 2 Q[{,w뜋'CϯQ=n: T+='$\H[ Yܺ|i 6W+%˥Bʉg{AAȗeRW1TA]9JVA3Ht&RByw!Ø@߸ ? >|8bku[PF)!dב2TE*}VN8:-uI TxD }퀟<"bwVV ȋf)FJ&ژye0En wLEh1ߨ* ѰS{N ɫR8lb:ƜrpR_U2*.|Yumm6z!vu {'4 h,?S;;^}pN$)ATbyDiٺRL7{u\3Й: *=@w7[Ҋ48|$*YOS8_ 8^<]1e@i3z (v%ؑ&BQ[3o,O#\}"đ^b,h#;f*0na(Yb+hqUJթB80X ݟ% cwZ\Zc%W\.y ؄NoS  `̀ݙgԊPj~|K+4V@R[4m 79\|J&ݘ6񼝯{je 4B}T>w*?Wl(80ǚ-Zw Kqq'O#SZ >ΪMw刲o%&LF:pn'1~aW 9Dhsa2.Sx|I?"NJ9mƗ8" ʅU\ 6OѨyF;HK+=fHx\J@^*"~*8[3һMTk6fFWa]P/9nI+@5 M~h39lb|`{ɻ $5yU藯`wކDekhXjNCzI:*甎&z@R$ ?oI>v">J9$>J@0:TnbQjs*ͫ({t@!$k+^& J)Yf~&F.+eJ\1A.*[ 2z|\:ץj>(R/9xXmí'$# q}SV;bd1nC[7 A!%t]/i ipP^$p֥~ GE"M;53b=>yC-i\,/y.Re/Jhh&x/N|#M>.Ǜ4+rDW:9v~ hTM/š)0{9g=,AȷWjLd6mw tۖ} kezHabmK0z ґ4#,Ĥє «{f '% r#V\, >) eAy9~QnqiE6NaJA'~} qȢ'K!<6Pml?70hȝio 7P 7t8ണ9|8L!P6XQu07R)bW)MkWdҔG,ODi'-};`&iհc7'6ɫ&"@)9:x jNBa=j\F6[Kfp>Ͼ6Pa> b067qs_<;)T-weݢ\~T!ɕK ^&u*fY.@d xmX)S{TmiaQ`@*ǐէKj_1@DsC,Eq'i}ɒga"ܩ_ !4I1Ժڴ))dG2s/^mCWھ莐_9db:))ӝ-\__Ղ M~LGq];} JEE,bWq q1{X;`6̃EǰU 9.YC֖ A.P;6×Ĕ^ b?!9-u+Q27)9*Y1M@y0un5Bդg3\s뇜ɣb=muQ}$kn (?8٦"ąF %RbAJP?)O*2ɶu#YAgDN~?GVz v. xtUWY2,<+sz3]"!^e.'+( Ĩf\2@e`I{lyiYaЌ70,Q-n.MFQ1)Izĸ5F"%{Qhn鯔h+.)oew6XEk}ms#5PvF  TK{s l2yh243yyv2VvX>/)YwE,wRy7!sm9ꡤ)u~_s!A>h U j@AJ!11)դ?k;71u6~bNtNYy=鳿tP9\ M'%5a[V]][`{)Z;༰~?mktۄva!2i 8+ꝭ"H;% q"kE%jR$3iu{gן,#Y]TQ5_Iz=Fb7 I p"Lų$#쮿ѥҷp k#@8s]q*EK9>ogSx-3ia1z!8ETuKz G6~rΧBIR{20~OȞJD5A:fK^NT_b?^sʌrX( bQ*NPgBf؉RP MlhL,n։hAؙo3Xc;fXhp'?娜GIWu:mY8~OqT7G7g*N(p1(Iz1GvkةH3;s)9A q?E|tϔ/E ڸ[.k83-8&:T0KZű湶QChBDSc,, i ɒ$UI61vs!<E;-1b[JT;KSC]*>uLIM]yj!*}y ZgZYI1o] 2h+s|uȟm^[kZ@v ^8GQL0lJ>i/J$*^=[LR%n&hm rpzwtwuSB Y^a)#l_M{)?~=&Iw,?6h6WڮfIq @ܫʯ>o w)]Z ̇~iEvPWU?Č'Y?Uqx>(A{^3="E_/5Gè0a(mLh ! Tm*o6mHr-=ҕc8Ќ_j |8YraYv:Kަ#KeOBW󨟻R pE/`MՇF8jrVMAxty~[Hȍ5\eQ띲6M6Ch  *n,#CTy*thFrR"iM RMlb^H'}@WZuvxf j[azh43VVLïz+cM$u+v%uO(>< 0Ea|8zPZ\ڮaqGe^;`x;|?-yx];tmFͺ+Y޹x!O+ I4k"ͧtV?//L;_ܖч*QUSlT>j1G)V-Sd$Ml1ܣAZ=Fd%?QGc=sK`L5%㍄{Rһ{dv M ґcH1 aG wG>;EM~ƻMy,|e XB~W(T{_SNTD~W3w"md) `Vuq8%6es0 zve'3y!-2^}($xLחhbs@~=YBg͖~k5vGxOΛelIhL_VH`y:nQ(sX}#JCn<ʏH%d2] ω_V+y gף1K ՙ&l K9fG$!ަP FLi| ,Q-+,osYTσa%$F n?:h\UN]Fˁ5]/հcޛ@J$p|vSGJ;[TV {}15k5SW/24)wCan _R{/g:ln4ZM#v;̊zGC'`C 2QF dxI/@:!IAg8JVL;W7%mhikXnV#)8͞"aBwĊ P7k4їnP&t!lөy?C{o>172m0FְuI':|ދDuuX>P =? fR7 Dd$Q2Y(=`˝6U=.#Z hJ8\@➮OKim8*S;}gf!&}cY"n[̾>ԟߝ w4_cG#g>rv?ovx (w̼v3=d`>mmz Yg$?:-$b ɱy x0|@OhENp8}3T'pP4+ ԏL4^cJSe_Q-?ٿ3 ARlC<$om ,'J1tܱE"ʳ|(-YgejKi22h=;?)BI*^hFg;+zKåК,ׅV*̋iYjhSx?AXJ .ߐƣTFK]^&3cÂ+ȥ,\d+lq"̑FThG[&遤" G^w5}p nh QsӣwXͨ:Q@u/|qDJ޵<LQHg"CCf^"5xʞ \suIegQb r8&c3$ ̮ooJϪvCaK*N«t~ 0ޘ2y 7]S0{JpG9ot)˦)oVKM *ɜ~; nB39@72yi& D,s4:=?Ou2T}Pd:`<6- ˌi@e9QQd7x0?KIQ.V.}1ϋz SZ-*il1۩SԒ {E\*0[i3jb'8\ISH#c2u1SʮiwY) #Ϸ ɳFI|c B4S)5Ŀ 8``bg .g{:=̗Lf-n29h'-2z_ո!+ =:Z~3)[\b />~Z GKx_AROiu}恽Jm_fpLgL eǦ:̔ģPע_0˷51un$Q;q>mǕZj{2 drHf[sW:xEzAӑ7,?5GԌFN; !<VOg;t&e9d-ѓMo SJُKoiFW/ՙyhl<*JߢˀPepF>T7~d0f\0M;A£)"q$ ȓo͛0p̲>^&rr˵uH!5WoRLqp8 z2̔nNxEeXv$z:(}gR""Բ 3zJ0_poek04ȣԸTf_Л߈ۧߋYk kJ ꯇCP l;Fħb$_,]ױeVqC l[OhjU`%_1xb= /d^̴TjECgSrq)U/9d.v.ܲcZ`MVO0/I?F7!Z o-_suDŻ+@1}EkE6 1 ndU_3\#\ҞD9qozC\m;tڹ`1zXeǛw#&$ƟP)h(x|E2(sYQ(#&uBu }C?fJ1s Rs(Lg &o9v aa%}Š3ϸQS { |V#03|Xjs،ek8fH! wQueÝGy1W~l-}1R`z [Q_9[rah B^;ή%+/ܵz%" =Kz5[-#>y/ 9)guGGWfp xw&&Ưsm0$Wk=&Η |V}Q%˪4c@4-}P$"u[6B3bt{7]Gܩ ڈs^[:Xsm%JU1+z$Ć9 +Z'`fU)g/&@નGd'*3r" _4w݃ %CpP[',яcIJ{ƛ!`B1HCj*T:Rƿ9o rHw#Er1tD㞸Vu83LLȲ5N&CbXOba-O3yҗ}B_]A).>S*n4{ovN8`#.X>D3%ޙ=m۴M_)L0i`Ot}^bLۑŋbҞTpbeIG]Ckv/Уdy|oڞaQ& ̓c㞯֞W 3XQta\q88\'4#M B(bXb-`dzރ E4ՈhGl2I |\~p[ Uv vgz~Z-9 .G*!'IslYAw!SnRHt ÎNDƈD8CKy疇{lSE?>(S (Bg@msrKuh/B4F%P)LUgzK4 ;ݹ XC.mSgmOX+QW'ugKq~a]lQjkLA].;o|,Vm"u5 Hp3oAokzYJ-B~Z䥎mw&ˌ ;Ucl ֝n!Ǔs׾W\U}P*\r4EB y_3`q%.wScisD5Nz?BzD2ZQInFukl9m:FZ I''V:G9=ƦIϫ(e_϶Px˕Q5{rbm* HHv菜s闫-Uʜ6r}+QDXk+@WWH&M))os`oWr_O_⠣qpsV$f ܇v]rbj Q[Ouw|Cjܰ44Eې.zo*L7XO*gs$"&ޅlG5>۬t;."^$> 3N<>JCIMh^8L09m?4E s͇V$Wi m륨aT>M0˟j4k=Q2|oezV)a|TT[$,1FyK\lK 챀SnY*|ʕj]x{!-N8LfޓYsrqDH)Q}ͳm-Z &* y&l)rJDtnc3zΩ4 '`-mb[S՟5np4fݘk k,)nȰYZa#PIm;EyC *OV*KOfTpM$=bϝŝ1t8eP?O$Pz쟷yBbɓuq)P'VyWl?<' [Pd<"N  ;,DaA/zhH`1m;4.19A[wZ$lD<iZp"p!)Q9 һI]0zǥ+#wźz)&֣~#$PYTtlW`R#yJP\@vt@_1dǫv/F #{~27F'ez4@G.Cy=•9UL2$ : MO2#b-7674#ްe;u3TK yREV]pS-u2RjVʕ%Q~ 3Cd@ ~*Gi-wI{z13jv鍳ݟ>mIm*d*z*̞oL:ف40KcNyҡOU2y^I+dzy^;âxvLq݋wɼ:!V kSk Jkrl1Gҟg>U6N>s{ܡs]pQ'+;-3 8c!/`2*U[azRX$حXm{-8׃Ka@QrqۏEmSTgH0U\-Ďz0El _A-CD*II }y̖V5|x=8*$I ,^m;Oy'I,3o`%ưr ЕMTiEN] GMԍx*  j+zʵÑ]BWw!9aELqԽti+7H 7.Baap\ZZdC6Zfz+PCwgо1cE LamZw8!DG(ad=pRQ&V:֠Wdǜ)yL^є%]Vfڽ QOgw<0 , M\+TE:.bю2}z*&[BCatj3L[Tm>g a6Tw@H*cz,vdl0!Ѵ􊄡c,CX}x)C*Ґgv2n(h 8zXU4r+tf>#.f2Tuݻ C2rol+0U  ghw5Z+ L-`3*wg(ܩѣUc g > AѴi4Unm1q,y5b) v]?(fgT O?1G"Ic2N{M@4n<!M[}`s 31& ^G]ua<*vNtTsC";0),7}#PH*%)2$)޼ū:*98yXh1Cr%ݫ̳O3,[tʉFeDzn [wŢ,ڰyQ)G^ܔݧ`ǴuZ}=8Uif5SSe6XAޡZTZu\+pILSm^Z]$̿ m==N ͧ,մ*JJ0H[)P_ZhugҊ癔çq<&˨ܴacA1Rm(v;0 (fa RIMw[~YPQlUB`5"]縵9m9"1^$e,gQs} MH !>PS>ΚىIһ= fېX;=߸o4 cgŘ07nės޵HS4́Qovݞv! S׺طof2`l ~Nڣ@jXkNgA1%7v͜6~ZXay*'KAfFL",hamzHz%iX>I}.;ф2K%-爠f/d_`ۘ~wDU06T<GNR'B:2o2T`:,}u|'a]W$hڧt5W2ȀJ L9P}4+se'ZBSMm[l@$=bb̾T5?6#5I"8bKܲxQ+|.iahwm?sZ}Ҷ @ C$dYTT:ȸ(GT)|7z5m ނKt4:,El|lFwb++暭[+WgnHe+#t=X-/}7JM7b'!"c Qq`p|ts;px! }@x,s3KuɶhhI;3kkF,4"p@5†S?L[xbxU[x o{aM0˟[D,:voJ <ضbY 0 ijP,iU'8eb7^(AT}n19oN!f)pK\Iyg{ԓBU#09L'&WgF$ӡJ8@w42 $pҚykjN0o7~3;p.'⏠s s+#N|zQ̀'9^p.}zJR LyOňӆt}. kzAe;r^@Gg}QuTfy &xfǹ ?I˜sR5$ ss(?ޞ N HهAaoRMFsv1^cèB#!>= U@~e?Q[/fQM/٠G\l}!U_Hk)+4$AZn%([/ ގK2:\C!h79혰5əsWQҭOLl0WjP]_z:r7MB+Ē$ t|M8,ɎC}V qxlz~چX4SO 6W2s9#)>i|VPIFKĖ쎢x< b}F<άmß¼jH>v"~v?:S5eusFie/_NC3~+wKZ諊sb>HCԼ$B0*:dxd *ŅQ̗fK0(mr'UnUmz`D ɍ@$6Hlfk zq#3WDmTnPp>_ʿ#sg(NsWj՚x71Ov4'&Cۓ$97J4.utel,<K]Ylo8+w[^#G~E:viŗvҜCzǺWPF#LA~Ya{:G0rffRXly!}3\,[ziқ+"32~] d 'C ǢkIvoLitEǟeIl|>bSpBa*"Aтc @# N 4n4ڈT-ϑ<774=W.+P+7cM :պ^K>5n}k{J9|tWW{mor%,|"s| oIs\,@'b,G47 K'?#{>4RyWO GU3zF[|u,f+/V% * Wٳ_\kC~,3{1AQ_5eΠY`^=Nxƹ4L6g3K2V8@@G8Wћڣ#=#3`zAeMv`8P%[rNv$)$9"aţ)se^Խ2xRA{p%LJe= qqjMtw>[*{!D\c+iRG:_ p#Wp "( ,ĸoo:kּeyo ūI] 22(Uq/K r>g 36N9ϖmqr"*KڡKTvҳM |K{~B$CUUv)k. u!z7\L8)]:L, ޶2e!"dBI p <^BMBϣEr߆7 B)$KL ^\.gJ?|EG)뙳@j~Js^ ~~DӘD2~vȳ" a)Xݴ fSSY{(޼nt5 auNb̀_֘!Cn#}, Gú=30 !yX,ooWC"׬ΊAXAz|ln\p5V=iXjI!46fM 8?MHl vEĄ9K )d;u ^n9._SI~*>2p0q# ܎99P8^; JiR)=h@H B pn{џnQDEVU)+)F-._j@ ZsAo., 5=Dg&RJ3B?؛T"^vƗV^y[ГP߂},G^܃3Da7OXʡMa}j_s%e CWa˖,N.6 #!0ުbk9GSƬ|(Yu3smcy#b%TKX L J J RU+&j !gđT[jcŽа[nVAkG\+Mrf|Ͼ|:,8V8@gu%mI2E&ٶsWkACޢ[FF ByM`vʮ.C'B\Dqdc}0k_#x9S'({dn1}~(B g\dk4EU}|ƔIz*1xhkD2{&#ך3pAc(0$iű {s,+C_Ґ%gzozܲ@'\^M[jq/_7{ub^I .VsXv~]vz Wq>:ZocE째6^ƆB<Ӡ"E>70mՏ,0+]Rn{IEu#D Nh6_j 7L=K)YhΧ2jFmt#?&xR,5x͌hHRq%z>b.3;F> g#eL|Qi~9g3q6X}fk*w]K.7s}Cu}Ecuu9H'êğ: /,%Vk.,lH[ pC909h;-;13r$U& ";tٛΛzg<઼rmKx`EMo4O{ٞyM4=t:k' DhuJƤ w&+# 9 s+yt$ vmq8If W'Jۙ]3a)W? mHvʱmcwRe…/wP3sM TÜ#+uk:KԨ ȩt) &NkG M$EWwlCM9yۮFKRN)!F;iд jNJ:#=RE%+ڝ̛(uϔ@;#xcIҦG~~l~ V{0oLˤXҌgNĖNRmӱ16b!#\iĻin$)b 뺯72iw"Fn#)ԱAt }۫!If[=wzTl#hQTP[g]Z-]Z5r)?;[6+ J mf$ڱ- YhԪc8 y$ؼ6{o\GGL(56 )-JzL$ZQ_Pu"P>Yc\2O4--5؛XGgd7Ms%ˮIv%|MDȢf$-8a^s?d9ˇD%A v9Ee<̱Q7n^HJN uJjL%uNyzN c42dhΚ'ۂn]Y0iR4:@hBLrXBuCN3'ɕG 3U?>tV#EEvn'V0R!<Ζs,_9ޒOy1faUpMIJ/s<_(&&; !@(긕FUX&HYrD!=(]Z썶BwJW; בbPzjcMpsV}82ofJJ|Q]}\4_Q|-#-[SvCIsOf2-cmUI/ &`*p~$,GX- wD %;"^ȺMh@8p(2\r೷Q)z{*dicoF ;}]̀y.Quzq6=BtV94جKsAUvEɴjNlXK$.LUV wVQɅkx=ējMa{ eA:{yeDŨ賀鸰N;O6OOrM=C]aOvE߭U'bԭ^љFI@&1/qAhFaQ@mSu͹^7QAc3T 1d)*Kj+=aG%7f 0Bn'dsIzԋN`kC&G@1@ ;/)4k]*X(Bx|[apI1Wd- a p3ꅡ&ܸiW&&_&/&itVCcIt[ְnJa؈MO&3Tj-٢ "7[11A_Ksvh@o ,˅9vu܉FǴbBq q\x+whQY|QF k^.w}U֌q:Sb4Q.݅VoF}cq`3Lcz ~95.:aW4/ N=-\/L>ؕCww0DбuJ"sۅ:M3IP.$K3f4ʱnmf\,!9o-!DO"u }iYq˾QWn.CR/GN}norf}֪mm;y4— r}mM>SiK".Qw'#%\3BEemㄕ˸W]Oe~Uz lYOpКziv.Icbw[SIs ҿaӄzU,{Aޗ>9~'(!kuUnl'!$y2kmMlY}@e,MnUM-:e8 >X B Y}P ɓK t~rY|OVnHc!7h-$#HVVZdǪߓ0q@W#d/9P6~i9\ )>UlaӴ?Ott+v{\y3rHДUhMIx ( ÒCmP)~,{  ,AK#K¡}A z#l Q#%nD{¯>}Z޾c'7o$W4hQ Tmš7D}_hA9Ue3Uj(q˚d 8`\Nn!yuܶk[1\6l_6¼\Ҹ,[.:#kź2hJ)7Ԝr4?VW./؆2vI>s{.KݸINva%$Cῢmyf$ C Ò\%.7j~؟,"-ԁX#AԽ^'-XAX_k?) Y\׏?ϔG ՔBx%o_`.v{E"j೓eFAP4K&Ƽ\s4M~-RP`LSɃ:\-])c-KgB;Y ?\u(~U_gZNj1ǃV:{vsShZg$0W?yqadt[$ ^~ U ^, Űp}]8xP "뭺% ^%ͭw*tp3ڝЈ'20xJʯseǥ, \IBa#¹i+R NH<`:󄲌Y{;d{zSʬ4m^40a*tn1S@`ƥGq޵8--ҚY&Tt&(k\6 Z~B6i_}1L" E-KUmcϟ,lbvw48Q Kb@!{E@<;+bUr[4"S`:v-bɧl2 51Duo#,yR T1w\rcwH &۹V=s wS^!0f 3!c|k]BHV|g)UjÏMT%#A}f益&^6kkoW{8yRefťg8!c]*F3jјrcY7ʈ%A%wfҵң 5Y0JFFqK|Ox@@US29 B2?[TMoZ<),`lQ2Ej9>wKH*<.*w޹YGu>lSg[= T'ֲ/ؽ6{4~CZS339MfoUҥ|) @/يx Y-&t35Vx]u؋ 2A<m)#;!pjT;"4vFdEwWIb8D)ڃHnV ]qJ%t 0G!m2U!@RTȞ!l3[AE>D @]O2!WI;Vt; '((ۤBɼ'*!g$ÅsQi%u۟9H: a>|ci-6ܒGrlْk]irAOg C^fwWoKG8r=a/cеWꩦ\GyD"L WEEtU8z_1子NNT:Gx_#< PȷK3ùF  /H@=_v< JXnyytEŠUj1n2{N+Q̙!e:3p.L1wE 6TV88e(,p[. ]硳uɇg]r$2mض -/a"]O?T4N=s$]@rd9!ks41cTݬzG&IԒNiچ)"} "X$L2B#1SiΖ֝B*~␫Qh1Yy3́?D xo8^>n3Tμ#.}RP6ZdQ$}YF@dXr#˧y ԑ"ҲI _"sxIC+Xw!jJM m,K>s3U:c UQJ1]$tB D;],G's2vAԊDW3sS0~]\|Pm=T|[,pJz3A@5Ki t@:QWc|(JC嗦ÀNv6VE=Gב8oټ=Y%'?ba?If"3CCnM)!2r1?bqR [][HrhCK֒‚|;R > .w5sj'Ǫ+Bh/b),o{,pJ.pD~PȂ~xAfobȎyuY֞FC=ٙz  y;V7D> \7P k F<(ܴaO*ޙ삐STF,Ģ[)Ro9U4:hг"_Zٵչ،}>JX&=ytuBzyvӄY0&[jjIOɨK;`bBM¯; \U3W7AbΙs8y}A{K oUZu-e<=W7_SEI db1QE,skM2"xIK}JG{A-+aWapAσrk,)nBj p8jChЄ`_f04.ZAg/,y r*.${`0(.ۤ$*FAw%^SD3sPx Ȑ-̺)|ПzS!at&CsEfOTلBOxtcH޲k7='|iSծT.LMV'AZ~bg ^qGНϿIK[琇$makc)/)7aϥlNuKMV6l xYxܬ 127,_SkVF NW( Tۑሪ;s̏96~kZzt[os8buv5XH+4֌ KxlyJW Qд-27=fd9o'cbڧWxuk\fIOtGK?SE%א p:Jua'=Q3K@{b_ ,vEJ-:JybuED_|ԢSu4B<_wL!/<{'}b[s eo+}D$_7@NŇf(#X kQ>V\~wx# 9u\ȪfFL*%:$[hՌ%n-eY\a.R}N}/\f;o1beBs:O`t8\'{u; `?Ո㉯i_דNEVù:8՟A`iɻM/ۏ" .q_So.{ ҁ:h.E7[ ^uCS̑U9=1w:)F[cb?._23;;poLÆv̋ϰR^ zZ=i S.gO\/H; n, zQy^nՃ)E-1V$ [?A"~USKZ rB!)%|P0ڈuMKӐoKA*K\uwZzCFwg3(25Mm4|Sʒ|+JjSO(&aOuYç%ZM(ZrDvHJ޴m"\ !BR3y!Z+s":y&<=.P4Bڽeq-MO( $C.`|Tij<"xnKc Ԏ.zJjU.EwA6}y!1gvu'@#' Ⱦtj)']I8J|oU._4Օ|R4dkdvhAGDTtX*7a9,%8>V;:l4f-/'\LHl{u1G.'J$=k =D_X^SۢIȖV鲏И#Z{5@5UgkEIHoqrd)Lta}Du_܇Ȼ|PŅ͙{5A} ?ECt$ 4}8mO3[LSMUSbgzڕ9 V ףy<135>Nn߻ Rόu\ӶާqACt6rE:w*|LcE>=ᦂ|(Ĉi P+l$ػc3Ne ոZ[qSp3c:Ch[{B&OkSE__,Ww f&ޱ͒Š_Z`sE{HۇT,&: S!l2 Lt䚟C_.ͮ7^nZ# Yk7Ȱ=RDbfk*|2Y0 C ña"3e4I.SHQj!z csgEat]FR f,:vkT!CV)z ߴI`8)MY_Im*R|m|PS8W5g A YŻ9ԺOf]OtFUZО|94$[cJ̡Ytmې%NJG0a7Ch@Hk~ >QfJm`b\ױ9ɗ9 &C1Ίҗ@iE}3B XZ: Q.3VQ[p7+Vi!-vf/Yf"n>ДZ*FWWGuEO+{_UI Ah_H0@@5y_\ɪpbJ8U0`Lk^W^zE4ijfH@x/D0%3ůX} :QI޵eHXg,00uomz7Ju᥮twQ$8MBK+ TpCZs8@yyb7*nrRץ]}e~Q4zP1:tyK=~-\S˗#u [V>N0LX&dI:q>uxok= z◎vDCߨS@]J'] {EP Y=m;w:(H5 _ETEQc5HG8UAޞ czN'}?x91`sܳߵER y62"#ȹRѲ#:#* rT> d̝C\ƍ۴@WUf_d1οZ [s퐅@Ʒ ^!O1uºZZ^@bk e728v]5X40r¾myNJ:儯!@뀋0]%*3p|ASfg`6|H (eWɳ$6>jY$a2XPf/H(P0ISvF777nf'.d+,YǒIb2շɠCya]8| ]"Mm̴{k8R5Wŗ3i}qh5#xb&Gf];Dt^@+^H+&H_tl2|| WYvET {B{>iG?M96n8N}Sט-P@-j4,HwKvU19zcGIN  S4= cB⬴Ũr-y*j~}}ހ]iG jyu~ \l [iչy& J.=uتY6M2 0iU1&@Y&O30% ޶ )I& P@APjӊfȉW<{y^;u*c`1Y/c݋/ c.\}UU)(O.\Wȵ$FI<āOv1f>mTUr4uSe)֧Ǝ ,+A[6:_;@ chLvtSɛTBm;|Y"u9IS"2Shԣ *%``Ф6+ [k{NϢހI1u99,> %&nb" H=֨G4TP*F5r+8cԱHY5,z(t:fKVQA|(Ϳ0󀅉͂4wi!@cRޑ3>);V):'B =4B X!,<ً/ࠐ᷹KֿD! 6Fe)k̏Eo^ͽc`IMbEԽ}Kh[nS跴/k}Jv^BY8%SJzRceJ̦ϠbdBS@< wڻp2Avxl be4K /M*Έ!?Odbfe$*5Ki4h! _gqo~nXZ>+v[*.u!!2G C{ DW(E'1~!nN7Zqn@X^DNޓWԘCR 2|QNf!E}$cv8bUr ms1L_o= ^~NuMa~^i*d=[mOp@z 6Aʱfء2XcR9U޷yL x&W;_fC&-[7b@?iA1rO%Cs0ɥ1HN$pg) sI`= ~1Іɘ&fŝ߬:¹j™F(04?pJZbm vK| _ё_艽<1_-xQNx06Z\ yX&51iFӸ js:x-41tw\ŭoPoCn'kt`Zmr->6lh+*l1t r(J}wh|74ګsBo@j9?9w?D9.[N2k-}{yu];R7SpuXobU%db<[ < zdCo^cu |zGVWpfi}sԩ$g]^@%4c~\?Tp+M:h{Sړ[0+68hn$y%9 wɂz;vRvS5.*K:T 1+냮K_vkΕ⩴ ZJXp5 s&#$0d"<>-U=[|@d ~EPzp1Q,ZT?ŸfN0QmfG#`{߁Gy $֥c Dgs$HX,bWؐ5nj̔!`~?$1UpTxJƋ}G}$rG<.'Иr(GMЮBTԾ'_OU'˖,(.\"DJ(ISVqB? /1f__!$$ ru1&&  rs:R Tl|78e) ,az3P:ߟjX1X98r|y 2%YZ=a{z#:"a7p>ר1rj_6Syp#Xp)RWaD€ҁ2<հ[^*SOI9ZPX g*?J֋LCp;8g`$LRrT)P% :ED-+@l%JdZ1JM8p#Bfi@6OLG* )HĻij9 ҒG0 K 8ew:<VQJ&ubc!c9;'(0~y,vQ]/-9$s'*й(Dԫ<(:+/R0Kjc FcDn܏hW0AAъHf3 <|.|r f2O_G0rOk811'=fيA(V[SY'o>K_,x[֢AfdQTKTydTP2k/u*ef7wxh|pRąuştJpHE)r\7'$H6\Eϻ7q"m}+S , VMHAuשdڇJcQE]ea_Lg*tJ=ZXdy&SYSvg]KcUBEcw̔/2Hh0''jRfù&Xwɸ(zėǖ/+?[{ɸmsz?RYth y.s81i\_ X&459>njfЕYx^XBc41ˬ{%( |N1*LŪW(|Mǐd-&m8z`zUug[$\{'Y=eZOP< GIF{a a[P+mDo^ yIH Ót.1)f?6$Ǻ48F@b=G2;b^͕c*Tm gl1k+-bh)Z,֭t2IM_ s+^ڋ}ebQ Hsb_cwBWDM]z\NNүal K*}>S$Z (n Q觯dHW2FUd29ŒL1"Lj-`b 逖'<⟼dzq,3$gEHw#@c.h'cI}Auմu^N2#(Rc=HWBSy4׫R0/ӝ(&ѯY)װ,. |}q5a#Մ3~(< IIiڀ< à0 g*-N]S( XF̒ݰ6a5 -=QX,b%_.UVC'GonBn>+~a..d9D{UlyuDQW%\w?Sp)Y~($?b!E(H wGβ0/}Z4*KMc`a]]㰦ߛvOh$% RpC<ռ{9#d^j|ߵ ϊq#>z9gIGF+9SE;}U=<?\1-DiFC\ tIq{ (bE_QR~ v3X3^I>5bilxH>1E~ EO` ȫ0P%w|wq=c;5e)}_KeJG"z^ svB wsu99T2Кޅ{=u.r}cM+=2NϢ4Rx3-ؤs4z9fܘy#KLSa =@In"; VJ Cd+ؕE-H].M,Ty=ڼ^w$>(LR+jdJNd3Nct; Dx¨?,^G_ؗIi.4}D?uf78Im¤DL2m\xM֠p_jNb+HzTm Ɵ/BPs7&VtxV` `\8bpzk?]% "pV8c׋ְ͌%B_:wxxrRÓCp)SX~ % 'rcߣLe,=OKdWNr+x#@XȟރeZ OujНfov+pe[[t%^BS$.ў3Q>I @ბQ)MOǔZ xlL#!e_eR;fC #AQ߿P3~<;tnADQaP X֚!=E F;ˊ=[VGͮK}3yO4žt\BgxβH|.E 4pPf.}3>V~+?5Y&qN3<ǒC7[$8(jd{iΥ`UZxHi1/} MwIԽ cQFp՗&ֹ8nd kJ|Cn"UYf5.x}B`ln3p_Q.Iސzɀg_ϝd}IXI(kJ>әڏLϡU B4[I: ^}@ܺX'd:*$$2A0ȟt"CUX5;~'AٲhNn'UWhTྷ'S{U77$^dK)a!v4ŒZ.Fi)b1 Yu+֦w!'e`iRu.4FxMix)}@9_)i=NqnpPLc.jw"o1@d!x)`#者́ fD4~nr9UyV zѠ'>!ߨҶG?˷]cуۄz9y'ӹn9,ea91;(SKIN [U{K aUlp_:Y}EZP6L3Rz{7xFE)ʸ5k2 e4p.o9ݦ>/v K{f®Ql*63mގUr4mSZ07K8ffLwK흆}j-X~vߓhg|oua޿!nkyQc:ua/_2S!,YZXهADr5z9Ⱦ p1rLUa7,9/=;y$L@4"'&C"}赓B-з'ÅҬ* +%U$Vyd]UBt[*\9)8Bw/Y,qCBşl y=[?ĵE?ʜ^QrԄ% &BA"^y9w rܕ^Imr8=l> o~:rE) ]:k㯸Hļ{1ǢQ MDj[[ο_U op "jfؠӭ WJlA]bgdw"rq69L/9w%;=J-b3F\-*AxU!֘QFi/39e[]Cۉͭ!r{WG8۾s0{D`j];d:{mʻ|@k DlevxXi ԙ,3*\FzaL"(f5V:?gX.V/-i%vK/ > RUȣ6MNR)ߟ[;*WNH߸(?t eV۫A'I!o<yI| Z\NW罘|6k94zg*2ᐷY" .>ⴻ9r& :7h:[:K[[)5 {%f5\%Mvȫ`8v""N?p;;z7/1R3sw3)_`ٚ1H5=EV0?+$) hULK(j`d)!N-zk &[qQZ,քؤ@B^xU`UkY/FRrid0a^Mxf O[Wlpqp.9w XowghJzW V ώ8)U Fq;$+φ4KAH@| )E);1 dF:kaix5,?{?#+ښIjOfFw:zίGoqȝ5ǻ v86Vt2 EPeWqtXNi.jɨEU S]̕5wMHv'C1J7mSW.o1^G# \+U7ʧR>ǦRM29t;b8z+Nm0v= )=3HnwRU5IL#7;KI< DE5isV{lgH(%_ts>vxuFaV{!m@EX]H&$#@uW)1f|R[L:W/1hJW$ qsZCԧhmKDuxِ1wgO\ӆ’7Tڮsƻꤷf[qO|DZ\QDxnDT Ts;#d8!4e|JyeFن1N?UyOkKw)ND0+yM; kSՑEDUZ;ܮFeWy MDH3RCnIeq5? 5u^22kjvfa٠93mg}}j NfopN-`qWM12U9SA2f2OD )>yԣfe7NM)w^;l(n)-B2>|GJ[N*1 ,'ŧ;7تޚ8`^d*/r5 ٵFLowaX iVqAԡ'h)ی`x$ C,8_Od)Tq!"(2r*Y̢9f3BU@.5e|R*r#Wec^6]PS}#JVs?R R>UV ´B]:Kz|8vRc@yZ{1P?H*w8̨Ѽn4|hf٘ 9\DˆJ|CPĿǼzSD|-8b( ?E'cp.R*TA*No΋.%d"4ǫHe+\2aϦz:Mh0j6{}$[@d-ZЏbE#B0uHd\_jL46pjZo|k[p@K9fGECrzeOJ/LOƲLUdriǸ>4h\T|S# D]k6(~7T!Wu%ziv[X;qCi{r&n6-o|"*\@f?j'i:­JҜmA Zx7 SL-uJ'p1^(Nv]/RoTF,`wXeOnnͲjg, eD2욵5Ƶ!8ԗAT}VRff6d;IgOV_<{"R#m)wA?x zrbe8m$6{"JWNqq&:0"{5ec&X3>ݎudP(űs霳`9)Gz x`0ue7l=޲d }>ƯLFu$7)-ؒ(_ ַѲb|vW kR<5~8X7>_E@N88aG6*cHv-ٻxvpR,Dٳxu B%hm$]uﻈBY.3`,Qh /L%%q&tۍRlyCQ Y|Zj ϨVY-Nj,;܄W$TY6UͶJt\I߷m#`\ U?n/l&g;NӦD-bI6)& p~_h^˟aeL[ ®)C8Kh ^ dB/4Ǹ_Rdq=N|j<&efZ㾣 x+ =ԅ.)Y]»{}&\6JI AlfU,&'IyZ {Yu>k?͑L3&pс=Pԓ4Eg̑FS$e E=|P0SFAIj= 4%gYeeW15?gW.|E" }' vmٙe V,oٮf6r?fr_x{ h~ g6fVۑ~ U,Ö-<mf =uN@Q;|ܸgCl@@B)/q>CzX5 ¼H! S7q#Rm@ l Yr/c1y#%#“EX[ә߭jROH9D#b:\n$/ m[aPsN*'yz ]v]Gv6sA:Tʺ};zQ=ycQ-^F#h@ ȿU~X9Y9{Axgu Fiv1 Gj=ѲԎlo:c c^zLydL]JޠCP,⬦3b36 b> MYV}]$_R|1PX<8y&eYP^%<(bp,O'+3͖6n^;h1(RNQ/GzHr͘ǯ3ۄGFPYT`~d(mK8!PzwWV_iԅU$ڎv+|0 1Eiom-(h:1}ֻ@hn *4q1H"Q,M˨rl8 |DfnmB$_:Jq1.I<2 EQ[OǡAkEՀKVd(cGkkuKHj0+0'TUv~zk)F=VE Klw`w5:S?<ͅwz'<`Ο<3/[@"P"&Ɇy既gW(o PY<@5,_8,53|p uUu>aTVP,k|.eiHgɴ0':4t_=B~Y*Ԍu?iސ <Ȁ<{{$m?t4ҌM0J0XY8˂Y8H9tkYq!9T{ka^E4@lh3ӎF ~ "՗FٲT*Q+ueBٝY3m,{W;%X%1 LDqs;uUr/Lh  trYG!<}(2zoFXpbz^'i8LGxhE(ƽSJť ~ GP3!S},6&YvQ:jt5!`b]{;*[cQY%Yz>4lISD|N'Qq_UL@I%lڎTu(X,K߾aO2ԍFdYad Iogg `pN{kW(EY^=]DQ,Ϛnj|{<2%\&}@Jp~=!a8BK/Ey#nT'B |YFX7]]dTGҠE,JLϡϭR,ζ,t/z'9s5PNafi蹊UvQĝtkyk²Iv':h q,R*e#3n^:GEιOl5'ItL}FnJn!:q|'&>xIoqΐ=D JC.C~@.mR[c'j!BHwpj40`3⹗) zbDpcV(Jʶ?MNTntY *qwg Yyj3`=OcRSXڃ w2KIb#Ui_١ӣ:ui}#xtȊ^y`4VhvqN%}mhp̚/bdRgXpA962w+z޶IźSs$K i FR|H03|i %A{+HxaY7$CM,|WN^t"b:g"74^maij|66ZG<a;x|[?/B\KL -8\F7Bf`cW#Rgc\Հ%ѹFd ҙߍt_EM8a$ϬdhUQs+A?S*?ZW C?)mOz~e6*46ވ~͠tS3|l̺ϣn <ڛҥngܙLQEˣȒPQ>p9-,)S7MTkJg"WM W73WxW37Myݾq2zI t:;FoS 2<쓴HdV0i%ɧ9FIKhhC[κl)W4>r{v t~Lp ~| %_5hiT[NRR0JkI˔ZP zŌ]y$~2d}F'\,`NozX,uM$[aG7E@4]TNcA^D.Mg%94fϳQi^`yp./*"Н,zKqUOԺHah F qYe -am%G"maxe_ːk1 -L')ppzgzU=փeSAB\KjH@o '[ 7KՆy.V`ֶ-+Q;h~E5&]X~Ln}M~E2 /#|SfbiK#]!d>%K)!|fbqAҠOuXz< ly\ҡJ:%7CPďnqeKW -nڄ HDsž~`W] !>rԀ67H֕31 CxuiP N`қ~\)g-g~5X0-8I pe)v(us&>a  ¶7T5:7UK~鲳a,DG^}ӹG9/bYgzSero@OBg5*?0Ծ>ГH}"rWT҂ J9 àrOwc& ` &5uo$[G` lY{Al "7ddg YI<"^) Dls,Z%c\_t\\I3l𷚊Y 4kMhLNj.aĽ E} 8>N j`nT?]EE}Qfq-jouvNlӳdX @z1rUs\[b[Bt)VX;%§x^Azz?IDh,bQ8U2垼C {}ʈ_PΟ8n4;o璙egWNf╢h&ez퉿)-A\GGb ]a#x'9!l *NDiyV\*iYkx1u0lKj˽qYZ"SF׏umcSL~\#g[?aB}wWIQUPU=95?gqB/XQK~ق1 ˴'~ t_ϒZ#޶D#_y>L'-PJ > l?BAjH0&.2U(Α in)6?_B rry$df5үm憜5]A[ 0&ᤞF.^y DwzJ9Is!LZC#7vmMl~늎d&쉻|jm8Z ^_S\Ĩ ү&]5b罼p>.Rv2&/ĉYǚiP?DȲui V(V?\t&Uոy.&kWڏlCxc] ;U<*K`2h *cSQ'[ľ@"&Y;jz<1(Ȩx}z7n0]>dAaMK9d8ZUؑ`Y:ܶ_hmeQ*nwk2 ЃBՐ#sУ:,cy~1"LmU?LdgtEjHt LoTd&~sJ)ws7vizz]o9p-$u]?$"->bfOA{ʠf5ûHRtZFB>+ӈn0VtkVdTȕ33aГmH.3/Qa_0klg{¥\ƭGT'|k4F)!dAG꣢=?#;;Rn8!02c=@?kDV>- 9ba|Sƙ QͫeWYw̓pR!EK*N[1E*Αîi#$v_ik%x DBR/ -s:9=}DlJSRW qU?iQxtݢ+ibiP)9Qd{pfw#GO/48Y90RŶ!NeRXOYF0ĝP{$Y"Gsw(V@ٹ:@ .&Ԇ쟃 S -v$$߈NfTGQZ%~c]d<6!%LBEV %p#(}g Mt$#3, 938`O6r*@)yKKV4]z)Ҏi2ӄɼx3k;X q.auf(2 c>}FI:$u$fB8Q,WG.DG<࿤)?4/;dE:{xl^!NƗPpRf}>\*1ͼx?Qg[cKk`O~CI+(˱MJ !@헥}]NNcBͰEf=L_8)V( TΟ zadx`z6YWDA~(Z U0|g sl%gWD:Th=ֿo>~qlIXǟxDX )5uQ曧xKXR8`v@.v0#TOv76V8G*+Jh8Z~B!!v(m\>6Pai#7Ov$6cήR֖Xxqnp}# A3)qz 6<-qquOa:DP1ʍ>H(5 :UGGLT]2#01Qtک>oBEKEUƘTB]M6/65[\MIX+DUVYM5}ǘG5?8odv$,KoGPSpPKRRu0]oV3^e$k뭨zn =MHZ݈7+M|K DRCr4+WXbu\ӓ$HV0d3' {ʱ/ A3B4qkvczz``kfa/[KHlL=a;xPs9WMhn@(8ZZ< vré O[BnQc?`k⾍w![2xP>RfvX#QxLف)lY uDN2MKDboႾYGH4#2̚¶t8CxmSF΋W$RRԞΡc C.[6ҹ9V g0%ESI\folK cz. O\qr_穆e0_֐`g8+g[%tIgJ'݌W:t ARzP?|]_c#=046O7hӾd-lȮ3v+1emuk6Gy034K)!Q/5^Au20Rmv3b b5~7 - ~2Ԣߓj"hWYLZ̀&2" ǀvu'k*/?C91c胛cvЪBbNZV{et{44" ^æyٲ 9.%ptvSF9GqP:I0=E,PskUm$Kg$\ൂL!ѽf-~W~6+_ %3aTrM[T< -~n;Sd"wVj-XԠHeQB#>a٘Yl/WX"S:o-b ,cڐr*MNy^z#!˗WY>{bUWg#"! >dX3Rnz~^Ϳ_`]oߵ7HΏ>ŕR73YE.1f>"=Vc^1P[؃}!"gdϚ6] Pw>͈_FϨ<@aހ)>P]^?x\&AunpK剧 )lKhN?'rn0T:6OLh5dXp+U|7_MOkѭZctЅE^V!=u" M5^8?6 / n4kgu%%O/^3GQ]R{ 4ޛIATLٻY1J`_;8<G7dvjDO dO1z S]Z Awv[-(hA{Qjo2RD{Q)N79: %Q^FEm8b0s|ƕwR@wHM_‰}2:SڨWFyz$J{8s[A]9 `WsTR`cJ#kYwY?*rTEz.s9l8ME{u@k1zv$I%.w?(% q]%N`}99*Պ@lRݴ%~7blwl wD[193ɭ2F*R#BIAU㔹$tbwFՅ`hn_+2W^!7#Rᖫ!ƒƽYKh)-7MPTfO͗r~z!{^OwE_0f"ϊ+b{,OPD0vŻi0K m #2u_Hv)ą.wd/T-FoHX\"U}^GٳX4MEp`1vتi nEox8XNmA=X8}L|*G) ZO:61e=EbGCUwmz79Mvr!iDUWu=:pJ(_**kJ4Fa(2a= qSWJ4MIܰՕt@eRkL.CgB'D$<60"YK#I Lg>.Euŧ*tÐ ;#=5FTuDEopNavFp`_uzBRdx|lD.65CL'gmzmp 2os,CNsg쇍oH4W*pR k?.xj*ZOɻQqG>. ίPI0y%/'OmUtR>&yI$DiuKJEaҒuX(L_ =࿺c7IP56n ^=CZ_'DgSt]{!=oGX4c2t@Vi~,@6^=T 'a}k\D'l KHK_ J>6QJ!. iAŅ{j`u$gkꟖ'`Tpb-V"<+{{-_bWK,k>p^ 8'amc#QB⍃(8~QA"&q(6 V5#9G1Qz&%2߉mhSԑVbi?mb?ւXs"ǖ}㎑Pİ+e\h{F>6n|Ƀ{af;jע6ɐ^U|)g`O:嘼v?jōB)Աo{.)`Ļ `KCKGC~1W[Sp] AE+:{@a3dza-F"h4;Ǥ>hqs3<OD+$"(Ѿ{a\D9@nh,c楨 Fb4<1U˔z(݉O{3d+ +X>]Ds{`X&ңz* yߦגb`=* U J՜a`ϭj<ԧ+uBVQSqYY{ ;0_ ͠?( ҍ>?u>y`CD:,|?|99}p\56b A0Hud@ݿz1Hx'M.4O8)EQZ.A`΃ߣ/7x[%Y*|/Ћ/ƏUҕrb{ 1.rЗyH14N &}Y8FvZ8yA8ωw+FBR _\BX c7JWNj dHv!z' Kbw9}dɳV N=3nWT>!p:^AL~|Pl -uV抰3RGQUX}.z;qn=xNM*pVRp=p ʩ . z Ƀs>a>d7F҈ /JTDLDY# L7ն`mcxgv8A$$8/5蓭wt\%.H /.,z+֝;mUpH@lW>O]DnƼ^[H-vAFoj51d(E#ze4 R \凓pf*5$x-Dd#gD>~GD;̴un8@x%*j>!ġ[زv}쿊󲊟$J%F*+S~f}EufE3 6N80?"?ˁ[dV^pNj4M%"SM=lTZP fF-ʪqWȀ.s=fx~2xS<bA[FqYB6vq{74Ϙ?t~|mHT\Uh1N\7˞Gyhp/jk䤲2. Vt;NyE,Ƒ=!ӻ:6_BWp@[gs/a:MFYG8$ 3IF|S'k ҝ1)V =ĘD_S(rOGsgNWL< 3F0>JŰ#DnID2n`80T ՠz\/X>-:~e*,mʗgusّ[l]r4mm~pfvp[4WpO 9$=顣Ŕ"Q}2`ײrf,EHDׂ~MrP=/|MEG*r0$4D:@BxCp0_+ hJ落/,Rk:4`[W;lz2ge iKk4f+xf}'-RM>eڼ;lM\$Ո5vIa;vyr]Im oߘ[ FS u4~a4 C rd-D-U5Ȕۖli& psYaHScox(~ pn="N;pΎ/iS'gy6^; &vI`g+T k^sS$ӵ%O2۰ NpI$Zmβb f[?͜㽈zmFS3D,d,u͆ YE]jyU(``9O֎#s@jp.KhܾϵTz_DHNSD) 'Ĺb^'FU8g]#ȳ4UV؂f:#Jr%{i4Fen7]VyAST\' (u#5 I. @O;"0I gbT =Jrޢ9Ô{'ŤspVJԤdJ u3q4@/GR}=6sO%d"[ބ| IFYg b8wԯK|^m.ݦm*Q Hk`i#zs{󦁀O KlHoY`X]o%x)ɜ쇙p)j%w6qĠs_5wJI8`ъ>Y7)Ƞ~n~聜Ԏh8dž^A}nTfյ]z%T4k]# ΣkO$ۃ^|,WtW? E~|b'Gg߈-#ԪZVc,/TڨO Cτ%k U uY ia'^Q˴z`8JBHH+va\x$fl8.d;o}AB`"u9g|GwZ R٢cUBd»!b +ig/cG ]GŒqK=BIfqh:.j"߽ɿU1r?xGkUFQͨԅs;XfF @ٸ#"`ڀu.dZe@󿣤ffcُMAJF_0 \BG+^r\⛺;\` =~C6jhETY6O~LJ%Gu > Ge[a<î&ZVϩXk]UIkn_Q!f7~ˆcx7Y~FL9lSMlcaNxǬKŵq?1&޶R4W#1L` z+kbX'zQ+qzYCu{iM>,%ݙAS'A0x$p||Dq x\pk#Ѫ 3 >Si#~)f`X[U(|8 f#NuBO ϻ4ziݾRtc՟v/3Ed zO# 8 /M'&(`pUjlQr;J^kMٹn0sfC0yT}AB$1[XlTfƩ]wZv",KСk=B֔,G ]ci~'^TұfGqOe]SӖ\ύKE;NttNr$Zye6Q=b@?X84Xlj>*7J Y.r0ŚZKmh>By$+.!ן.*'W kܦMg2BF105% t䨰{'Rm-f.9,i&pD;d: T3I&qud3p G>}Two+ɰ)uv7>нh™Q|f$DR`+ʣi f /Vot \{`s%{<(eI^:y{#28rw}L ބHW pb*I Ou>x| SxNU~"j"Eo U10AAAJhi)Z.^39'Yo6ȏAN'c1'G~^E2pTd6Ԩ@%)r0g}LjBqFLE{xkI~kȋMn(@n2QbUJ>8 ҠeN6Qx'YZz&Xu+etTHqLFF pw; -УOD:7!TDBvKwq:g2,N+9N¶-cgTY<Z:6_} BںK 0mjVn "黬ǚyzR߰(>sP;jSbԶ"*t2 J`iRwpۈª_phF=^vm*6qǒF<̄e /،qj~_5lK6Ⱦz1?;A+,9?Ms Jfl,#}L"L?RY;2PiӔ;.76JJ+. E{NS'#pxܝNg"`+n 5W-6[UKa"OުVתG AQPh`^ ry{bQ}=r>tDaHgDC{c fpV2QL:4%L8 TvzNj xA?4V֬Ox+·\k`I]`%^nEtBYYE/(B~)UPOwdGm>PG|o1rE]][G1J!PF*>#2KdyP aqu(E}ab=RXԬUl< -,OTwJMeYvH,KWsu' 6W]p0UQ8* /;9ycnUEmBt |e&LXO'IKHZK G<ЦoOe|4))w*D"tc[H;074i/;IйQXvq.btQ0$l]I&1UYCOGu 9EK衖g6v[s%o4K9@,iqy|X'&m2/^=~"6Py븙zX@t1AlG9O!]@ ^8QǥTh؝(_yӴnhm|ORC0Z 2qj,xse?ฒ(ecG|x{ OրHi̯p; $ $ pO@7[ksNƅ^p8c/cQWpVÁRPD W Sڻ@5;^4'-7݁$Nˎ?>ΎP{0y4j۷za͖y`MXP ei\ ,X#cS)i8Z7P̛uxT@w3L~Gbuշǡ]B2j5dr&=sĄdBUKԫ~zuMjo'Q9^.Z%yZ(OO&v%5F=+*&K}o1 vkh9yeEN![VGdEV' JsN7Csfaa ECL JD 4]0|^rgGO9WKP)}H|V˙"UHM$@CVk[ly8XKol*1@k6htiGh]ncIMt; H1ѫ`>֌9KZmf$Q_dh'EHXy6 -F$~CǖsÃAK,n胻[ 'b rA;bN7סKLdcu0irhQ ]-lތzmn]I3ڲMΥ%s[L*P-G'y~4}Ҫ^BT/ \ZG%fOC !&M&|)ڇq XnJ G-:;tʼ |g1CWȭnP}p,],W)5´lU]`^(WK=yol+rץU V4- nXqkn Arh蜏S^idl_8NMdYg)C5869+P;qͨp3F ڎ#~Tu# ٞ~|J࿸ߐ]a~/;ٸ˕(Ɵ+DTx?S^]Ӷ5JJciT]8/wrF͈ O#4sYM3B{i_ L^cPPʚ9@b\ڴԣnDQʄLh r|ZVz·-P-7QLu!9MN/KNȩ q)T ܟ)C4570H?nNApPzf*^X -vSUMƢvNhIbuBX_IsXk ./PzeN߻0Ogp}&"2TwJ(QIA" CYH~kxT쑷jAA+̂j2/jT* ʽIr٤^{xctZ5~2IޏOgԾgXOճ @݀ݿx/!<U|Zw@y$ԡ$)}8gܖ{& @)]z9YhwCL>"sD𩖛d4D;Pρ m)aͣk4w4{u k-U -?%8D1W(Fġ_3顧ZZ'uf?)Ax?}]fg[xQ#]2 s(jG ḩ* Hlz%Wd] Na`HES O% +7ᑉ3,eKtNXRG(Py=qA9bчѯIMOEfj OK7iht`6yj:I^,VI?Ԝd׳rrA`١MKU?Olgexz҂j Bh+ x@òJ6"_rVul ȒJPocpRV`pjҖ ۶!kˀBm7r[W`3v|PбIR"Q޽K;d,ITֆzh3d1nyȗ.r R]b[a <8)-w0Wh Q3 =)!>qE;ܔvM7Tu@k9#ʲXJA;{|~Q){ [ ݰvFmgMkA4y V`F7`$*~݆8LT4$xݐAIPZ>D|ztw-yJz2:X?`oX'65ϖVΒ(e)}6u?S3 +7Wk{0`1V)E\̈.c zV$g)QW].wI #mVu-I1K&1?(;)E7R7 ?*c&4< &w\\d'8֤SJPh so]q9ic&VDQj J--I NPIjs,ړ>T$'ؽMRw9KGbCqܤ0IKVݹZ at ǀMsmg\h"fm%f/6Nю/K28GPsi)& /| |H$oW E]|E3 L-?7j&sa:ZuP`1 e4Є:Df@wSV5eށvFd"_aY90\Rl@kк E-TȏaÖe2qϢru`&UuLڄY|z9zuDNweXkJО\H3&ʁ2=J+7B^Rن?ݣ^pk="5Jp@H,֧8`#ÎSw8mgZ~WkpT .bnOT@Bk 3.LŦٌƘe &ʰt]^||wVƮ?9f@:j#Vqm KRKQE/dz& jxwCl%/R*tr]6 g\֮e^KThaQ{:xzz4)G$HnDwx `M]"P?([x5&H4ذt pZ4l;*qXr0NX? y9xo{ n=L =^/s/~6T)]y>\t) *qŴCXМ!K62&;#"Uj@38tfe_\P7`߀?R0MH>r?V4Kɕ"Nj=dV֠W2p&5̮ x3kW?)cF>> @ #31X/Z(Wɞ"Ycj#uu۲h&4 Psu%>+9+P8;IޖP:8д gg#Du#V(p5!1֪eN.z¶bll2)SHPpŀM{ vvW2=g5d7;@U uڰWdyG@8`H5*SeL{  K&-odc:pi@ ig{fB58Q  co5_~ KYF#U2k\n 5^}DqFB_ĺlgfa>|!<rTHe` 4PyRAD'5ح``鬫 a8X)$o\'j9#d(%'O{Y|-4UP1z~[*>UL/Зe.ϙ? 櫾w3@̷yXwk۟imF*yhk9`ڄlcjX9Q 9 I7ix+AB{EW[7 -?^B uO[( h EBʹjt(MRYm遡U&hClG Fq>M/&p}a$>z8i/8GWձmM V=B"$VTG Q- G$GFx-x-*U4Z4!a|,1YkptΜ^eM c-ړu>vI.Y3TkH{Uy_IeG/3t#j=T8P2}[YNNյ'qƁיCfF+xwO^uMK$/ 6X M>/9shvIZ2>ˊ_&~0|Rmȃl'_Q: [vhAE5cIL*m!"m;e@}T=ξ &p6TI !1⁄G!L;6E^NwMݽ RrDQdxϹc %Pjӽ!_I3*[ 59FlFs*q>osՆ\i;%ukht!TN LVqx3ݸحĹ(-sxdM o(nqdM-7s5+|ɦ誦dsG|:Dk|CarT"\_w]2/f'/Dw"ɸpM4̕շE$lpvX{װ58蒴ݜm:Ri+2iز(}>nο2Jq9pZ"kZː5]5H1 QN@;/Q;nR>[R*h!΋`fL51jM[өʊON,+B~pxU 2M̸S8Rqͮ6~XN֟37nGݍTU@0ſE(f9:pRť{ޱmnK( %tTbN7YKh.CZnjdJqew>C&X8 HL8~#oj ؛dcUz[_VFS(/.yA@(Qmfxf6i_ ,th0s/CNFN6ĵ䷍stztk*ݝV΃ k+v F:Y%DDZk.!iJhbXOW|T/9.ѭ F@&ś8 .'b$e[4+]gQÐV&JL1dػպ5i{&t`8 1F@4XUl~J<9쳻QiŽ^s [X_ B-ݔ2pRRU]'{1?W1јlPk݄p.\VA6G+=~t_wҥ =2p yGOo40axH]6ryI6fy -0 k eI;ZA_ڈP%R`o\sVQvEslW fh K57r 1=)-LŌOf |7oۿ^4ZH8O>9Hf.'5VSVdq`.i亘5&PI ʳ6ՌVC>-2^8ЀӺ}ɞ^>0DlZ mΣ@ӋuÛ|-`A* bȩ捓o'awT_?xTObpKbO#Iu- wFف1`fƅHDdP6i4!lAR|e?a.!z3t$v%iKlns};"j)";Sez9: '{sO)Sg3||B]ۻ8=KPuH=o[ %Nȓ9'$̸yEʞMu%GUBr$C68NFP 0HbvO]Tkn.k"م[1+rEU9ӼtUd]x$kH$r<տͶ Ji-2=ACg/ݷGHhHӜn*8f~騥~M{F+u fQjM.[fZ6 ^ABQKG\Huh֎P\A46v(fw-!o.HԸN7u- e">mv,ևiOξ:e7@2^7ݱAsIqx%`Z#z wɏ^);"6zkgpDhèHD`6UG(1|HT>iXl9AC IYXFV.1$7h,@V^OA JO8,oT/Nu_5{̜%1^V$dfV> NipjuBb'3E[*l Q1G]B0bE]}fXsNJ_y*O h+56<@Oq(Yr2{{Õ?-hĿ@CG Ρ{lx_r8n) iJC|[K»9EQ5W0lz8i'Q;ޏ݁Ya"jf]ߖhw)G\d=p5nCڧX״">]4@A4dh-vΖ8H[J' %r,c*҃dҧ̇C[=/i]_&,g1Y,w۾tD4qڀP/S0%S0AHUMPHk6I(5IxS Np}&fiTts{y.'IQWz[lhm ) f)ѣ<)F-z($A7BkޡZw[۾uWH9}0`4C: MG.ځ4{=19"=g}ጆP}Q ߂>!9Lk1V^4 !u@W f0ݥ.p[e45@frnflH} ]Ḱ ѷ%\ecld׵ILRw|57ƤooyCrsiE͸ ިK-@ic"ȸv'ZMȉ! ;;M z(+D +1oI> /BpiPx'Pٮ` Ga!ĮSG D>!`W`F`VХDd/nڒ$=*L}ʳ_*1eB[#g4Cb_4_,zV癵=-ؿE'E;&|]#^/mvffGB!|J.=<uRBOfn@nM+x qz z-C>-And+( +'bMP{P<Dk$ƇKKdAyj7^59֕ sSh屦҄{ IonQ'ݧLuL[ez8A'1$)aE; ͪ;8#7j9?ĒD"oo|ܲ.⬅'FZNn׃`ڷ[A)^X Fza'"S9C.kABY^ a6 zEHx̀Gc\C[eX) 'l.3 k f3kH1,7.s9 X6Q&l)b}u[Φ8"-I.{&oO(W7Xתum~Y?7Ãzr#p- 30)u _g`dx3 ?5~Iޅq:a7DeΜWy e^rG 飬X ӽ pH_GB/k_` B]OS82Zm(dZE6 x e*ɶ nκK)՝ Z9UM=d^Ôe;LFg9m֝}fhL|xH oߧ* 3%G`-w/@eKZ{*-ZK:hOGq̯+~9E0=0&f['<& #1 gGyN@&U?Nt`B.;vvT=5C"Rr^KVŀhSrlC]^\! pAO*xfЭ:L@.tqOyfx0;to_*.Yxz,Ev{KI5r@ `W͈r<뙰% 65b&77*+6.zD!аEr @&測xFw-(/!,ͪ>=!47c ƛa w.+\Sјt-? ssE'F*>+}h}H#BAd}C Mqqh%%- J D2FfD̃Svz3XOwaw].]qt:DIݟDR bZIDH:РTP9j%l&AoCeϻ$(7A; LeVϺC/{)sp6~$/2$.ڶǬ,UA:!'5BG|ǜa#1]Ú@eݨ]BH"b-$r-siNN<'y/FLQvH;D~4W9KGwt-fe:+Kٱ;6m]gaU=|ad͍3%!C-b9nlcd4ꤠlR՛[4 ; (L$TJbbMϿjK2C`̌@LJ̠'/\}@IP6->QZ9ūl>&ɃӲ":G&T\ݘbhi+jeɞ̡ QFbU4k?W;m5ٲgS%is4?o\=A*V+F\r)BEM~1)7s6 0!=]Ok(}}3a2o}EAO6ȲIڛ-~|LǏXfz̓sa/L~!1~-HP4AWKk'8#t'] $фxZ=])z94K@֌g{+X@)4DJ|:>T/,NhЍGj(I[51kczSDMU"ރAq[_A֘)fSոP5ۃ)=ch+PYgWcg s.|@6*s%| vĎrޭBܡ8FSss1ٞ,odjn#q^dᅖϊ QWQCP'e~P}.~f .m97>^"ӆV3=r&Cw2u{&[s=2-x ^{zy𐖊8_7)#iFD tpW[Q9}uZJJmEÅ'Av&,uOi 2 @( RH]*1|xb.j)G!`[nwDD޴[0z+zSZ+R5ubatl!s-_xi0K&|#KEtzEO:T v~ |i!C$!&DIGmf$Tu2MfHۀ#xOdQDGStKZsP]9/,$,8ՊMzAe{N)Gn̷ƛ1xi1GG#l\Kf]F Gtn(tc`2[p/Hضʓ@h[&!Vsd"Of U?br ,o*g_%Gi`-P2ݔ#aOIK^廈ͼa8^f+3j]Dher[%v7Ѝ':L9ż=TkhFUVMsܡvI=;_F*Q{J+8?p@~Z/u;0*|0jâa*]YsZ?D;_x1es<ӑ֜һX+Z^*ci57MO]gl {vqsȺh \hz7`Ŗ=T22F@2f|4VѐډtH2<K/zW|L^R_Tu#ց 0CB޾ W ˋ.T^b_O  /{Xܪ*Nφ 9PF)33"aurrl%/* Z$'Ԥ@1n Lؘ1Ua^[<jfz]nِC^EJ38ރ[gQ)Mv>OB/]ٰvk :mL`<=Ȣu/QC2XL:O/4؅eĿ >mh!^LXNɍPǽe¶-)9b- @XDR|_qt5(W鈦5ݳ:wKN- ND^&q>qp B9[+%y:40_T*Cu40{Jf[z|pS8{qv 1 4&#?FMYաl"EටyN~-Ab Kk'hlR/]N-Rr6$rSM'?:Op7IR_UmXrSj9QhCH~C7.2pi87 ^"=Xy;Y pXiBq ֢\?8[9[cԷW UKuaKf&\W\ЮmOZ{x H_˻ZK@fGvE\ה,8&Df#o:oWɯ%f=[sfYmw(T--D^lx#C5w~V!ۗ~ϑ,M S SЬ;JH32EXڤΙ] **X%]#%t!l+?QZ`.1_C ju>ɁjExj.w8obp|@y#ޏT%] go.@k^K-Tu /g.+Uw]D[2)_J S!ڈ[{y٦3p \ܡӵ[WH[? 5 9oKu2.TeHw*F2:BGD>E 17\_P/G}{CXK!%1WvB1ߺs砓/rTi5'Kq! F.\D˩]_R~Ԕ>-xߒlA_;h$* N!U^3y/?p^wN#V[+*Os"Rz+VO2\W}_1቏үysr'r 1rq".cЙ -3gq%߾r`[ncDž%ʅʄdĊ "BA 7P7ƲEzXq m3#bp%]lg+G!;s9,"ai,1;T) *E-W-pvlv86m{9 BKrc8q2ڎi`X)9܆+HقF:L%w5TNY4EkAfek ;E) x3F#Da_zʎ0 3ߟZ"Z_C`>5< 5i>&/BLl ];x%+?"k-tj:dg"p4l;RU.e# Bax;Xz ISmDs %m"&4=(WQ^D l$]FC @qAfWP硙zwKfcvc5 u$fQI:e;9‡0Qr: R[l3蕞@\ e$:hT? tt0,z(5rF Y@T%% lxAn^X`NovgE{zv;=]]g8k-l6HJ5x6p>:L5~{qsp[6kZ=Dr`(`ӴG8M7hL)1:** PChnWo\KRd=iƈKWoidhRN} \W#D'qaߏ0y@n ?#fy{;Uff &KR+n4IȢ6P*2b-$u2ML4`raY:2,5!vP'C/2_}_pV@mP;H=[cq5ɳH[9H̾גR ٘ȸg4;o[!Ȳ8p6GIjayܦҷ֦aL82I!4*ٖenb2 $HD! Bv9=r)9U,a[Eҥ1r5"׉O{BHB}I_ {^* 85VQ1ȭq}α׉֩zjM-^ c)$81 ԑCx֍|lJqdD@ksm,A=zIVIOPM cZ»[ ]S6+ 7,&М 뛂n(Qy4duݴm&5[6MW0^KfcΨxLii`.TyI:]hYx*7n`$&"o3ȼ_U6 9W͎ \i{̛&m\+_.?/.X^?jzpz҆mnknr_|Hסԥ}̊r4j}vz|'$:FPCtӕ4anl^X n;?&(})(W)92|-#7r&EקW`1ձlْtB5{D Γ3Z yzEDngnhK.t1&ÂBqy7q\UX6xoja… DuCP?2k/X N19Ru)̀ҡPe*wMA!TIsfO kvV%ţ*T*j1}iz*h״(ò.#K(?0/+8X fEԉH=󷳔AyQ! _M4r.<1bE l ޙ?f 6{#97>VIg>ݮ" F\<ƉE+'GXq\pThdDpOxez؈ %"}[L7Nש6髠JƁEoU>h;pgW90ЍL  j[yP` 0B0n|1,ki0u': SN|EdJ'nVSVӐM y `ŝ߯*utH E #$b j Ҥh둊?3cY$_Hx.PZQN[j6*N-t߄m(aVEHm wX7kϽhFӻVuM½sgG| m!}e-jit`'ڢڛlHd0RZ8 x)gȨʪYTõ_g !IښVw{hp(8&p =Zj6A0d6K~%gAL C):4FFqCX.TA=5f&n&y\AwyJ|EW ߲AAnQϏ*4 /lf$Tn1d*Fc9(4ؓZX$i2ӎl+ʷ E;f Mi!$m#-CoyOnRJ[N9+llsVWg;Cظ 73Y^ 1Jɺ³T5=8QapU7ӏᡘғD% FYRe5 VUa Rdu6*wF#]2ωT=nj#yʛ'R:-t4uch/-S/OC=D638qՖYt( fK/0#_1`$)H8uBvxNBeB II>eMB$Kenf:G*;`E͒+4 Omjo6X@ru( Ⱥcz7VM֡[o vB|]gxq ߒ MX%W~VW|rdcB] Xj-T`.N -e]zB u!*Oݐs4w@QU{K;011Bz P _OWVqM D>ËcV/=^g}d ǟtD,iU_;"/hۺ}TO ghnƋޙ/eߎ"62l.@`a.&wbW:DqاI$ M^)BMrC' Qخ)U}Ō{Ni; UQĆXʴ+SqV>qmб MSbIUqR3.ŀvd'WbjHU Z ߷rA#%OrY0OR!Yĝ5p4Ke{+CL0`ۗejrvybkuCCs8(4T!1{G^jiBR "\c ;AJ쬟;SAގ %wVG iVgU50ӂ6Tܗm¾"RDRb_]7>dܘb~ow' ҆Q+}I4mU6|k1M+^Fjb=BSenB*X`!eI2A`V I$o[znzMɌ8ĩٞ*صA SI)VAz'ޅB?W;EÛjbQa!ERК&6Db@wu}&M&E23|E  IXo<,7vl葼 ٬TyԵ"E4bzA]g\^ѥ C]0XIM{|${l.29Wu?(hTY-!nl^\̪iMLɨ{WSS-}XZx:S &Irh-&u٩SA@y.$҄B1q:8b.ԏ λ/ jKle7@} Q݁I'{?X l[?V ,[)5Gc zTEdN>H nGsI}yhHn-}^pRYFق1(3Q|橕)"Q E#xp}M - 2&eV|Ų^Ie$?ɪ%.u59]OtQ5uZr>[2B6xvJ׶}mJ&wU5Ϙo\wf')pY>OYZ )X6O .2lp)T# MfƐr<E$ w,f+G|:V}~'T v zZHg9yc2%JEQ[SS`]ʮ"`Mv"dX]d5_x]E+ 'Jў:(qIq`7Dñon[# J6)`^$;C5iJx]L(_W,Zdyj.&ox1b8s<^ x:yt0>,UŶ[A8s>IMfMOŚX,}QQn߁9VjX 2$An|ևQ*N[ J3Ƶ0ފ=߮[oQEE[8H#$*fpG"X4pZ%g̽sΧiuJ vFgr^ߏ]CJPI.m fuO\Q^!YIIe~PO*Rr'qT?]㰕{ M< B"\/[@R%렼7p9)FqOn%~A@#(Qqy eɱYRP/\p`NCM5g[Z@]OE?ETJcI&6cm98 {28+kԲR d3EVAvRs/wkR CuEu rBUf:֑-PNg9x9)ѱƺҷفlpRQ7^e2-|a 뺃X;_aHZh&yK8u9Y;-fnCAYh1w~6H/Af!V1z3 b(EMLQh nQk0Z\xj 㙜Է7& G c/:)r$3, tlu>ꩀ>Mm?Q5 Uf!}"ua4YzzdiJ՛'CR@[w5 i~iXEJ0@DSNp׏?kt<^]!oMڲ#'a_KVin'$tݖJz%i?"1lA'"9L셈k+2QnIӕDLd8F4Fn5zd_Ci7ӹB}ŌLhHaW73u •;ZCajmv#SoGgS[{! ݜ$=4C96q/GIYYAܗJ 5kx'*=eib[:Rѻ]'G"λ6BiO]3+9f1M)Jp_ѻЎ&L|xS<㇦8C*W$PWu q.pVbm5wԢ@v|ӄ,f!9<̲^cm{[őw%VeD20¨49.U4͝b9mTwMyu;g\ w!v3J{ޤSVq쥽m E]7 ~ێPX2:'?hRY=!FH -bEIB2K-U^Eոį_']5Z#BϦnoPb E|B&9$-k]V6XcЄ _>s{b57?q)vot]*:} $Ah :nZ+ZÃ0a]^ឺIsZ/ (Zs~P`o>rtԙumJTē\=>U`OBNk$Ph2鋪L2-ʫwr/'Qz#{ZdZw Hu雥i > _?Q˰" r ~qE V]7{Kky1AYyo 7Z9;0Lzw%Cn^NZތDJMY&h%\4Ok O3M^uV"L҉[ {BW0}k?@Nxbrw/uߖs bLt}2B@Kt!1ʴm-IG0;R4tZ?4拕1"SAEw><;wle 0 vPl~9H$8ΏxCN`0;S-U2(o{~g3uhL\F޷z݆Xl<ي5FL4Zo.x;94πrDBjKv 蔶Cau !"I[\,X}G@Q $ӵrád]kڒ Y&c-54-q b(1=;~!ڵA̜x1E7g;^#AU?~(; [՗_5sFu7n9LErr/-زxWy1}%p룷 12 +vJ$[mNCf==h st@KgV_EVhT`" 5*BWd`^[!ޣ~FJpwآ$tc׈x9?[?ۓ(pc9lhx}Ubјan_#|Ңm3yq!+*ߟ9D'Ћ2=EI/J'#Z(!Zԗ!}dWL7ߤo*UjԃGBmUaj-/.Krls;, IPA sU%\w+Ӵ_ 8Mg[ ř?+6{$:E\~R6P#&P.W1Ŭ!GV9P}]@[uTc+*?\xO^K3Htsc02EG)r0?s-IjxiAI2D9ў`t=剖zVCڬĨLeP<*\#| ,ݞ8U%v Goț yxƹ'^)TЗFmf{T3uR2֩Angݬpj=z%-و}klfnV|]ϳkY(O$gقFHА yjN)ryL݁F\]: Rl3$\'1r@O)Qve,E:_o`75(%lpD3w<^9"zŬP7V4ʅ6o)#:O]/7`k8H3vNWxɭ<!X:Wl}^[Hv2lhhq;?=E}6n3ԛrH,2^/{dg8A'KcJiqw(?>߬qQVQ(/z C]ZpϲEaxh'A#Q =ĔXg{Z@M_9Msp3{.mW >o:[FzoGEg:̿2amp0>yùEԤ ;яTbZ͊WIn2:<)|W=h~JZq ndb-S4g[sw(TΏ 'ʉ'ׄ`nBP4"=X&.ЩA]ǧZZC 2CgFm492/cf?`z^^gAޛp7iN;f̒25u =`ڪlwbר/խ?Oy '+\U29!B_0 !71-o8O\85|zJJn@+̰)b Mo'-H%L*UՁ/8@\ S6f['Fxg8B,4_0K N:L/ R.6hV:x9‘Epb_lLib0)RAhwrYKw 0rC4.vJiKÑ_N=㯕tnIUJH R6 ^~e(j( ffŀP?E`lwBO' ,IJ2@3y w%/ЯD#czjtMݰӗ֌ DfɃI2^ƚf)`TO\L;:kذmf(x`?*(sQ&/;yLA\lrW[ oc'L:PӕCpZᾆG)5VЕEףٞaM.MѫՈgk{O94A9sٚ%F咮n"Ẽ*y;Ŵw[119]O:o0pVIRb6/8[\"@MxzD #Ҕ+-ǻ8 Yzй/y/ <6GTqTf>+< 6M) r VOˁ w_њJ7v,yL4\1v,n\qš,foH2R0<`A8Hm2vVgun O 3vLn3>-(CX#`K1=OYޘMa{!W@Zk>M ,l5#v >\d(xrH ?rEPrxQ1IɪQɰa }l(k.8(erɳDOLMg2>M|D{1!>d{u" ShZW2@#&w빛R7mXAjwB:[Tp8d/LPzbK%`w3@qr:ۘe Nڟ(XksKAe{2]ɹ]rNseuVZE9iц[GP:mF׷ Ǿ:!}uc:tau&Rq|ggSfbt a0IU)spXy9h$&eHfa$lNKU Yyڐ(cf3ŭ_>:hs ev;( ﵻo<Gۡ &x*˘wa Nj;#CmۡޮhT>nB19w2x\w꽠nL6RE>2OHm6b 2jGƜM?w(mNɈY`W3ғfbx a?4I'hofWT{!>f+.Ȧǃ+}Ϭ"??s -9T}ډС/OůS3>L t  +g"5~S'ڙLMӮ4 P7552ޛjﳆBopIȟd^S`(6h48u/oCPx1;օYl쒽5ď7},z !(S_ӡ6 A q=BU<~0YPz9x`!G̰S Poarrξ Ht[e1 )WX1N$*DGWSGR+ QBj)p)}ٟ 5 eGb >k&39mnPڒW +`.NC(Bc^g:Rc|"GHb/|\KSY(ŭH n@G\lb\&$vaLJJaS:Js-đrW"6O/ S˨:#@L6:Ѧڮ=K$g_9ܐ^4Wqnen+g8Z" +vA -R'48V`dR+ U:kCnX!a7u+3Ӈ4&.h8Pl. 2 4va)ir| o+s;\k9[sڀHh81[Y WNET< >S.Q !; ຠs)7Ƥ 9L%Q}' :|sAcԫa _hj k7[]8 Wv@rM9E4![J4i\ϸ:tP@OYJ|Zˣ*]DWbUp;gfD{>ZJJ$+}eVpia9Fq ٍ鎮n9Q.2Ǩ&Tɩr:#0/sۛ av'C5ZN[# <h#NoDɵm޿ɫ n`jFs|s'|+uWH'YP TH`GifQ2ܔt&9ue/xN%H7xWZ.*pUOqF٬+P {0xƍ-ʠy- i:S"BX۵W@rg'2KZ3hα& y\nAR}c=6 `T?=#2ɸ8tvǓ/qSfϞ;'iFȕiDj@'z/,$xU EZ6 wf)Lr8Y9mKBX9IbA)9o4 +*J}Sd ïWiE1YΑaV&G  *kp. „֝yq0A_Kp*μwL(Ҕ+?Xp -lIsBk!#3l3Bn(9}1a+U2kB]f( :z)gUɛ &ܪG- 2EךAS&bBOwq5cGuTC,jzQd~!yuIPɯ Cy{(:5L-}PUɓl귑GA}Jx&(9tDb|=Jbrbb.uΤʛ076'k 񛎄CtK縢_QwVۦLhr 7 -|`f5h& HDTzt=PWdr3"Q p:yj{$Z~b}C'@:Ljoc8.f0[fW8I5H8͐_صw1 Y)Ptֆfё+_U$)^w4/k1P4ye ]bS{ c3'CrIJr[R t\omx׿tNwJ:"Iy ~m[f7b:g|<AR6@OUTثLZʣ TrМ)M[IHFLKmOTRK nvhw(\\R~{)b^Px&^ _v#wWIaZ)gvP3Ө\dI7Чq 3,\Xr͉H!= v=4UsڈӢM1LrU`ͩ~Q@Q.4`sCע#i'{ڔOcy*a`%_Oy[a,p~}73jR!=[&}whI5Dy4럪FZZuXCoAw̚s $gKO^^[ޞ*p n`lW! QÑ8K d;w)cphCI/]R-:M%ݫ-}ީQ s` NwGS\ڮ;o"ۯV10ݟ}8+~4+Ĵ?yQ;Ћ ̏~%&v' iY$h0L?GaPe>=6!9s<%$T_sgm`B#@5_@e B>i;!v9zl(A9\,\[%FMi@䋡{Da˒GshdŮǞc]gl D$̒)?Zwh$N`53qdnLps j1 [n s,"/4Ο$glՒܭu"ՉV)fͫr<ٗ#h^73P SdwvsWKr־.͏@yֻ &j\g"e:s8ۙ-}eE>z1ĽIt+xC&]fC`9ZEӢP |4Ii&םQײBF0Qsu[IZF>nMEϛI#d>LAU&;"!NWǑؔ}ٲ. ZrF $Mg7RRwFV;PH1Npc*TuF|ԉtGYM Y.c4NcMgmΛH3T}b3ct֨?M{yl. ɜu3lzi9)M%)h~2fTk3oD#(׾!b4hn9b|.T.IB@L%,\Esŭzȹ=b^7)|43Mq.b Cd!m3A\aG~HTUOqR%28^Up3dR(O~Ub6?oڴP 39*B)^ibQ AlR9bīX+F)R$cc"d7:sjBd9x'TyVF=?͒ʩ5B Z næ$r=׈=mAV[2q& ZzT[Mӫ7}e\xLڦUx& }!o?yDlG9>x.Ųj͠n_2 %wЍsQ%MS}U! Ocx:GV;:T9jj"m΂|gܿf F1Ö*#˵r77j8ry 5웖gd_lIo8 +LK6_JhGk#Ӱ](d`HGj#ǯd6}D$ҩpdu=<džt<"oc)bX7~JA\b8Ē.Z$["\ z["nJ$T* ++' BG#ĶZdE!4 cH"7xWkns,XxX8X.įF`g2}xή.{-2ۤϸ)8Uk.RȀBj 3֒\y`U ;+MCTHwLSǹi˜^ZչI3pʙnDElŽJh1V^f3lBo/ɇ9s8z#]^X|z)+K3 O>$Wt=S]51jW^Mr#y@ ;6{nڇп%dsAPQd" us:v *$0QAptTi&]I%pC?l9~pJ(_m:)3LEs9IDp[g}Ţ 0{[B]DoZvH{7/P(q=hRO^ȖPCP g }B-b c=z s![mwi1D-RNo~ KG`8)fryz?ݱiU!N- izk˂jYa+ZjJ,`u>H O?.g .\JMޢehȺiDFMddp[AFtoO,|f+a0hFQP oϲiʊA–J1֏ "W f1͗N=ܷKTE!iCi̥fGh*{ 2Uz{_IN5^4{K$m-4w OO[ɰ0XFfcNAfqDi5бcK}WB.4#ӟ0>\P2>񷀌\}vЊo7^|<B)3JO$wW9?+x zaA: Id D/Y 3R1xv?i˘LتapKWtˏ |+6//'7j:LcpՑlj39p™gUmfalr$΀a˫h+*s#*)V`v)bhj,rsKؓxޘƷ,IS`RT~] +A G˱lT+ l&4^)s^;RһY+̛ _)>\p#ڗ@5bLt=>ՑC=86)c!5XWY|u=-*$^BK@'?"yxbBU$? eಝe@ຳ0U3 lKS]\!-LMc 'kѿoOGIJ!,N& qH+m( ^,Wǯ4-\>ń4] V,ta~,} aqn5"lTccb+&ccY?|Փ)b"Ct\ :̈́wsS&w!v캹՞MZ(t-}*A=caMÐݕOȭ |ٳ SYlEdnZeYQa9o1=YU/mxKO(U{jfzICӫVdP_ykABti,]ڇ @7Ng\C"{.7${G(iִv)>1lGwIo\D>/x7rS qT5<@yσ9k=Kd0"fqP)cP 6K8KbwTsXgVQ'[c?ةRhQw  lB6LأW:7 &'Ѵp&FV/cf[TZA_> :?^Cܼ@yWbx /Jn}Z*\i~i r$`?!.Dq7l}IEK'0&e9T7,oV<0 lrg;9fu@0k* -“|wePu"(79uT_x0 J䜥{?:%Kht]/n$@ALlwR;33Hx1,B0H["!pFEhAn.};ĜNq$3)xO-qNƢMWC X&lr2QE-]12R 0v,7Tì'QufZTgAݰyTkF8I@C0RO-bD0ʵuQ؉]xغ,LU<ͬꇗ"2CFYp*3xFZ )S Z޷oii}ϖlTnl%ɴ}`qQJCq{/|*"h i ~/Nc1]AYML"@SxhLQ!B_,n!iVe6Lz%2ZC"pX.yMs ĚWDKC41~@,(C4ܮE?7@}Myϯ612exUBf{/63}e0ZP>ʐECA^!6";|i*Bo-Rعs._( 쫢iy>BbӇ3Ҭ腎rZMkF}Q a# @~#62 |h h5C0BmQF%qQb8IEhUs6Y :sUtCG#BħZ&q*R[X@Ss(S<}0ڒ!Q[ ]#+&= ]s v!4? ߿YRSi/k=)tڷ:M`trs' ᇬ(Fh˰wKWgX%vES)PKaCJnXavN6F?J4Fԑ6*sP_(e_oπMm7}P,cJF_C\IP#Y i<(F+Cx J`f~,zco*}AG/c< ?^O ?a>]Q">Yѵg+*R# @$$Q{/Sp!,Jׅcu {8ܜrbIZ:?X2eXf~oB~PWJ%9pOvWhj):͛%ѾD45zRnW3l)"QXoyew /QlF$]bUԙ+Ch]+^- ;` v+u䦐ȘUbwܲ/k-K B([Zc;8Y{p3 Aˋ,_>İ/B|rޗnnJ\u G8g{&ܥRKx272Z7%sߠMuhWB˽GD|uy<*_c -p W0"*!&HyNb)FZ+uOZOsSM͑!)smz9sFQD;-V4&ޛAkq$05^PcJ#`׬C%GOFPnAx[JilW`\;^\ef*Q DC An'hOW ru )CEg$}e;w)"TC?ÛԻTq4vsΉWOb\NnbKPRvַj0Yzy%8J1+1 :;_G 'ahjz7|_o&ڽ ʃs |Ӝ+̐YEZM;cʰgሺuセқc0ios[0+3>#()E~w`I&l¬-{z/g8SME@)@ -\f|ha5q۸ '膄 чOoސED$Cd) YI'&c E~{2BE&R∹6,;Mr6—gL]al}>rUsoD`Eyi CʂZ69ŹHKРM~k>SRCNHgSm|;0v@W"};f!YXQ6V)o|Dꊼt=^ڶ.>i+: t q`bg=L#x_ }ѡzgT5j v%6y6;⡪yrOj X;"?qFl0ȁ<>DA,-C6t\̲zJT!yοRnon.| A[l"e YqP 1b!'zaQ_6N?K$^H)Ko-&E_7nix8TZGPC ?ϫݍkc)>3Ϡ!`]I7I%PRZNi?NxףyZ7 >sV=Ce}@Ke(+.YN](*co^gb#XAjQ/2wc/WS,5 1w$6t@C`ꇭML5 ʻ <)@rE:/ՀHe=sEL[E{bJQδ?#`Uwy"w@7NhgPzV['m@2u|oGA <學JQDS-Ӏa1ݑ%a|^/<8t1f.T9M{yoQ|p K| ?]]Lup1O|UZ G2|ꂴE?s OSL0\hJA"22x# - Us`te_l#{$̀VG$1M"%?ͪ9~5CR_9U׻LxȖHP74NYĵե5H*̖PEjjD Vs`[fv4[5w7yxJ|\Q)J.ձ.ו)KzClUhq5{Ǻr a/e+ee:|>בf"rk|XʼnLtCS~SC Qc׿W${0[qͱچ_8; ii Qu37hv ݯHEE˃E~ְe(Ύ,m4H~7ݪ1yRu3%B @utgtH;˸Vv O]I>NwralďѤC?'11ƫHGNͦp>kV0(OԁK=OWf3ϣ ;ŭQ+3>0g~ TtRc8#W#o.7Kߒ eQ/L N {q0}?3O~[#aS2zClZj+;S=]×X# #9:9i`s1?ĺ&O;S܀љxnCA} ]xzԹ _ew;[ 9!j pr[9UU^6TƣbihmM{bM4~ֿbJ &pA81HgS}mbim@>TN8!…!#vq0XGW~GBV|hvX@҆gmvuZKU|h.3 O2q+|nӜz=MyCOL&|q=_3)/'9{dM*t饌ewy&6`)$R'ui4z3֙YT_4I[Jt}m Ni=$9sơG[I g΍@6KiڏeLLࢍj|n Y[̑DOJka!ٖɔLLMG~CvL^ 9ΕKpLwZc)0xS>#q/4C%M.XQz$9"4ógG#װ H~W;Vͤ(dw6h{Ugr^ř~/*?{kyZle?hɇMnٌaߥ7FdR; 4/U@6jc#۹XuXˈ&qQ\RZPjM/,>E(|3ZQw͞yy'?b72ٍ;%"ٰхUց;`*HԁrZj,j j R{1z7u넼"W 7bh$e^t h6ʄ)u@E=L̊(,3=QfS?P[ӌQ&07fgL=%[S%cc͙*ywcWn2t/oR2ZHB}X/fA9a}_ '`N٭דM ߑ)KfO#uT5O\f90SVcA=9!h=Ͱ 8oʋw8=DR2&v9VR_i7ܾƖO<5F;%lT{(߸}U ndn*{dpNY!REמe}x2Ib=w{: tF<~O-{dB[.~Xް7@eP=ijRlzW}ItV*^N[ `&8ɈԹV2jNu_Ǘk_;+aUU(<'UrΗꐺr)E"eU2hszOuiXt3OzWh3d nn襉:."dr:%fNQ1G y񐇯_F_T%4{Q+="済drgnXz?v&p/ B҉TȧCckj|R;J3$,X$Yd~@]’SO^i)ܾx|t}~ E;'-/x^7㙪 J@|z=:ֲ0Iʹv\k @XӞB%εWeIzn=/ukZ+%F˩K%1}o"z9S$,A%mdjy6m-L%8]6ۑ_ͦ۝&h8"U}M@g9⒊Q={B1JWr aVM>&MDjihq "I^Ϝ1ɸvb\v(Zk Sr,hsN|Ң+Wg%[U de-=LP{w&Sk^qm,"R:_!j`~8 na-,`wt{XcY܍+jۃh:hB=2H2qK@1td6Q7f(3gճB[qJl֨xmѵqAgCzwrcM dVKP{Pkv e;a`}.Xe-Q#͊9rsmNtFZ%"T(m,WBEyKrZjG-cpF+>ں:2 ڏ=e+BcS U"g BX~a\ֻi󥩀diges끸bY#F* w>fi^y`ŴQph^K\677L׈,-sH~IJu䷗9ϗI*W UޞjXm|ǐcdG1얳.N۳̾zc P<|e1)ʓ hr Kw Emp~0z5 PfΨCԉB4gzZzIE#e&BX#66:0\zF'3 t$u/P"8JCJq![[XM$#&T:6MF['Etj:2ѓ)ZשD4qFƍ'sI,I:Aw0a $jk,8Mqҿ 0Ub\]Sej';G|J g[1L ܰ+ ć"fQEbL7"y8\XoNǓTȯ Q!mXslZ_moSk*r#һ sJrKuaG{h& P+}JdN ~ͮ\OBc&UX}4 vzƈzUً$$I*"ݐR8LF oZU׏2tZ z+  |ΆWbo dGgpfVj+OJTb('+8FfL4MBqxS6 C\7YRLhq#.KVTK8֊&+&0[E͝љ-ݣo1/q BGMKHH$Ehgd߸<ǓKpL;# w$D$ǔL Sbw'΁;M[X!.b8+ASQmaլ1ˈ&Ⱦbin@3#;Fj Hq"yTT^܎X;/@c-H2 LħWd[€;k ^,Uh9|0Y¬_V#$|8!EAKw7ڣb+5y?د20o6h1P`_z}nu#>N5W]RZ^AM(GzV9)}GXF ] ϐ.޻toVT H1A1o6+P$w#,y,RH2󽺬Vuò)N*,+BD[W mPpQ9[fIlplRKkc%\gI[h^[x TnvKtw)L`'2L@li>XZ?bQ|$r;\X?+0Jwa{x#J @R2 3d2\ 0Q+Miه(كDko@lS奣惌꩕2" 䦔Ǡ~ ׶84PN 0#i L{Ee5{١?NyCY! F".ΥW.10{GD9Dkya((@6!{|ypkH15Ch\B a3d+B%~٘L;_\٬0U2z~&mk,Pm.8ia׏[ŏ?Bw7@F]#qˈZYk[2gE0$khʦؒ*{ݷ\ȔXJ!!/ҿ#o)?T '/$ $ܹ $^3h]>ڒ aZ: M 3(LTd%I f?Il(/%R2A'Ҵ^*t&1Pb) 8ZR2I1{,34ZXCBϫ[7^x|I[nL#[d [r3GS( k}+_<H2#u l EVR],z\N\2GuJ`Ocf-]44f6MVڷJUDz++ "M^Md:W@ DE\p]Ћ/l7,_`O:RtgaaY?@vښ2iZJ#׭^uo90VZ+ ^y \Pv^&UAaD+OX,Zqsʵ2b۫+ίIkɢOl>x+&g@qJPwC7uHhfObMI,5>!ǰL"]qRE=LxP'pA#5'M< uc75 -jHE5̪ ks XD^I<*?A1p<`GIl/VTD#ڄ%KVo\BJg0DbxcfM4iu ,R[G`VL!ZjW:3V0T3`~)t0%",hadۓVcVgp]{QW;6!oukͩŒ}3[;rG0t>jO*jMڪWBu[)WMr/t^Z>]ez)62ht)"b{e]oTznoNzRjPt2 Lpb?Ry.j|/sڞo^^ufj: p s(u}8i@YD3n>LbshB'R^pKE܌ 3E,I>*'!4'K^&{K1:Qynǭt^MLE~{O3nz`>Kri0u%kc=,x}LRZOn[{MJ qhObAV'O魘.瘬<5\bJ=NA!U6^M^$Wf*wˎhKGe;;:&T_q =Γ=yA}4VZ(*qPpnjz64Vx#!=}g/E mB^ʠnu.y8JEN  m:G &-Φ^ge *~7a@ml`U,_vT( o@S0`k5I5h8xgi>z1[PtctkK0tfl;rl>FuM]ooÝ HRD$:tQMƁ .#O ed/ n,4 kP7!Ř`7Sfs/*7nD3/ 0'Eү֬- ݩ6.ᷠd[5e|ccLqhRfFZ@Kz;r5U}!Ĉ ȷSh,$<;-Do08bxRon V{CIcb<Pvn!+"*kU$w S$+Ge$XTH7K"D!$Ciq??BrO5ѐ<( Pu9AHrv^~c|wmQj̸~aӉ׸vc pYʦ%ֿFF2؞WFC0JkW'bO&J=cUqO/J^YD=رq'fg.G6y8DB_;k/|+]"Tw/4}sԶ͹7)ukg gRyլ%{Bc&25tCЊJV؛ײ=_ݪ_P^Xxi0 oQ{NF8d'Em 7+/`z*芮%t%fdEzݡAz=-u%iH_ ֎ U1An J#B1 i G U v!@ـdH *AbVE|SWZoqԶfOj4y:0'o*iv_rY;ts$iZu'P6칄 \8i< ?i6c#ffj 56?s"!~8VǏcJZ[MqW'9X0@i elQ#+p]cϲ871M=szN[ڇ"e ӡךa .ý"Iͯ[4x,k "豶߹ykGHD;JQnA}+VFF>}&*h#''x`S.06IdI^!odW],*>r sVr^KĜ|ddrVC?d.Gȇ x^ct%M:ôtNʠ=䅙/%UwH6U(Mvc8 At0?~.Wň )݊FǷc3=Ni+Kgܘ ^olm29,|SN(/y;4kNlS>k_nOj^ea!w3R]^=r8s y֪ϰZV$CZˍ.1Bܿ)_%!#Rs>x~*v$+: !+ x悜\W0#LhG<~H,V9xd~:/Pʉ)/ InK~^ f0n5ҷ!$#5e*TX.f_1Y$.if엦O?B6JKq!_gZ<7Fòft?[|N9f|N&f&4dq!+M}]r 3׭?1 /~eSn#Iq'wS \C_{Y֦ 4.N2֝ fFY~͌¾ x>n`ok ]HϢcIi)g'7aOwe[B\ӟڞ)O~#LmN$(O]YhD[#e>ݩ{mð~~[8]]j ouT)gˌba};FLqS@@Hi .t۞Ѝ]-^*rl"/@xMWe+jx$T`P"Sk!w8k+C4tm%3|kay(¢dɜ`vűn/_ ,kğ{o29%a 3Fɣx9>g0$/19 Qn01^GxlwK*aKeooy_Ȥ5_fʨغ ;#MƮ+o 2QeMfǫ^Mũ8)Q7\>{SX9 ֚_V‚KV*IjkV!C,eG/S9dh:U5 tlZrHD}Tr=b;~GOޜjU-yL kU 8PQ0Y"o }f*Y=uTC1 _G0*ݺLd<2\,j]Xۃzb K;+9`1$CJ8ůj%U75FH}]at1/x,#$s8Q/ɴ a7|rUjxZG.$ .u./a~9?9aG!pV)I n1"+dI\>[Uy,YyPqEtPX^ŀjz }Yp5 9 +s<;=?A>("~yp)%VWF )׻E vdK`ΔvڹlAyjo +I-Z=')Wd!qLgJ1c}F<@i#MMTQXˆSdRoRcsO+'F!fy"wъ=]la<AW'\zF?thQFB[2(I0W:fo:^Ґ'^67F$A@(.v~dp*$eFGvT6+%21asI5/RSqHJ߬ 4\S13cp6l#6җ%yh^) \[Ԓԕ=/2Y5S)iq;Ofi5oqq3ҐUUAhB5v.kgEO}۔1D~0!w8*MzЩYK^mG;=i|?8_E#:pT,Coorsl-R:\mnzÏoPP =.WT$%=ൊF}txlJzm`nYcɷ[c =! TuzLuIo9r99rfe73L~}Z-i㉯rzCӣxɪ~vǀ8uo$ƐD$6EӵՖ*EcGw@nR5Z*8Gیngg|,L{7,e[1NoF-/6z:VU>ַ`x}W;-~l.&a=u8Dr9Zdgw%p=4~-]Rn 7xB6m܂9 9tjPXw숰wҰ+T\k=k>;>Ok2 s1c0>sv7U`G{:dKЯ&x̉[Nqr'尕^BU"̏ð.LC XgJN|=,9 p{–9.)"Dg؋` ,LාQx$\j-}J k0A%gldk 樊n2>6._ `O:$vk'{\8wca5'douI MϦx+^8]B0d+W)7ܹ:PL}ot[X.|JL5>˥ejI@7bQ>h LG/261ۗжC&VeJ'ױ7r y{\:$<&$MbN4@uD#=&h {(_N-xt M)ɤY2ݱ=cǬPpub*w ց۵27gdfNdWrmtN-_i{";:>`jpCsۖA|JW~q4گ80>{mv尽P`c} 8u1ȋ6K蚌hx/ޫP< ";Jk+ Գ@}ihh>%4!2G0y7^=N0dВѼͿn38bϫGwd&,|zwva?Sz>X x +T!ﵡR*i}gJैI^h*芗=43j>伣k({暣0B}`aݸZsJIzzP o;#d ]CN1vQ=j h3Q^kSDW :۬TPVU n%ڲ9ף^,D)D0KXa`ɍ%=8ߚ#(5L8\~T)&O覷ӿufsGxuX l).aV&.s=`. 8ReNgFYE탼+54T lԐՀ~7tgZ,pr/Z+/y׊%3GXymz*0'vD}gOzW> $0Kxu@Ƞ[Oࠫl~ȟ=-l,zlg~vy)5tƅy )4rJg /+;ζ_oԄޢx1X-)z}'mi!j YAjƥML$>dP/ jߡvtlz<1_7YGy4ߋS0#F Fh﵂eG0PT:DN-8hX۱ι#;-uCg㘵]+ ܖ=oqY"f)xOUʥD{(SiS1r0\*k{Α%)qB~^'Hڠ9`[bbL}KGv3Cg[~Sa1MCyp;綞D . ܈ PG@]H8F[hp6ndyN~qk#v^9趮;#gjxlWl;}}"'~1?(ϲ+G'~ú=C.i 8[Rj5~>cӼaFEjQ}[,Y}Qlm_K[X uCc)/[}|agQLѷL~#{|JA9#d%k-2GAWXUJ]ؿbLo}XǛK'`#N +Lp),zEzx8ATƊw[K ^UM0KsHN@}qEYg/z*+: ~WT\@@5]ʾ w`r9uG2I)( +Q+xHlY.| ul\Rؿ=Q S7n%ic}Nқ\v+5 ĪSJz穼\#[ ԣ'|5*n65 q*wu[㫙gi%r_O:0n% BnqGjo  @\UI7qVR̺31Iȃ=*O~gډ?_&".,HNa4sa ?$IU;un!0&ӃȢ̍葓Uj~㴒gx7[R0u9 `tV=9bU@NR0wF@,+[4Y LWtKɞ"FCo/w\%=f ufR>\7ً9>:$ɪH&++\rVI5h8{!zTvaF ^_bOIKQZլi5$BɶpGպ5rW&5&B)x\1mm9xՆxZ2ʣǑ*F1X6j!lϭ{$l_"|?ֹd둣h/>1}&(7syPvDn&y2Cmԃܲ-2gi/Ġ$D^U#b!Bg@#/P+ʖ@}(pF\'P(Օ\~ $&`6z:Doe Fږ/33-@+s N~+F*T+x|.MM؍#ȋJB?TC{.Xb6bk=;("]gM<aNsʯ4-+ -v+ (w|c-:qb? ] {5^hp9+ǡNFvN/wցN94- 7l&U>|btNBId\| ܀XVVi#B_0MuYo oa}<|~uSBE0I;q?TȰjM趯?]>|c,HPߏZqڳS }gAkpֶ KӨxkLYuS7 T)n<=e~F\6Dzp@*6ɛHq~8oTN)o[b;Q$qPNrc7Lmj@#9RSuA5$ۏwV$Kpe_*{ +7==:ٜM\\zf.gyzKqk\>ڸS39Fdv;7n픁 zzt1~X4-EӀۥyHS 7Lϲf?>98vP_ [-Wm7> jXDkD~آ @Q/CNB>ìjLڴ7gCgj\je{͟l4|j]8ܧ5d?\`P2O[._34{ u]hÏ1]4V#\Tr#8a,a-PU c?Z6Ljd6)r>rdmOɅ\Stfse=^]v kpA0?08EnCȍU y@cJĶяWiG,(6Ҕ~HڅF2{ϱŝ5p*N+5lj9pE!(gƫ p &H5);.X5/0\gd%27C%Jc`J_= rŞr h9!Ӕ=ҔT؆b@@(m S`]C--y͆bKUd/sxU]bv-FplZ4FCI6M3lޮ}4g*h__& 娭?rB VHigH|U1Y=V ݛ)Ia բc<؞`$8,~{DfT r")xO\tO T\c|@hhBٵ*1;K6S%ɒ|pK`ۆzL vqн笜!/>VHW+<5;utD䲎'H%N&}P 3 ꍍa0;eEόGQw;- vx"Ԡ2+7gYVb12->f9Wh}n!t\Im4Aw1 ?3ԡEgɎ@騎ʤo_EꯆV^g~0` C<b | 3U[ּ MV߷S^zT\@z,*vM4Y8X 2O >{C랃ezH9ΐ[_i vE\TC%zsK j}tv W]{҈"ÎWL<Λ[!qLtdUgR*=pݦxȻUV">ֽ^v,+hZL;lڜ)ot!${QuZLabwah뾼̺dZYĉ3T#hb>R4fng9Ÿ.bx;-KOVң1+*J<=# S~^/ش1̠<$5|Jvp 1R8:Z:"ѧ] c(AQfjiWg(k2iCx$CcM-mnD #uCSiAT1N@kxhb3XS/W"uTr4䆧 T* 4 Z@Jyh75rPlc5z#BK8mlU$7jpIqZ=Y30 ?k蹘'mR,FU\;B3Nyj{j w@0'h>l)A2X@]+08IP;?/N)x8/鳁$w(̤4So0L9,ÏYp`<{KU$WL5;~ &Ѽ9KsҢG}inkf(sBgQ Eޘw.$ c~+c_0x" %h8ƘSXRT3G#_)OB^hj:5"3lD14vfF͛‡vٹܽw;N70K&گYܼ88~QtPQL<B_b1/uT԰wzkimje3(uˋ_wz(8<ܕ(9*8&ѫφM41ں7ltSvc꺄j ݱ?"ͼ黎TyvI  b#q^<5;QosM⧢`SQY,w,ʙ?Qƥ I|MlEuDQ`V9;fJQO)7.c߾`Ə8m|VWQgoahcypr+MO)-`LY7#9xDFOuZ6RcPmY7Lp֭>SfR5+hkrx,fsċY "%*Eqeֽv8>NuvGZѠɉO0yAwiH.W6;*|gTEUTۛ)%y~-?uOtzUI;aY"lT֋Q W!$Pb{AwٌN^ISٷ?4M3p,OGAz7pc9uӢ2! 8DVM.Jk We:msb~' k}E>_*`7~` _arY?|s=Y,9Q -:HtE `d#I&ckdY,n4Tb9H_AQArc_0ZɊa"k̻K\ش#v^;7kDǕ@0\{+!>6  QdD:8xl]i}Hil*gbkJ43.Փ*uMFwgSa-t_ΆQ"'@pR~d2]#fAZxш{l fpf͐6Lǒ1u6CL@~,YeW֛PL۠}ؘ] `ɨp(Nx]*a7/ &Qiz lXylUpgfK"e :Ɍ?;]a| DgT!!?(r :s]pJ_-kLVmR90F1ɇ2~`[p t6 8FAM}6i]#۶"+r!Zc\yfrFIKm z,f.y(7֓H$>JСg@ԢU*"n,A|x]+q\Xa8U6`Ui.kC.|!71Q"XQr3 ~\ЍRg, wQc0OyMlGUAAōbҐMsm'qH~Bv#e[ oħI=6^Vzؼ. %5مBB}3r6)>qΘ;!AZR}IQh ܏!.>DmW3䏬ZzѲ{ ULp^t؀ɤoU*s),uP抪3@l`G'\yD-&(U螔d[e<}Ċ)) ЇXVLDOwM0@셀<%y-FI n( xfr$|gTNQ: юj_B0+@)TT~J/QuS 4Eq-M?.Ez}TJF qt\f'U(op=t~M `OE  ՂS1I^ 2\[GI0A#Y(w;[CV9̥_v9,3 ysGpս~|QlVv٨3#3|Fo%,B8&aԊ'Zhcg fPH܌TPٰ|e=!Ҁ\a$M3lq!dӁ9 ?NXx=zQHAm*fqEt/<}îFh`}4[XyEZq)ge P9#bх0x%ǁ07-HktWa. Oʭz opmC\y lGX?1ght\6Oѿ>sJWYXqtsz\ ʝ%+7e`i%#"j*gOJRG5"Xhm娄,S2,=z VSblj8d_6l\1>~K??Ki=B4M$s2X+8,`nىQ0%}|- #ݨay+$|?sxci"#|۸OaI+{BEb1KɘųU<29=A6 3ͪ@8?:PuDhϧ0@SFz=azXxq[S+0c *TC[[F {HꙊm1V!l\ƥ)V2`r9w r(Mty\e1Q;dDݑ94ۚHmq@1**>9o)n>Y^ KCWߐ3 ht$^2\ 6Lu]}O %1Ͷ<QLfOʟ2=Iı^6׀.4B-ަJ6l=?dG2F4`Mߙi)}F6rpC 9b nQ+- I )sf8Ocon摍녎b(Ήr7WMѼzm]S`2^`ϯ䦓_- fJƀB.=1Lfc[.[U6X9q{2pR:0SI9+&HW¼c|V_#ʭ #Jm&+N^Jt._7gD[]6}ok#]%>uB_z'ԟ'VSrdΣm1+}jVEǢ÷ɇN/5{H& F|YMxk8/AoQ&*`YrkQ5`z 6LC']f\1J11?j% Z5gO},)h[`:nHR+gMa+sKwesx{\H_a`%ϱ(|Y`BjKڻ9FcA{8V5xYm*QJ HYf1ƿB. J10[`UB4C"bT1P \?c|s169bn*&sYB 9pvbeɝJܽ* u*,;rUL^vݿ;Z1(>tM q2[q(Oζ9@O2P|OH ߦ^ci:Bܳ^V/"4T%%UgDU:%Mow}烼,ƳφUKu}Ք9Od3YtØ 3  I RZ24ۤHP r3C8AڗWC&Ƣ;l} DZz B7B?]mwn dJ 6z#lғ?-n" F1'0+`z<tHl,wbP̃g+yLwEsHetsY@cKrAT(B_C& LlH'ʑNاԿmA$6iU!1/ܗ4I"ÇY:_]սOD(NwS?*w+uqPЦ,ɭm!+|H%q8X^Y".-7Y0V~ua-oZmegTҍz\gi/jѨ,D@UWY2W,8;HvrN=f t+{4kDof˦SLډ:,* r30X-f Yo⧳O^d8|aܴd 7ݞzr[3~AAɎ"h|UgDo:E_jtfi]o_"w1t,rPe=.|ohd}D$ VFmL|[parz|0Uoo19pvX'S ;[nﺸPH^`ЈǼh_KUϘhkZ!RQV 0kDT7 ]G%ȚqV3LTbsS EOŶ/|,_dxql#1J鐑iC Ug\R/n;[AYN_'B:1cȦt)o*wU _LamID_9h1S4ψɍź,.@'[N{dk뿎r~D_@dݡ5JN򊤋wKOv^aP|;_*)V.}T%Y324IY8=xw{V)u&;m%׻4~MnB‡_va&,@:V`|;=p'"H^*+Q|)r7\k4J- %=K YI['(W)aѾ#@>$ `LN yR=`cr[-/ \e(j4GN5)굀 !<ʫ9|ޖ6"U&\t'e{vY"7<1_p:}.kV_<`aYx_S`"综fNï W8 +,1)vmG*n,n?91,H* j2G` g:!mP_[(w[FdSE <;"x[X@;UL&.ޝU^FV9\FrdX(*dHP"% GoN%մsT:!ad! a3/V:_N+wkWA3!Nã;aF"z "B40ʿ ḿ`f\ɻopS>b0a86M!uAu⥐g=6UG\򶤛Y/>W:mr71 ǛBKYwf];ъ'3+h{FKyUi2.| 4~—eA :~83@ .rUz7W#$%ΤPZ:T:x;1T&MxLl{Am-\Zre]S,Z%Hl, P+ftKB \ ;^~fuR~tĈ:$.&Q}fE>PG!iJƒa6o-_$zհt|ڸV-V( I!C?qAXIi^om`$O.c ,@ T &nbo29: TF2 ݃g[ӓ،AOuY|UN>|?&U}J M&{0`YcZX˪Ɋ-~=+ l+K`Y#} Ri}ȖAMOm5zq86Z@Z*zc%l*4pˉRqWp—J*5+Y@򅠽`<6:wT׫\ŞnPD]qIMDZ hBnmz-V^+nj@zHSh~0! Ex4Pèg_cugͮ QYӞjue£o?!D ]31ѪB'W"jGn`jla5jj0yuHCWf)bniL'o+ BYUOb!X)T|",YP~#&ֳoPTK1mh#3dךNeCo¥bȗz_WE 1fBGBt]" IU噋1uvP%Zm\x^MaE?6 ~Ɣ W2aR`Fq14>E{z3MdW]Z_}'r1Mu7ܳ-a4`ל~?[CGsf,\{!LUr'>W3m:0',.;\B'&BOQ9 ֬/B]G/J*g<A[Q"T~U?! wH2MfP5+ 1o\HtQ*JdE= E7\ס@ath|]AFU~@z)YMKAhOS,Ǒ+<+P?E`e+^K<9IࣽŲ g\y-wXȬU)w*.hl=@1+Ez6"TK 1/ژ9Id{] ` 47jotkjoVAdrLqQԫ@y3kxo5ƍee}Kݍiy*? 'Æb]{3##ˁjGnңnlx,Ǭd`ujSf3(;UgJ:þb<2A1;PmmT5CI;$ 8 7|LL˨u"5SҦ3,dԑ8)i4R5.(B_5V7P*WX+1YjFϐ@8׻DhVՕ9C:פ=SԎ?VI]=qjP5dC%%%^3ޢ OfoGz>y@w=SiM >SK2ko mDEvݭaɾ6gLT^3 İ3u0,;?sNϼ%&?)xV"z~՞F*` ^QhT;Q8{8 s-6&PCCMx43x jeH߉d#†iHU7~.nau}gd& iR(؃W> %TQ[QnBhvIC%PMĀmб(M@OsLa;!=r[d^lWǕムΪg ሶU~|L>Y |gAd\|c3jwP3UrcjYR-qىI(U=5?ԯ C*ޡ;i9;8no2daXD2Cw>–4B~LDfAþ(>FUh2#3FYO!4ɼPg}I_o?nOp44d,?'xzp-̚h|>yMeNGϳ#$ԣ Dn*gC8Nn>'*GќE=7‘ofG9'gRTY9cI S#1]өy_8 MHwfԚ;tBfؔjH?Y V "ӊ{M1B/~^V3kv,BuOsSAg"p}ByBlvv/_ Fe/ 9T?/Q1$0T 5ӸG6;jZ+$+>#L[0y0oYn ~V1ᠴqd;z+z꧇LqhQ|-.`E,ޒzW/He^?ɃoghE3JכxeoǶ!Ï:@EprmzILXKd}. pnۯrp޹Cjj}Q;q+j`J#ۖY9jmZJbu&Y4=lLD^g-'۱83wH_J@!̞ WXio:t](p,<b ^r#*E%8u˩ o^Sp-<\;BPj'G׭M+xKSFv \ Uo n*' 6`kؾ }RCl҈4 oLJKHd럷9]O4|d,-jpCҜۯ<9M,i5qFb$X=1|b>r~N)qJJN#Gs%ӕȮ'@*l6`Ac{?y[biIRAԍ*O6NcY*A dr.̻-iqr16 :L`~6qH淕=W1tlj!!-t_iu3p>:<23ӵUXGB=|\Vsdp/$zlQ:d{g׏Hxr  .{L $K+W*j _}^Fw.LϘ/]D2L9)ga = ֗<(Nݯ_F5"QQp`MfM-3K+QD >TyDZ/[0TM7RGo~:L}.gYzIbYϔAT y UBB76"װ.᫐17= jzik*"YH+8_ `^lS"o:َqNѝ<!vgTFg1}Z? 7qbmƿٗ} րhyY`y+g;.TY$~Iz' *Gٙb`j E? ސ]dm@ e#Xm7S3޵BJFHH$ ,6HP#׋cN+4l^g?gp]t"bۆ{mpyrv]*)'%s}Oz ßJ88y  _񻻵lGq*gю=6k:ngZbC,EšVQT%2pIR'B} ~\Уx!Wxe8}Ӛ,V@a@ ;7Hb-PY_zYPFUO-%52.m9X`RԍWFzG`orrUEr|5ϷnE:}H`sI2fGV~4G5꾾fV%Ӯam[16=lƼ#Yr^񼈃ЅiWrNLP[G)0Hu~)6Ov(t"M)_h 𙇪~fPO0H5B7$,GNbgRBRIױi"BQ,Q)9L] j*IT|S;J0apJ}Vu+* Z]/T%87]mfSPVj]{_"@l*hDaT'fC'T^ב=wgSk3F`I㋊nsJQJZ{7m,&K< endstream endobj 59 0 obj 146154 endobj 60 0 obj << /Type /FontDescriptor /FontName /NimbusRomanNo9L-Regu /Flags 4 /FontBBox [ -168 -281 1030 1098 ] /ItalicAngle 0 /Ascent 1098 /Descent -281 /CapHeight 1098 /StemV 80 /FontFile 58 0 R >> endobj 61 0 obj << /Length 881 /Filter /FlateDecode >> stream x]n8߃"$1` e b~0i/@#ݏJ1M#2Va8]_px苧4,U]OguY.Voax>rQn]ǏK:؏ygע\.?O5_ܿJ+N׏\5_Tv8Џ_.6e-6]].hUL{z>؏Lv c 5Vp ^A!B]Vk{FF!)dBVhŽFw -#BG8y'qx<qH x<q8> endobj 63 0 obj << /Type /Encoding /Differences [ 0 /lessequal /greaterequal ] >> endobj 64 0 obj << /Length 235 /Filter /FlateDecode >> stream x]j E`"mWA d1mi0 cmҍr<֚ۗ=8aXpvKP=RRsF]KMS߭sĩ} v=>d-h Ǝp:wo8PQ"hW_2~luJ'z^tSN 툔4U%\%hW^~P2aΟ&" 1j ! ʽF}?>ur endstream endobj 65 0 obj << /Type /Font /Subtype /Type1 /BaseFont /NimbusRomanNo9L-Regu /Encoding 63 0 R /ToUnicode 64 0 R /FirstChar 0 /LastChar 1 /Widths [ 560 560 ] /FontDescriptor 60 0 R >> endobj 66 0 obj << /Length 67 0 R /Filter /FlateDecode /Length1 5273 /Length2 35290 /Length3 0 >> stream xeXJwwttwHEw!HJHwtHt H۠{C/13=rιh(U5XL,n@%{ VN$ g+^ @ZPvpdg@pprZZ>ތ28`AAK!`kp7cfVBaj01aK ́fK=9{ 9ߚ; P<m(Hl@3/$6a۲QpyPu?m& s5[(Y#H=@W3+ ζ@{  _KV@3{ %ߴA4\h"_J<)|)X898(x)Eo%XIrz R#eo`0qv6@bxj Տ \Ѽ<lb`/#zN&($?sv 6GA&8)d#`D . E(="G?@\#qxD .Eh?"G@\A\^q=F99@fT\lM\|1+ 䝘S+13-wښ? rL\N"?fs#Qv#RVO :R` *\6?Y H'KNvsab$/zA To^[zRO[fS8ql*f" 3h8o'Hֿm>(,Zo9ADV<ra\#}aX'd[<<)3p=8'F' }A!8UOg r|A@+'I r{Aܟ@+Gf ~LhɓPF=ÓdrL996898ۙ؛>&N^'5k_E 2mEㄓ ? :@>" /R\ #" +ya7lq|p7_ӃRO(,noy@xt 1N6vTؐ`V΀';s ,O2ز H0_O*{"8? ;. .sP> f'\#=asp:</ ?[8y@Zl :#n>; .;__K` x=8ŠG9?.o11)zٚ<'3wx$Θ(c;gE;׿[*K.A]sFghc ׿6P[` ܗ&?-sW'Wp\LMlYWqhb**С$`f -uAGǓΎnO/[l]1'8w@wL\<`gz~s>I''?tFﵿj Goߕ 2ln?& Z3q1sc œ`qg[>؁C !(4ήO~ U]y>AUtQn7)8z%|$]_/$H?p_< |wX xs.bUٿY&`0ٔrS fՖE 7ļ# W㍑v$L@'g߰LHVIb!OxdNGvch˔b,jd/42RAdY9D_bcSN$#a`)b%;0z޿!1mi`w!:ezMsGdFo|[U4Eyrȴy߻vb_fKo6ZY*#pȔB"T<$\y~nDfmS驸,*R\5eGHϪ- UGׁ*g |VIY7}殌M-M xJMbIDF!QCt p}!Rx<-aM١-oWD@ML6уوBW'-TsofSfphLP%7_7adZ4":`rl<. E %uT3o,#΍x/$}34Fh^yQ'LD14Gj/WU*7+MeQwE/qAUj(tS#7tTebLZHQbrx+86|'nncr|e{3 4S6hRO|IY#@^~aDJ:zQ2цgʦo ,9 SߓZ'p!@}[+Pc̡窅$@w`^Yg0 U?{Ir,"P5d!݁FjVq58;(rd9wͻ ]h~qSGM LGM.χO,N% ˾tP@lW<3!D~ O; [TgH/f~4(,Kë Hyٹ:﮼NYpwQAlo-SBl'opՉ 2>H8Frp0w$2;ok й+_ 8{YLKuU_7%RLȢ?]+S7)gZ)DfR1 쵑֯ k*:B˸76,Αlgsε-jAssTBx*˟^[va,)^ GlhV6p21]eh. ]pS5I&W%1Cbt>c(Yelh]Q&0t]dG?cuY @ *8UhQrl5!JZ9N1'M%;/ɛynkkq\Yh~L}_*$ {$>dUԜJ8mx;'"K¤f*/a)u`^\u+T#?fidC^k}/p5FnF_+kdBL^ɯ\Ԉ7.0 [uV2@U~_?޼07o/KH[$D4\>Q0 ]+\5G}^6Rf,힎`1Y/?ZwLDRJ~4s'-\(d rb]]5E}}d$*fZ@m+ S@qq~nт;=\9kwi,";3ry/B{ku ~?J8Ch6sš%Tqjfŗ&Ḏ1 WR^iǡK9 @K{ԥ(|R70zS54rhM}Y[cB][`=}3+ 13ep0ib䬁R)ydҭ`Ja6i;{s;τZ/tc3"am؆#oSf61)8lX4^-F4J"{q >LwJ) R*˯ޛ.]Br*V`VLKΝ{ K b1,jstGr|Hݯ? N7ԳG&9qvTzC:Մ//-nOE'e%r*CtPŝ*Z%7 ]5qG^hAQ$%9y e)m`ClbϾ=vx=O9So0W#jˍ~(ͬ-Egķؖbh!bB4/)-52^IpOޞl-JD+qA`1g޶ Av}WVq-_"|E BiE)W+*R/J}fɶD4]BFB8j/o Sڣu3/涭 KHe`w·:ciY-VḶ́B)j{+U?d‡j џeH>Zh,"~E,ex>IJUt+fI%2;pZΆGUS=\U&WnvDD3Qs_8(]TBKJɡ(KjT %3$]6L[7YPaf@3W(ɹ0 K{o4"jAR`xċ3PۏeU]bw" ԋمӏUϻrxB`} ;JH|_dL4lp0gE K߮W%9cs_M4^;}7 n+@ԁ q錎Xì, ]"!s75lNMRv}%-,9':>aR- -+.х61Uϝ)\FXֵ{MPL8>L2MK`%zEVָPap˖wnk~ad˵79O]1M[ɣ ytȯx 39j͸(itS;iX*鱻9 "Wi=I72Nd{:'O@agY1텟LDPpYuWA[":KLYi?_#@k7lr9ęNV `^/(Qі3IMYh gp}tB.:^%* dvjQ-G(E&QI2؆nk2yktok7}ܐ;p;RlC߼?Nd+()Y˩C qVϤUy!2l!fJ_62P [sQ>+Va%4c%:!]"=_! [t "VGR'=)$=j~֔ޢ:U/q+7CX7HE))1d/i),6뚼m}6d=1QD|(}RQ}3FL$AYLtC^#shb2+E?Q%i{z Kǻ/ /`O3v2a^>& 3xf9ۍ5A&i_AF4ZcF,b}Jr$qֺikߘ_)j\rHW^Bq›_hUڍVʅLMs-IKeW F@:ރm-/1S0Su܎XZP) 2?o+ϓJsֶFw?]+ l)>x%Μ}h(ͳef.ٵܜK*WUcw: Ѻ,\!%\nu~ n a`?kKd; Gޏ^ikb$/gZiyUG=dj8 N)j:a|qht܄HQpz0*%V\)~?[t}6D +~W7FWa$zB PPy\;Ų7X_vrfn_ߴrTXy,<*&ӛl9Yw|ϭVXQvUD qVB? A!6 \Sqj|W]v̛o;Ztu?i mIC'C#)'E鸐-߰4`[0nm ~ѥC_>Q6.K2kHdF}3Ϫe!_u|P@,[~*SF7 ;F&P=)߂ޔo5MDec|6{kY# KܨO]edH ;j1,˳;BPE~!4.0,=u-;vI(V{jBo$lJBQC%cc]Dy 4.5D tLiUB|3W쑆VmX9O -DZrM =1|G!"H %ڍ0ʓ*[q75Ӱ75ʦ抖u?hpDzAdTgi?K8[~E0ĞGtB7| >nǕV6]DK<LJK^?C[Źt%7C;'cI[eL8"]j) *gw5>:~$ktיt4' )xwQbZMTǤOԸWG6D8J>VS8Dcn,YDԥ8RX1tȻϙ.jXBVdMב5;ڧ/kr̦mL)t6l݁~ʍ%zx|EoÙ,G&EQ-^X4ū?wyo.FJS)q+SbjuX%jm*d|ܓbuKWǎKMM - #LL[JU=  ՟3Yg'H ZC o^5#a3#]s.EYAiL{5דaTz]Ι0mG& mj0j.[J!Q<#ɽw#հ<NB {#NMƏqiX%5{X͒qamT/n(/bfWktXq^NPEH_8V_ &9:0fJJS~ml/u=ر \eZ8K'IʞIVzfoFP<ĊKF7x{#CSm3qhb5ְ/ KflAXOĎS(NTJ?=n+ܜ@o?#vtz >2ҟ7?cG0J lk-_lu{)ZA>;hgѺM']kr+tN1:ᱯlXb#&SUcy&XUNq;ngJh,쥟2P 78EG}!fџ!i`ss S݄Bڟ@" b4W̾A ezdsT7 Hj7T͙|r2Y5LOJ*M%Ԕ.en;_7@+_͞yz>%?1",eqܔK?Fl82wgF+υJp:(ZUO$AbƋ|}B5G(UaUioxTujE SEXNh(e[B;_3#VpВH V:Cܐ,w5,~o0Wq%!u4wE27?,ķ\ޅfþAu>KemEn^`2,H0ri!)VGJAa=C7 Ltئ!HWhTabI]N98"ޭ%hp{eb*`O^mlVh0WJ릐iN@4fy#zӓѫ}2{y視d`4?&3+z|y^Ŀ>TfYV0=#E {jqxk3LlXAC~' 5{Mn$X-xtkxj|ӯ)9udb'Ի#,\[<7.ι2W}Vj#[y&]|Y(v-Mww}H+M*jWN][_8Y3T@YʗҖD3X~ cn Xc? 55~-Suˆ<, |JP擉/7C9% 3g5ѿslarA/eZ4a,_s[S0gՐF#i+VZ !ڹ-B~jMcbq2x#侻94L*m8̍~AWvp\3xK\9gWuNbx7Y|.̵hϹh,]ex7"~6=xF8DczV뗳cTGdW϶7"-r/r s3M#0dnޫ5~d~wFmR`ANB$6{[~,(#?)pP/grI+0<MDLBVgo ȆwipO3fYցC?b>?zo} p"b 0,XdlP@y8_VEP̄>m\{QDnb9&O`o:)֖/ {$ |kVH0yjthrU(SrģJfcou/z;4٪, Ng|ɰ?Oiwf4i[*^(K&C;qEx$(m8Xf{gvހ E93c,JobچfVI8s~.A ^fM)шN̯ڒEnI!X]zS_Ew?r"ݨfUG+tث-bUv犊7#h.}ۛB#{ެ/P u/Zǁ4;ue vmbx$hvcnp']{} KYgFĄ`TF]|4}1'XpoD\<*MQoUuη$a0j[ݏ'+sB_V> 8>+\,1M\?{ɞ-b|KvD񹳋WpLu$m}A8ʿh.ɫB(e4Vg^%K.DJ͞Cޒ;#C0$waz#T ՓO]G͉UֲꊞPvz;5aw_|eM 䳐Z9фx}.뜆J2/2qavCT+p's#(N#?[c`ؙ ȏs%xl[Uk*nz̀JV/–7J܄rmm^4f^H__̕-]j\B}5>-|[j§Cdx&fc*˸-enC)t`٣la+濽"9> .hQSA阙W*yC ·~̗6pi1 Ci/_evƘ*o\ Ef S,T)N]"|koy̽wgջ(E[`k~ /¾#}4 t.UH[}KjцvỈ 3_,W(u}0tE^7~Viih" n99iIJ0VIZJoHVY}3*ڐ$M/Qu R ްڎiZ|a&;E@tO4 ^vij|Q?q5oWaNu c}5A.t.xHF>d;ޗpmw=_uc%A)i&H8me O#8vxW~m9MŽ `+ޓvSzՅ374;ۓ.o1#mᄏNu5f?qx:!1ض MeчʞiS5TWoĵ@*`zJiSRѸǏڞxV6N&ŊYs0!;@Ս;R7 C y41hwbow!dS6* UErPK.KY\yuoWBɵ:C'n`Gm//ݹ5˞C1&d/V${ƴW6Z=e~ NCAbVWlc-GT4^.l=cL} 7!Z1~ #ҟ Ԑs%? msnWꃸlu=GtQI⧉;'_X`q[ 7X>+MW-(f0 A^^@Mj tz#nPu7i(pǣ/s-*M)DA- .|(Ef>Ü|omRWWIۜxFzZi#OXgı[F)'n~F=Al)EXIvGu\vX0ʧ{`rN[1͋g)4=CI2쩢do>GRbHhC=Z4eD4cPiC/I5QŇ\ N9A2\tARS$nv,?0&~ÍK$.:yzW6<}aRb9AM4UROdՁ |ۧ&)_ 4?'Ŭt,07K,}8a;M9Z,z&AfkA!qP*DG3K OMD*Vj}ei|_hE+@pW4y /%!::ΥK%UM0* zeЉJ  { x u~R}Yb}NɃpq$OٜS$%zYj;>WᲘmZq@`k(V8>! ٰrM=iH(Nΰ{XW;Pj-D|;ό |ZbMGqҰV8?*l[ҹȟ!-z~WX&F \UKncI5ܶ<_t)3xUneZcǕKZ=c{ 5E+4h%# h$*G#lRHy|fw _t *; #Lίibur69=8eT gB hM38('=]L[C1?4HKoӝ{n%B\`oQ ߜOa04wN-G<Ϥ"p =?5`~BqolQ[&7W잦dDĒ(dme#9@8)#߯<=dƵU׀ys>N3VLU~)L(]Г͍˴%TY9޼"uji<5[GPvczP=(sủi m4uuċ$=$Dj~B&Q+w7 Uo\LL7K]n)E”X}XKд\qLJIwToUKX/.ʄV =YrU0&tO""I@3U *ojBVۈ.v\Iq#K?i5+P^imYYh,61$Msl)hj:odUa_$oQR;W91z 9+ W>?LZH&8xuJPFtXblsodj@sBM(4W\]ef= Cgk=k}fdc\֪V$ T?t6gOh !@iJCHLosIR{/Qbv豤@mu:XNKi.adN:/|)Sf7ZTJPB[ZEEYC1-$1,!`z>i~y[s?weFA{n Usc~5$ɠR/n&c "ޥIj;\N+F9*t72Ï1g;57G할IAA#Ipڡm*#UŠT9U4sx5Ps2NRnp@7!M&k}VB>\Kϒ *+;?yX]G"9V_8[\y㕈VW8I45*&:h*Ϻ>dd{_űu:ۋuBGp犗PyARޱ IJMOh2!4+iC~fÓ2ùM Z)G^mya ihDPUZ]4S &~ ИXzУU/"O {~\aht[ {'y9{VnړXQ[K95K" BF(\Ӥ$ >! A2`νqaI$ pg^x4`pbDKP&Ċ<)wᰴuvPKZ;@,)s^3뒥4\ kaQ聡L@,]ж.bmYf~eXRGwezXrg$bcB! ʓL]wm'"e胬Ev1;c)rf1ck=RS PѨ=&^n.zV, X ZDq3 یFOZyPL5noe Tԩ@{>zhz H@ ur |<b cb>;/-gBGБ 4CE!X5n;_S΋4pB3Uy{%v$J 6v?¶+ˉsy2x'LU^mWn۱=*j)G4jk?427ZHST'Q@Ƿ/C{3999hcӱ>5zU8k{,Xʲ% Wȉ~0\tu0\*P'h!5(ʣvݡ9#,#4QJ*YOt%ݦm[CE HH h}72qPУM=XQ@f0; XW!a((RR)VF?o _ȫ1 vWzѭ>f8r e0b[ĽD/Ws/N) ѲH{, `h=Þ2;4- 7TQSv1 % ^=EΆd10d>偆v 3rekB2˅8NJ)m4"QnQq$=4 WjˌMyxyo%/N0g+-)&_+9S>uW-m5O&9b(0 ;I`!P'r0o֙,Bݡ6Χ@ ' sG , xCiMzP|<}*DY`Faŕto{A Cd>`-=x,qxs_=k\߬x`MɡGW|^ A+ʂ~I Cn O5rF= +׼:\zwV/yBm0KFL44+=ʰ .PK|%T{ݚ'C #a \ wfːLhmB/ iC/Hˉbf-|..g FPՙO8hcqՇcjg<0_'>,ЫPUb ;)!?nAžp3$zN̓=rex]Ư-HLN@ОJ:Y6j+'6룔0oBw[rt4VVq`!Q@@I;\'EW7*&La21nM}>w]$MxvX^: q x93N8q :hrRPGknCO-l.Ƥn*0ĵe-\ݒkBDA^‚^DZo'\)8 R\n݊1qI/X M%{R8bg2iqgI*Pe5WccVm8Qݼ(k]!sϭ 9T J ' ##ȢAu ?u@b_0J)1'|\_ ~?gc;:DWWy ZbKA,/)iSqYd@fU_&{̟X/^l@*Uo1(bT}7 ̓Y+"9zLE xL3^/o͔I qgOi75f __qc U2'u]5%5_[-Bj==I/@`{!=^`MಭMc$: iC69Ș+q&$.9nِ8mi.IuVO@q:R)BvCGq :> O/%RIJ~h _{!6&?؋um2~E49Ępt7!*o᣼^X[xy)+a5 hL}5z_Iw|TDMw V;;&)RՒ`?2f)zs08Kѵ)`ŮJ‚ל/z%҅I ϟ%tNkbܞDk*?}*1)>\UF੭6Vxϼe2@\bŻ60 ㊣ 6DN: yۄ-,ɮ~>fP}֡#@Pћi]q(^ǀi. iQ42k2(~B]ٓ s-7G]Nu1H z`Ucz0Oe>5ϭͬZ,/q4,)iǝZ T=/ckȜ7"BznksDyÎNο9z}+#УRoyyz}'Ұo^n{j*s>^oIa\rF\uf#*nQ]ufǏÄsCoQH.;_+84:N@FLV{$WbÿY|IQicm+Ϛ`RSJLB&k߫xIxdg2-P+w2ӈC!}GPP9_vS  ~kVJ8eg6Gl(6Į]y68\9h%Qɳ]AD?8FWG2`(2B]w#4!RJT-{#l×]Z#.J!~;d*4gmĺp}6qj,qzl{6n֚!h7n'brk/ښoD W]zU/; =u@ݡ . jÙt6-^#r>쓼}l‰nȋ7jt L.[xCOF&O˹C)4*1%ǔ|<%\h}uMڮSNHܦ\u&_y5rȥFOHSѲHk*Zl U[@ww)D3J$፥Ӏ 'uᦧ" IbQ/(̊4-)Ԣ8\]P}mދ+u/Z:6 /7*C%&¨c_0U3Z1%L|) &R%Dgg*7#,={Ӱ;E9o5P|ݵ-zr̜T豬_ QHw{d(l(PH)n\Pt%\{*wM@vNQ9e;*Qq&BP-WqirˍХb +$G uzlX3j"2KLF ;~Ghm0h C(!r_]2`Ժd_$q͵]õy¦ y8VxA̾8c\ڄݩ :0yP`JfVtN7@D& pAPЖQWru{_tm|3Œ!|y-Т ]YQ0G iDMtn7FàRc'#9v f]wɷ NH礪 AK=D$>$'i ,E[h&v\$R##񌇛u3M໏Csn 04*ki#TUPЮ)((u\⋛L4vg-\YHi;/jXeXTߝ1}#x#*_ee֏Jwz^TrH8'H,"|ZzRJ1azr~81܍\Ѻ4Ƶq0sAgP\bT~rԎWS PyFV)|ہHYFd-(380g/`IϥsaLw8-ۋ֌MnĻF ,ؾe̢M'^t0/s]ǩ_rր 6kGb04#D3Ə%y?qpϲSmH8Ppwъdrٻ 4U<2i?N ±\sm2:G_-An08y,@4\崪b7eDɺނ~3Y`>]H:U98} 0G#D&/OQ4JV٩]̚˕ y+ʢƢ{սt0 WJ'^;BOvKo( 5˒Վ(>xɵ1Aiv|sAhkc& 7XV$;sHP5 $M*kZNeys@kMyznƓ$~ c>x}^PJ. ?2%AʆkxVٺMyr~͑`IU ņ!X,|̿Dg} 9x`d:#R M0H ]:һ֪7Q Bϴid&b.?v>[wk J&Yzբ^T`#aS06@+RR)[~}tAR$f|Ag56QޡSG{f ߹@QY7 m6x{`icq@es.i_WiF^%zsjqwDx@39gdd"8F-H['NV(H5IQHb"ٹ n:0߇ȶ`_ڄuuX<'4iQ -D9 i>>K(bZKG;#2}fzǘ@& $:\1ŁD鷌`'ceԪ&'2J_ ]ӿ^n:vbn)%veg&*s(Đ:ꋂf(C)K졊}^i8df]*b1F _ iX@j&Vmf?v|°I E/6r sEYD~kdѹu~ܣ'3APՊl}uF*)(lN$}ISfn{Hʚkeib7)l'K K[PKԞ) $ȱw7|enCѮļ" =xvyH G4ʷ0]x!3w5}Cnbav GE8DDfՙFb]iNoa_tL3Dy:|t+&)4هĘwࢷרfjaQf9RnWHxv@!ێ v'U oHdlO9* 3z0'yc=iqmIWs+ƃ̴h:Oٌ #hQnt~NKm15PWQf>\"1 <Ӿ1\<&>1⠮thsL9V[z&7| 0LI+Z;ETԨT T܎OL՗ޠBzYxܬ[ 'z-_\o[\[֝څ`~ jaWu{3fՐvĻ[| 935QpeZ?t$=2Փcᒒد>/|r/Vӽګehs Lx'l"a3T9 35Ib[-dH,5=M#:_TMUk<[L8l=l~K%VfގDX)+ͽ3pfV1K;à;6 do+uz*G0d&ߍ)XCE&u=)iAԻdE,ufY~'JmeuUv(3˵ɭ;ibsW;]fBn>e3- 6P[URƼY ݎbE$\눈v |2]B_ BK!Ah=}6Pv}'`lF%K| H)ߨ\D/- M]!U_֫[q-nlϕv<ÐFBÊY6W+SWo=ZJVb:a<:QR7ɫq؄vBs;S3O\xA"a-: ]QL1n|xq`m\ BHRxnF [fX?Yֶfa(]x"`M,/q9Vjx%ra@RM _ b4rIojY<z&e+a,}#?l! Ϗ(IٕJƨ L3-l>4*'QИ_d[t65@hDQ_F޳%}=͇4} ]-/ڒoNf[,f,]$_rU0K }#2uf8g$t@JK7,gط)IOF?-+%V G˞L a@N5ze25jt ٰuL4ՙ'8Vq 쁢D!Xl:BM)X34\5ɴO)"pZ9CC+V<9.Ɣ A+Ydc%}GСL.#;FIε wv*:r0W=Ϯ⯿͏uwg3f"mM-ۤ焊%( )2|D̄9yD{j$~y#=j2Lpz l_[-F|b%?B.P.]1 uJV>0WxnEaive3۟eђ|Wp=r,!<> /[fJ|*9Mji S[nvh|0lPg*\yBY Wtl!W~jR2D,y|`䵾q_>)ْ^H6O-MHKʲlyI1YS/KCx^T)_B{n7\ D6c<"la">.k휞F5Ϫ-{)Oj?-bףoO3Ό~XȊ:Yj@WK4+ SY7^XWGn ueчfÉWwZy}dJ/X=,wcS6{jrɝGR(qi21HOm?K.K0pԟ uDϋipt$hWU&oow50\_0NE7xNؐcBwݣs5\h )Lǿ&mR?*q`N;N8:9D'^BOH;{C:lp!; R0p XT3r)gpA9VNևhqcEb/t/lW4h  2#yilJ{Ⱥ\ 1Úa`Lؙc)yQ1\-lUZN ~8xvaC& w݃@妅PvTMq7Bʇ}w@jjy"ʉL ꫀ1<{sRl /w5/z\U%"D5/?nEԶ M'ZlEa(a,W:=߽ ߧ;8+"#׀.U߿nbL pz$RC4t(bZG/8X`lHظ;7d5b0pdR9$6ZO\ ygxìiDY`X}8, i7\p`Q/ȡ72+{nAS- 4dtZyOUɎ @qE9UP-_xc A3͂y2M!̕;"KO Y!`h:ee0*sn^wCX7?ESw){򰊀齭0=Qr)3P!nH?ڰ;@Qwq-;iG)gpKEn,ݡl6ݬIbp qhDT&sH*ڟ%ӛfzȎ& Ysi*lЄ-:ڞ5S&iG ?fm"W%Հcbߓ|sc;BJoks!'VpJ^nf L>0B5 oO4>QJЌDZ 6٪Z00As:ݣ-fWz N(s) uĎǁd mi g7qd m9σQ?#ݢF8eri(,Hq(T1Tҍ8z43OV(=dRI]_` 61Q{QgUpjd6g( bA^C_#d[#`U9:UT[M .'^O{ߩRoѷCpG :"lzr^B훍QfNbwQ3l? +ng2Kg6J&K\XWX%*1.Sv-$oq VgHgjlr]=(lؐP7Uܿ`_~;2)R+6@EM 6VHq粩ScP%Yk 7Cyd@\zB`JӔXj1/7Q(\{ַ+0 ?.d  'xnZ5k`њp\:XfW5~KahL}/IUf3rw}h[VFz[Wp7aPO ?VPW꓅z&Ŋ\}lNT-Pnnv:;7vje pЀ]!cΜm4u?fEfd&ux?·)}tNbST4>!YvXk0Lbd8쑉3赙*GmEUʝI|&B2oFنkYFr[RC> ܨ/z/>ChKB ]UF<ذ$ tݓ;H@J)TF,K۩;EXO*H&;a3wjwC ϝop'{Jx@\M<|gg &;M-F`Z*y8˓ <;cml^0mَlң@ ~DB P).5ӡˊ[a ˔q,zWP^ eg+  {vnYAւ:w,5Evnuж[C9C$!H͔_~/*}ǂ黝iUzuS=zmlO8\"' ycX0#kС9YjMzTj=vٸiFT.ݚEM@(*WQ r }}5Kv0*\ /FW^jJl :4u=#!٤wRMiD˞RS!1ݚۣz:#uwêYӼ eKJgޖ)hmqA|H߉qqNB'+_]dYKD?Rgmx9 U w:ʼ[bś+o+ d3EEB=6OzHg,|$S&2+` l25za2)_]]oxo%20aS-Z [[Ju;DuiT/yHUm2e}3¹aZ4Sʭ,InW4ũ 7f;'o߼8>ugFi? Нը / f7dax)W@h`:Nb)>Klb|XTsDvg\(Q#ǑFU; Xj Gp].2g]PS6)؉DNp {ljK\\d =tw- 9LcsNo5IuV Hza 0ZXzzE:) (AAqToTBtENV-mcm&:8?~LJVߵKTL%\ %d;UWXTcc@J83:u^ Ox@c!݃<%c!nCS%3v]Vzˊ~TtK;@ܘ^!O4E-JPNҦOfn%K͋OdiӾ\u-[пYF^KBnCFtywdsbBO&gxXʞ'JJDn⧅s%s'=}j*t)ƽeeHgPocKu6/ܛJ%+f|B`oVO6?)t}'YB҅%X?(fP hpm`M9*j> Rв~u_ Y@Ng :5*J<`&yѐ| 1B|aI"%-ICIRths-J0(F#2 ಜڴY4ؼq]\{ʲ~q(Ν>>7 ^ѭ~fn< ,*!l;F8Ѳ4rYgq9Cz u JX K(T ;7j~w٤XRVy`zg'Bθ5d" w0r27;E{g;[ |b94CPvkSII{&PHHK6!}' ^u#^&jxY@ ]8^~0I--}[05- k WTy]9 Z;xBxy 66 jq4c6G݈*lqV>%l^w}@p_⫌2Yžt laTJ dv{ҥ-5Õ5n `B-{  Ba <#% kLٟ[ n %/nX0տ6[Xւ#mo2WKu>t%WĖ1$l1HY4fJcUJgFHPGѣ?ڵGs(b5{.zxɟɗߥf28 a <$BNZ")ж-w걇 XF` BݝD0_7^#rM|a\޻ԽfGe?Mה]w2G9|%A]nT56Vq)( V%XQb\:" 5p̗K i@hN &|.'k2гs")ܲT)Oܾ?C2qa^w0$5xDJΣq~(T%@4҃jbѳJ%?,i2V>޿eYGrR4La8ӷ&x]>})zLk@FR}Μǯq_b7^vzB?9)=o=Kon`F,m{=5!AUTu} D~[ &= }uɱYw@[BE@QaMF2b qS0~9SŊR(~S)}*}/_AQ /ANW]' Υ(Pdy4-:nu4b^brje9:qQn'l|~Qg,\҇y̳2W3O"f8Mݰۆ~x2H'&P ->8qHd.i?u K[(P- {s $WwWJ4Uo?Qn8FQ\TCR`4\ARB1_좢;rؕĚϊ.]{w g>]0Y*B2/%Z3h揽 GmfvjCmq[*e7NYMa bjke)]{jPl C%f%İc[eC] ; iY!i Obч|=ei]>(;qH19IXZ͘;=Uю!̬TLVipho?!A.rh)v64) ]L|fѳV|olRM&hGeIhB-gmgoo ե@Ϲ=%'mem0+wČ(O9ga ,*aߏ3J}55Y@J:n]mܪg mPJ1j V g!bq0D| R#l{ Fuy* ]s-FY(̔r=Oęvb%XMS~bл]ApGŞgeBSSx?W3-FfOs^PSU647ڥKx6fu>v6{ܹTd~Ö 9 `g*4.GhY_NRsڙψhdzGZks;HaN~@Kn5,3LxP;!T&L!2=OI,(].Kf?34|v@}!mjPo|p=l=Fuǝܢr!32\# kl{8j ;_/I7Gk 3@Q*B S#{ z)rNč0h1r8loBj pF q P焗~_;zgذX +>zoȳڇ j ",;ŸsYH(>3K[|΂5QOf4לُ^zFPRa= Yi䈹%hUPrHߪ5&]øYgOk /뀨'1T^zUŚ !bEqyGo>?.&rvB[23"-u;3E ݊5㬌NMQt#3r>=i]lPg"֤r)ЫU Thތ[5m{@YC ,2-U5n%9KX\J |N?UB?G+Ll艌&e l+CFG*Sˣ:pV9#9uw ad9z23y^!z_7cgqlk*j\͏SW?>kdL<I8>hQAp_Ýa=3eT1)"zJۼv4'snSWnSQ] ZN`9J1|&+Jur9ukZe~UY]ĎoDM}YPe!"vt3̀üG+m_a-ny_(;9 ebѿnrHڕ =Ki,xb!VUvQ(pbR4 ( !5Я/ei/i1 5qjS::!AcH<q.|(cnꮻRV7h!w}L#\"Z{5 RVuB-vGDO$[s>C!{R,sי?Ck|rh=X;y^V0:V\[4fI~{pZias=OxAA.ɟ[~Zu^-MKg9/7sj=+p2ϣ"_: %""*층!NCTOKͬd sbrWI.>@QOTo(2|'kxeQGAs#D@/smP8m/Fí/MWLK'\)R(ϊ!UVY]dq&#漠w@ jEs-r K 2s4RF]|O?#z}^6Džu) *t`N<18$;CX;Z g 5r;i_%Vwc endstream endobj 67 0 obj 37547 endobj 68 0 obj << /Type /FontDescriptor /FontName /LuxiMono /Flags 5 /FontBBox [ 0 -211 599 993 ] /ItalicAngle 0 /Ascent 993 /Descent -211 /CapHeight 993 /StemV 80 /FontFile 66 0 R >> endobj 69 0 obj << /Length 1126 /Filter /FlateDecode >> stream xen*G9Ói-!Ku~|L@*Wi5w뺻?/Χ[_t_oG>z|?^[gvzu42bw~!}n=mLeV}j~>ۯWłiOϛ֧ubqy+, KC0 `)xW00*DBTH YB%TFW18zy?.wn?q<561 endstream endobj 70 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono /ToUnicode 69 0 R /FirstChar 0 /LastChar 255 /Widths [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 68 0 R >> endobj 71 0 obj << /Length 72 0 R /Filter /FlateDecode /Length1 5284 /Length2 35586 /Length3 0 >> stream xe\>HitwJݝ (%9z/ xZʙ٤D ʴF6@1kGZF:. Thfc-6lL&FRQR^L6.2 imHhdV0UԨ^Ff5=86FȍlohROP(X[r6f@{bq,di)or\)JK,&5IG}K3CAkK ?B313W)?bUk#5P %S3C koΠfLg^T7vTq/yYBB6-##TDL^bG,ho  ={D:61260 LFkW%z:kG7['G/=\lzA? @/@/8C zGDLzG |D,zG"@\d#q{D .C . E(="G@\TG@\'#'hcY@򏘉dFR7 `D .o|"y'hbTJT ;Y= rL\N"?†@#3KKG GDM@tD TOL ’H_KzAW ԩjbzl1-B/oA+̠*ۃF1}Vտ¢}Kf _ @dULm3+%xp<" 5zAfx N ʓ2'Iуkh8Y< RO #ꉗl< VO beX=iAp:> VNO b~Ҍ= VbmJШyL)?8@{+}k#'ګ"cwȘ@uWC1|c0158aY3_AEDoAE/zA+/gYI-6b`-6j +h_ӃYA}PX r쳂p[H)rc/ n6mc L!4MOv熍c =;fG2P X=!!wX21bh~2 Unli*'= >20;(8N@{3'Pe'2+H哢aafAG쯯id?b#,K~[1wxLoOf:Ɍl\ 3ft}0>JǙ8F/; /0v-o1M@?.VZ!=Oˌ{}C ox[tv2?Mܺlg[K-VNf18wFffOfsr&G{}#  ?$}>0kC'{PZ ?ҿ9&6W6Ȅ1GhJ 'Oanob~;>>){TwQ8U_#?BСG8~~ yt_S#HsD~ ?r3hb.m#se /!4pG}.'`;#綥%8I {yR&,>=ucc~*?8?BwhK~vNPD4@s@W!0wY4G8Wfo:X3YzTt/f|̒­Hϻ~pV+ܧy^~A&d,H+O#S57 j'zb*51i."SI1HK e5=N7:|ȇKEׯ5B^@h CgX}~41seJY<̙\2yy⚮`;G/?"Im3p:{c]cZorKgn`7<.XBEZ=k5?@C\:ybTO3|r:-fYUhjgDLMݴ/(_;Z늵V8 ) FOG^wGC24=gmt5;D{ U'9}skХW칻K X ͒i.mL}:bS +pgrswRN?Da3;\tA樗98rT3_~[lAJyVfxC%zn=\P[gfg7Wh\L^J a VL\n:WD$HIY{Ő׿>y,7Qq=䎪wQN+ ?I(K^Y,uއ1}4 ̶@^3 FE3dvQtlDOm훇FSXd-|J(~ʓ6pIr!.Qz_MO`I[W^4eSBn6*{"6MCoEj7DFJWV Lاnml %TGĠ@Y-fϝLiQ̩76\SL7잂6a}n'(Y pm8PҜlQ`!:mW]#ԄctJ ٮS3:DqWU{s՗#t?ϙjIR<(h{suR?"窒L A_F}S%  g?q}>f8DN<*6TL(|{3$;؟;zeG-rG9϶e"N |t%QŻ_C$knRgV)Mwl,M/>@}Fl^=Ư nܳ:ҷ!gIœ ;RAg9̉{x,j_1 25P ?02>2J䳓otN# G̭8in~ j.w\e"Qu ^B)p@FG9Xwhd=~k"N#' } ~w[m+r}X1pQE-Rw7"ձ5FU}_~8fȐJ8>{#vjS-SemY/c߈^X\A(-:3G"h;do;>V>%}Z(X=W'M13$ؐk!Qݪz,z[z;_Ƽ1.ľשN o MлhXmfɧ*GxԗM)f2pJ$7 Ks0e`NttY[%] s2 Lpͧ^e6SvJ.ӫ#]f'0!;݇QW}Av0?㸬5?uI#%P~MMeXMa[Ń4vpax{(O`ϿS$LGH umIF@sR 0o/j)sPn^z 'I^#-dB~]dߑ}`{:vzXEb>7/C륓a,t!iC 50X-镦ĩSZ N'I-vhÙ{UE)gjk#tܺц⥔_i +R-z?"hsپ]?j&1Be87GmvmDUsHXZ\XY&ؤ-6wLXp^ V;K-!rƍ&"p|6;V* ?2+>^b~p]*odথ ( rDgl=A!RF%vRCMgHwHu^>fMTzi5?]`X,I#C_ PF;?e(N:sXсdw$S\+S|}.]m0p]v}־w޲/ !Ax$1󢞝0p\x>ѽn][/.`Cb'>lV;)ݍQ }ùڥA.XX1P:NOsg=I԰.xaۼBZ-a ] өTw oRkMbē9-5M̈[o^o5Q vnt1D~@(=pU}rÓ~-]PXS Pj;L3bF*HFkdwicWzܳF뇌 ֟>ag2MgI xx:ުpBKTI10fl벊9%0F~; EoSh@"ϛfƋX(;@_*q"oMg213zQ/OM޾?mV8Q}Řk^7Jg"/ }rQ,-v_h=FsVV R3FĶ+k[St>V2x8t6P5<>!ErIh7R:p@wynE4@8jһ.s۱n{ 5ʈsz̍nJ cG"Quͻou>F_n|@t2)1)R䦤ľxotq֑㪣4&&@imCbEplCF\E9kĔG3'gR0NU8;oTeNJWˍ;ÚU<۠m< zm8V~(+s/ǂXFF# S%'^Oo'稸`4b^k+e\ZHU!R!2&9!au /@$ tUvCq*@RFLtsw_Ps,'2SuM`~!n`i>h)AgokXC |F,+q}$ЈB]sK`uُ7L9ς/h, T2ߋw P}1S2ZG=`^>!OoCsCPRs8"v)yk˰n1RwĞ-$׹k}.Ë`,PN[JsMq550X=O\Q Og13ޝBoQ6*_䲻-M 7…YX :=tWdE׉Ϡ# 0ת^BZv%1 ?idSp/?Fv[naS߼'>RO. ځvƸ*.40õEDh,QH]=fQߧ g3R%V zqt2[o?+7rw~וk_+?zY}*!";zKS{3؝vۊ/fwE.U o?R߳K#hsB THX`̿ݧY'N'`jOedZ?9[cb11\$ *.ˍmj[eu鄵iC$1k.#Ʉ UKҙoD "MG |5lo RTJM~GRSݹg,_˱XڤP-]ni_*~g^\֖!~Hr>fl:^^m\YF4fyB/ɩwBiK7ί78ۉEh"qWX#֤~5mӕ?xRYw;0=Ev">6xt[xC1=NS  JF.kul۽T?"TxsV{^cyüyuT)-"VqzaTڗK`\w԰x~x쨵+䬏T([KBF>O2+(V'"߼9USFxá K,H}I, Ik!J73C0_Ma˂off)\ +ɓSPcZƫv7R}EJ'";n2K1ŖZ:?{}K:X޶S5 -cjJ(+ :ruph,$vPD4!Ivcnp(tjE~&T-*fiY<"KN?2DKGS#V<>1IPE?Ღo⹑=&zIț>9i9ĺ KT }9t $qO(+r_͖: (v&]lwOP+vLC1N~+ }f'1l|eFB]~B_\:l>78/9ctLEs 4$9%x=rUos^~YxǔXyrk~Rx4ox6\MD̀/΅r}L۬_d2tH"_//-&/gc(T$粛2l^dj -GyZYMH(4"I jo6mxfNתХ:_kɋ=LCX";эKMԐtT.{aߖ 'X/s,m_^bU̍";RC4+k [xFLB Ǧ-vYLuIfYWfde0Y`v Je0,YBN%nȗ1w_Q%` A+Y=:8(=;np<.tvt#c+auF8/a^z0B+t,,+{ԛ5`xb:v7'@( vM`Nיz/O1x8lu_ ܱxP3࠲YsgК :5j+FNќi1 Uj#jIq Pi4N6*qݦ&v$K WXTEef6ޣNܤkayԷ=boX3>^[k"зʻ녤[L\\'IL>Sy;gJ=X_}2O| gR_˘9.9DK%#G(Dws(rL6}Ԗ9W}.ew#m~CFk*on ~彋֧uHUtwH[IoxOQDG;e8]vFoyfmENLȼ̧H'uݫv]4 6#rBTS@8B(rK+n5&Kj)Kkl Zcm.KZėvN'G4z"PwhHZ3.78Xݬt(T#קy1$/*j&EQoǻqgՍqZ0S2jϳ FDZEjN8?\p <[􈬬4CͦlƁ{T_bɋ_T6ߪU>D8b6q÷u#h_67Z8e(-3a  N|i׏QwWͨOس׎xk r^8. ũM?mmįٲvhHkۜeWV]t}OڕcOg@Qu1*pV9̵ YNiNa!R>,lɀؽ} a, ^;GY TwAd)ݴQ kv帑 [GWBOw3v)Gv${VciDGQf| q%9Xmc>F{Qj&a K d6 x$h~  3|Jg'D0o ϳ%4JH1WXmE G*lS[ {wy(] ZVw뒹 [T^l5oh_kJٺCϜ~Ll#Mpq&wN#@v+i6v UqؔP{ ٫(w#t)רJ: RH^ hiZf %doLMI<wܷ)wޭF|٨Άd:4lk^L'x^U̘ga0`]䒗?A͗X)!wA/.Nc)eBf 9 KsԌUcj %>󅦑.Ly"wOEJL.srыh\h2Mz|WVU39lO>Y雲菛RxU]U;Ef,=eVNdJzopu^ѵ)ps&2c;8R޽}i#& eyjMGU@oe&IJU1վi26 aeLzVm]SuXPCÝa(-E79/Kx1OaA5 %ʛD}Õi<Rx05GGioVh_}wkzs _*֨vU#JN9ëYJ2h[9Ơ=Hflbr"hmDW|JۊocB!רI 9RTJd]:*/!YJ(L~W_:**=A$LFQʞ"kMλX5uQXUP䄔q>9'|D4,NVqi?Շ܁}HD6/?:#ɣZ3xkfƫ'y}<.66$_/_khWN`i&u9m2nUkc>; nzDICkA4|Q)d?.&u!?ԗ=c\Fϼarc7Y kW'Y٦'S=+ J0'Q/Os n cT~ZI{𭓌a k/`Eoh<&[=]{,M#[Qt%/4%ūu;Sqt_1pmv"1~ԠS "cw̹?9iUF+pVJ e=Ggrc8f];7T`FZHOhk 5H2O)Y2Vܬ޿4bN 4F[dc:? ~JXOWqLCE~:ECP̼똶AS56sپrdqͽXgŔl ,pQ-F+C}FԙgIjVh'5!5M1 &o%RcV[s#WT!̅tW3fgXvleVp`(e:GܦQ fAsq/eԉv,f?@6O,bF]*NTYu4O,~.zsS !*C;] \꬝﮴,73GT,acCQdV/ jy|jv=@3v12I}nhhireޜ6mHy{&^,d5:%fyIv8גdbSo6׺qpgC:ƪ|ɬ,1,Flh!-Uqٗt68MVK#$¨俤xnmVRzgo0Z|6cEcp}53ϙߑ=LQ%{c& U4QV$Á<_{ u-)ةIvlmU>9z2hi›;Dz_VjȗщB1v}:h4 "j,i%ϩaའ6ٻ@vz EƵumD lWj؁ ҵE1/)֍J*r&g\ժ>'v2&Fcȃh:ϦD[cp?3VHK>;7uA6qOWGz?F ֎vGiEDpqUR7=Y7M— օWk(F44 ]Dgy }2[HJǖ8d?$EI]!'tCdM%86xOQWD>k'W>&Z=cyhKFNǛ,C>#TOӫM+X߫+ Gkׂ7#zHS+Z>ٲZ$Y<\J% V7QTߠģ]FS4=`A08[5Rk#_dc}帲]u#} gzWLFOFbڦ(%, Flo3Z7$Aܵ,-wQyLEdo:P(YE#F7DF(n>,p3\Uf=0I)[R}B&]zʑMq'0#*9TIa?.)p8ݷ=eЅ;$ֆ66==u1;bn^{O ndKāU整^CpˈۖS6nIb?2c /fR. efU+I%ΥiEeS}a ޛŷou=mJMʃ}niչ~eW}-@@^U b 7-n1,dNLUsJ|f! VmB]NrqO(1@*{bQ1\c:vYku1"DdF@u8)*U6Iʜ|_7QK9xpy Y{wy=|(W3zz! ^.+ k -:}r ϐ >ࣂC}6QRbw+==acŌ;g󹬀$Z-CDoy[R 8Hl"_w' 0BovkR6EsSa}c{kƙ"rRd-R;6̓&:(h+t,tm&DW_A^{ʻ/ݝab(i$}BC$DGTt0*,p$ k !ۙm,8|26 Pk uM4)"Ga :BoޯoQ3`sG :ߪ XG|`FȬ&/ܯ.\=TQ!7xN)򳹖ˑdv3/9\aC} 4\y޷ʨ).c 8 q{T10eF$MdpG Iު9Z-A:Y *~Fazrf~g.[A=--jUΑ39Y"F|0 C4"-P,ZR$I: yĎ i7.D3m;L5䃯VJ^D)#dulP \;!/a',YLsЎ싅(@|2j9ǡ`Y$Lh} QK0JSM$\'l /xm264B?)& ~(.ӨAwEv vXФV-.Z~ u٭61&7/<`7\5bV hCGjQ*OmZ$2E~"hGʡ8MmBe 8/T,E3V &.SEe,lC0-bщKYM񾽋J f*UZKRh)/b~yh;=G&~XBN\ [PtJ}dPW`J=K„1Ϗ bGb((<ÆUo^Logf|K |mhʟ4~{.J5>VǯeꄈT_^m1J#St0mCJ2UNgam=n,+l Z9v Thh;#ar]ע]DS(BTBE)Agޯl > fMn}-$[ l+ +p;*xm\/HTn1PAfLuœ$uCp&uѓl0c2>QRcQ|~߂?ۄ?*WWx瘍ލmSCu>Sߌu%77(8Lj|-o^Sқj@E7UQH0 [.E-CT)(F^ǧ sz8GBL oH*IM Q ۙ]S~2HW #X@B4x%^|?Bǥz=~oGނ+UI㦛OB\ IJN ŒTmq`\z&RW:,iٗ@X2)0-7=ZcO8U">G &.6 ,moEV$Jclm!Sp'3qc=i6}U"ۭss9}!^2-t0| cڳ+kY<V;JK< UG͉6TˇyLk~܋QVțE;O-{u^ }7Ƨ'KˏFB(?ά߫>>PP$tL5Y ?_Vi%ruaka3t]m8i7P- }$ fMa2G.Y@.IBNhV #,uuj)v=rȞT2Ý.ް6P}W9\EMRf@ Q.OziM ,6Cxo[},Lnko-&U d5#U8P-4  Xumk=> j`r>7jw h_uV鰨K٠K'-gd^270!c<։ՅXauin`N`'5 I@3ފݔWO]!iOS=[6/,9S'".Ĭ6WݑZ}J%lLA;qj2F9>+X Ƿ)/:*cm%koԆ̞iXc&\=?sP̤ a)$ܪ&ox>#ө|btGw+L''cˊ}\TW>yew"C=6o\WwیΏ6ZU;EAv=aFzP rrY7fiA,U~JjtU̯ J2n(xŏ4?J3Q0p&9V=՗r5E%pcCvm{ uglwQdp9he!S$ocT&Y7s,BT"~$odeV"*\`Z:Cy2YIcĚ䋤ٛ0MS `]fx%pjchijYp੿dZA9Z( VZNK̫% pM pLqy.$uj0 B2\TXRD:1iy/$tk<#WQOZ45+N $5YY䑩i=aʅWrHOE {{h?6әD|OPt=LYV*c īn[ ObONY mAH6ZU oCS1JF cSȯA)BZ 9a}閱p9ٽmn_oY =!T$1s@0"ȣA2O.&C=r RT 4"Q]JNj;PE4@֢{ŃP ]ĘGFcn$Ko\RNPҀhoA1|.߁ B{O*jh Po\ȓaR< 4]hs/kr2>1|06<Vx4;1R03! xwQO0_-<yM < < s'lWIRAxj|nWX\yvtͽwN R!Z rB]n˕t*`DIUg3O[$Q~=عmYm⭮a}d[rt츥$բm( O*z S-c9$2*'%ՖOT肛K뷉\MY+ÆeI{}8LQgT ~K"!WM('P3%~$NsaԚd`ePce3zZ -l#ȈoUCOwh[=>9t U)+g-8˾XXx?[˂Q#g -km׏^[ȤдSbɀru 7opN~8NOl?i!&+Kl9bw)YQ0I?.˵"P .2 ~w(G`eT|u7?`T|ܔC/ f^ V"\<]$Ayyi~2!.$LViLEt&7²J]ߙ}^WR5oLJ8k9g (`^1Y?Q%DJݖz̷;\N< UxR]ӡ|GZ{P')_Rn&oU.G+פ1 a$Rp$L#=DQE!FַW#fq]=7Y(hCt nV)j 521׬.Z[zƁ=y͑#@ԹEJָjN6q L~zm WW'.:w6f]Į+[GV@qmf qx@eNq[ꌂw"vEښe˱,67)LDz`޴2S@"F@DK h=n >H=gpWUJNEWh&q$1 cI6@ajzl컡A_HbmR).#ϗв!n@58TT,Y.%F., Y)B 5@wZ^cP@oboew9TG/]L1 8Cp@QLqW47sPu{}HC{Y0R,0E=EnQW&bx f"A҂ u˱668*N gIADW <秅ZxK]pV y$g,F1:q2ӑd`ss{JAAJ_yL7Xʁ&;DqABQ(>6Žkow5]^\NƀUݻ0q~jJ6؅aNlQg[bd~ĠK bPqBuau C띮է TP {oD0q{i14{4(uMOQnIb4Րzd +OtAZ2=h?Vcr`pR~S,@E+K+ pt0;SO;0U/fgٯSԅ;2P@3#(ᒶݿLQ3'f;CZRKCMŮZ=.s  {g}ْ$:pTz4csWė1u=;ozMsL=$~|Fl17 >>K)S84 /) F}&*b WԏgC i -䘃#(6u@m=6DZę^7$,d`MT%/x-O[פ&Z P0nP gw bðv:b?B^}z❛@F eI>5f9(>UP$_x%p9Y4mmmA.N0`UW?X3Ή`>S2T%kF%fU u}2ɕJ$6⺜+zϴpP^te?O0`ȑ^E0XF6֯dPn&&s1A%Y(+0Z϶TXlћH=w=3M ؚtF@2G@*fmwMuL\Vۇ&.TTH5L)4(M#Bç,/JfEI A$(oo|i'C/ƓJ~oG}Rbx}3 :JqwNtC}e4׿e`w}؇A`K&g0Ad\C[~ l/D@N57U*;(]5/ZGKI/)wC\l6\,U:hc4]nur\Bs C' +:kC߭hZhA.5핉js Yu8%JB؇uKg[ہt>Zo<-ٽgDthѫPl\[?J){Å Zگ?y:$[Y)Ԋqf\v^Eq;0/u?Č0eVmTΩZ(lϕKwg=;i:'B_y sLvHĎL~܅ m}o@\HZw7}Z[kB y@R=Aat;wlQ`ix|9wwԓ O9Q Z,bn|ΞRcM 7X?/czJQ$-N\WJ:N| 2_SC[V0nz/tw=Oj >)-ee䵾t<^c ./M xs]7Xc':DaDģL컇?5Rc0vG´йhN.Hq*Fdp%,ϠZ̷uֶ`ы%^]=*Ԫ)c;PLU'3s`F_#(7YL+A,^/ `rv;78Ia5 Jp;tۍaR\?'P0DzR-'_L8'bM+ M(1.wXMk`GMt_3~ ӱ'֌h1}0W mCNLb}6Ңk73$u*lB1Acw\ h\`Rlj <Ϋ!Ɲ$kC W;/ aq+[sc!цL1zk/#-<7SOa' qE=)I@KI1uȅ@j؏S oǒ8Rzl؄+ ½u\K.G;,]BC^p:&U(.y$A#H:u,#2MtF>yI-} ƽPFyyqovj:NpNHv>,M,m?ed$x'^o.?D/=7[m'\,P3Q?=^TÝ`>M-Zrr@O-%=A40L\de懶@nx %D*P h,  ۜt3&\'P!oZX2a%Z:fHwWkj>CyݜO_Jd3VuTlsa%6ԯfc0n-}Mz\iOou0` LEdu9 {e-vKQIxkҺv(?(IX̔EMmΪI{I/]ޭؘFRē^$֪;`Ld@G>%4Zɡ$$!odn+ۭVe[)+!uwa@M͠?ֲi4KvTzEf>K!Bx1fQ @Z JQi-wzOhVDqn*”ǕkVKVB&0W/:F ZTDS8z3~$L= Xf+Oþ@k8} fH冊Qfg aVAu V|3r1'G=@>0Eg0Ze2B>tTM9. ;̽Nt()d惑:AE +;<l_5+x)Guet5{qhLnegjRX _bΦa75#]i!jMs9{m(#Ukˬ-G k;0Z*_C[G*VHE؄sԘςlTdhɂwl~f,pAG)Z"홰Hv7imW~7v^X?I.ݺ|A{a$r w<v?Ms=m 5僦{Țk2;58Hץ.Ow>>$|{6LDǍ}M3lݍ2ԓ˽'TA$C5Z6 I\tyߦqUCnOfUt(|Ixxеo"ůǕWASBI5팴Q=;RϔY&@zg;K.W}PIB\R@)oYPxG(w@'Uq0c+WPa̙MA1fTF:&qVO{[EdYC{AUt>h؇9%f & LxNs[r2-dlLIʪ?m[4\m|z";]g8X ,kD52'p@՞  f0HH6")x~b),ܼ}+{q&Ft!ʾ9.u`|\x+cMb][YX jX9ض=sQH $ԆӮ.Q96㖭"a_Q@=$Y89y9Ã;y\+ީq7~MJpb3uo d?DqtǞ9Rk/tKalr锢л+ɸִmINI n?oȴ$i:m~L!MGճ3{1GD䦞TЀ+VU ,8mT7M_Ti'B .i ;dޚphS2lg7vMenD'Wh![fI\j᷎. [)/aĥSj#7/Avf7zg|F̫p]fuӊ*R释Ӻl&pH e#j-C!r"9Nʟ擥|.E;`Sp(V<ۺ$PO4ig&N4_̬ ˜me*7m$3Ww%F/<~hOM~ [Ճ 9 (1Y]c,~R!n1H+ \xpcpuIY؂9d5^ ?S?5ԥ^ jIpChk"M5ԋ^Rd5|}NߴhsmLݼs0mE,u v+jzbBrO.$R%Uk#Q0.FV ` IQiv%'-K:Э\ */`gX_}g%]B5޾Ö(6٫bD0p7'=ڙ ২Go"Bj!8_N]]@3fi8Jq08 fg%sƴ2 ~D}Bw-g<Xn:g[aMZԺ}h#Kㅗ<6^ѣAa0"4Vq؃*t`hc2qd s e+Pql  m'Ɯ)2% AMþT(>hn:~YFP YA3eܼmJ V&ȩ[n6#Ңb]EJ(WxtZ쏵#hݾ/>ojmL|#Y0XOkI]j x 2_^+Qm؆L_6&h$(ۜBTHVğ &HP:oV(POxaM#gtBU@ EnSr27_C5%lw]c}YΞ;GLǪ3) Mx;uJC 0eG4t 2 `?)(b$9,G  =_0*R{q$Ҟ; 4?eDg&ZOpLXh5A>s +B:5pYNly^/emEo|5BOfe%)t0t]rf@A)ȽvđױXgL]˖()37;okl_u#'sVZhkY;;'.Y} oeBEGd>sgB?݈&ٔ/fAXYA^ؖa ?S`)D0ߴ 8-(ɃGsz8ݍA@dN|jQ\QXtΘ{³VcSFدڍ|-08 3m _Ml9{f6MSu%dQ,Y|hy~"v=Ijqnxd-X9WB @r])̅ V+6= ߡVkBn=#YǣP`q2xFz`]N+/:dF'V~lVڛYX89tQTdRVczކʉX}p^2oS>i Y0CoaZq0cKEhve%_qK`m.XmJMD +GyEnJV\ŕ@rY%'Jn8vZM5C#0ѧS^tx'=-1mk^# ɴ5b?u&b2KvR)ͽm7U])S[VZzs"!L ́fƮ wڼY w&Jc C4~*fͧEk-w+Yd$~>9Ї/pwOa==>(Lz"357Ҋ(Q3s \LOL٩TsA!z`&D' [%Y-خʍy &ET8|wЊ< AS|1n U˅܊^-oAk=`|t4^B܊hƜG\4컿=zw3}].6z:8.JP5[J̿qoQew5(YbyPU&7~ueWqm+wCW&/% 0W WwޢP wVF܍&]dT3P*{KAMk ?S`s]ErQw ,sO/ OMke%򮮧 ¶[#z8$9KQ@7w:k&K;Nk?q,tilm @#Q:ɚh\@HyXz+4+tzA;JΡ FN|h QB©ha`lqC̸'Jx#E2iS_Uݤb[jt'?R-b}8pcU2`|ݺ|Fx D0EkJz{\ QeiXmiifX!/u1 OBae?9|l9.3 8\yw9VYpu8i@@ -Z; ٳ:Q=e, c**Gao.!1҅$C1eEDf|#‚^/;tt4Uz04ī'R˨B?[ %iVN@ ટ GEBYča|ɴo/rG?u|IB^ve|'nIi8 [s%7w 8`Zc䣌v._0XbB;5&x _p>3iC4e`3J@`6ě:|~D&-VJ6c F)9UzZ G7Xq *Ð R%}#c=¤d>P0`ye=|'J_Xv6&~߮&@)ocWY3j"3H[n0{Jj'Pzmr M*:74ZYFgX R:{ %/܎nh/yڬjY@^3H2Cſo`0p5%_ajԉ+)4DH-V S}p8q 9[^I`_WT t> qjh',1(0W$T?'-f_8 Oá >*Ǣ—n+ 7SWnͻ֍1g; 2LŦh;ȇF^sF27WJ 't%>6X|)~?M Ích;X\A*r#j仓^07WV|ᖫn¢{R/["({ؠA뉳t  4_SǺ|}hZ 0|+L[y49q7.c!Y*BۦΓS f4SDܮit)Fhan4XGޮ+l+(ɭfXн ߰1a!j`)LtDH{bIeHq)gP3^66ꉘ8L ]Ut2#Yڻ47^#S{7qw_g\S\@R T8g g:@MV5 '&iV J~++F«>d8wn,EkY9[5ab6 MscjlD˦ipsaq1ïp>$tl3?q@r,=IPkXJ3 bTǘN F9IHל{s 6/_itKCn]M}kG(9e@MHOlSVߋ/ahdF5}os#"oڠr"9W;(Q /Gerf SȿZvDzgl|jcB>?_86Շ;imO( 5 5'Fz9SQ':i9 ^:bػ,L|r$u/ZKQu2Sn^2XgeKlmIT U7+M&FX9$o8Bt1Cdn % mE+li7^ G^X2C>I}|g<3ۈ=8_x \ٹvFEZi}26$iB5dNJ_${K-wZ3*3;N0x+@N~2aO^ ? ˍtkj0Lp@Lmv YWU]D4rk/<j{zt8 VBe E?ѶrB!i U#nߊe3yL^X$d.g{^7rh&kmÆ4QHfgs;KbЧv:u@e.vP8PMٌ &BSp.X +!1q},D%')cT&؛kF)}8X*{weN<֛ ^L2yl >묇˫""3.v. pQ~$Ua0(] Q wcz$?֕,x/u;{Wdԑ4MM/UmőP|c*0|A޻񝸩`zGa[$|ynNAMbUD{!+)yZE< Z#qy_X,s7>]vzT-^JQ-]q$CqzR2Wjs A}2ibA^,c%-ʽ!kl+J]njɸ Gz|QDճ8NКs'v>PBlBM$:~{U)CAHDЩ&x!jHA0M c&w >+0DٲzA)j~ʫEN>~P»Ұ"e9 K0plDSQvf V7ONYKȨn"ZXdzIu;=A(bZN(TωgM8Pl  ƺN%Iwh \H)>\;a(i6I }6N2Ы_EW[s?df!G \snVgҮ_y8 T"uQ#uc{0CQ9( #˲fXR 5:Nv+:ڣ<.ժ!czI9 EU?;^3/O g 3L绌bb(ә{Q9 Z)~Mi6S;%_Q pNU) J6c>5z50_a)#&$t a?!ǹiiP?'>Nx|LmJe#9B*7s4i!BݔQdl$ץE -lcF^QQhdLՒhr {Jɾ25Db`b׌ź(LjLD[TVg 7ΠGE.zT"FMBRlc:7q/UȩX7"n3&HK-XEP<{h^m'ǹlyQ,[3OsT{VFB{SچxRn=(KS7NRDٰ;(-5,FU&N5*AxU USdi zv2LMf-.uIwz}p ]wi x=2xӺ+<2GQSn;s#^Nc[%n^N8 %%OPDPR4 @oAwrK79˼SNVE]Mo :yDz^%ұ0`\q0kI=s%F~VUB͕gN)op?G{eK` Zm"#=/._"w5aA.1<)Mk'|`S1 EFl 3 4Ps$.{ Xt"x|yWYB;ڔNdes@7@ ÏF0ZpfO؂8_ @<ڔ Rn8~<}IA4ó;(Pubo0=N=X0bN~ݰv.{$e;1Vb=\s0)/!J3~vHF8iЧ j_Y#n}1kpN !]L ~:cjdXЪ6Ed: Qc-)ll+X%x qo|,#s3fs}|cOK\ }ɉ+'clV,hͦ4*Sw(sm`P)y endstream endobj 72 0 obj 37859 endobj 73 0 obj << /Type /FontDescriptor /FontName /LuxiMono-Bold /Flags 5 /FontBBox [ 0 -211 713 1012 ] /ItalicAngle 0 /Ascent 1012 /Descent -211 /CapHeight 1012 /StemV 80 /FontFile 71 0 R >> endobj 74 0 obj << /Length 1126 /Filter /FlateDecode >> stream xen*G9Ói-!Ku~|L@*Wi5w뺻?/Χ[_t_oG>z|?^[gvzu42bw~!}n=mLeV}j~>ۯWłiOϛ֧ubqy+, KC0 `)xW00*DBTH YB%TFW18zy?.wn?q<561 endstream endobj 75 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono-Bold /ToUnicode 74 0 R /FirstChar 0 /LastChar 255 /Widths [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 73 0 R >> endobj 76 0 obj << /Type /Encoding /Differences [ 0 /dotaccent ] >> endobj 77 0 obj << /Length 229 /Filter /FlateDecode >> stream x]j Fp`&BMFo2BsטPQ:7\޴wd'?App$ũL܏y3RķqlPURT"/pxçEv4nQ;#RBozDP?665\\ SZBxSYӀRTEQCuR wM^.V̟}x9)dU>|}#*o endstream endobj 78 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono-Bold /Encoding 76 0 R /ToUnicode 77 0 R /FirstChar 0 /LastChar 0 /Widths [ 600 ] /FontDescriptor 73 0 R >> endobj 79 0 obj << /Length 80 0 R /Filter /FlateDecode /Length1 4790 /Length2 40613 /Length3 0 >> stream xuTۨMt;;;DK.CCn?ηw-]˹gy--++C neoalxlspҾv63rr7r5L\@?(^V UM Dq /q(533 ZIY[FQ 27s6(ZL]  \.#cf&fO],G3g;+\FfWc88:;<{{L𸪲?NWK#ק]#ML]}<Yٻ\<]26Z8y=8q+ XfFΦf..'_[1ӾyFF^9A܀wǷͷ;>>pts1(O0'hq>E8F&c~jr@xM&sT.p9x p {^ |&z>#p=yO@`gn03!79n"'@307 >s?A3虏y8':OpϹ  9W'6\y8s}b|Ε 9W':gx'g|^ ~xx333333333333 "~ O<'F$/D"x<!O'R^R)/)߇ 9 9 zb   zb =ApP!leAO˂f䀨"XO[B@@U;YDUxVӾ=G&B︀w^@0c , r̿3r03`! af X/@7BV @d5*, Y`! wA0u+, a`! KaY X;@BVµ@|-, qgf5.," y`! a_XF@6B 0߭ "fp1$ A`)!| [ adXK@'^BX "01lj?G݅ nz 06"  6( Am303AW88q!D 3C* j6?G|yq3S`fÃbS`fWaAm C7b>jC>&8.@|w1懘翮kA a#eѰrr3?u~9;?//7343A8:Pp >`kw]C(02o܌^:F'i^'d7Pk:@bELhIx4j@ރc*yDzy|\89{dP En;B'NXЃT=%AdtWKLBw+Uʆqjeygґ7=.{{gNwaĹO,`7/m}_+vm8Kَ7RZ(m\% |K|J}-|E!I;˗ #A PynExFbqAC\ozv{ >1p iZ.|0ށ^)~Jy6q4\3YP_pG얗ȍm1ӢOMgFR۶$ 8?Z[4LR鞬4`@uQнL{9mإiL"?6LJiӮ1% ƣZ<ˮƜYh[/PhHf5a948?o,{*bu*4[r} h SϤ[eu'rPKMӖgK|?U_\j 7=zqOة?nUsb?JPⒽClH-3{`UdAkdba.^%; '$  LJ%3w(_,Tbb8{D5!ź^ "O#g8#(0qʀjuu3[ݬ\jBH}oWhp>|4vFrг_oa/8jүp1D:>%Ms7jgV'#Kf,Uݙ fkc@b§khPᤌ_C;U<~MDBz JWƘpi+{kO9z~4`\qo=f6Y t /S7EM!I1r>\unѢh_GKېT1ITےXr !@LG{[YCTN`!}d~-3ai3ۂ ;7;KT3/#~x/Wı_ש5L3)܊9B+:5 Ipܠjb2w˥WZ *hx r=L0ϬgW,,UfL:M*?Kl iN.Rӂ8 6oy?z!΋*O>Ϯ u9Uʗڃ+Lf&25o>fÏ&>[ғ J+W-n֕03M+۹-izRO Zb]N0kZ?HN.~PP"Zkz//[9P`~Akql$" :@uR+ _ŕ7`STG`3,cfrWƷJZrMpHeeV_ϒvcg_P@u$bY9Vgc ]@ Y>;OF|5N,EMܧװ,]1̟WR%6ͼT:19J}q1Z"LyV{^_mpG?Ke߆)mV _}zތqb4߼k~JO\s8T>gApc 6"`xn-HMfv /V|^z4U5sXg&[rK._ ت72*GZ uk rV*&ҕ"-t g$kTv֕CruфC.zR'}mbJ#㍏Py癊M ׺f)M)og` &u(}^jea~Ʉ;9Nyc7['bqA,ۂ[xO3z-~P~pt{|zioW#'$̙b? CpY~$XLMt^K,91'iveA%"}HVDR Fkn$;5L wx d4˸w5J*DG@IW1afriӠI(S@T+vgĺHx F L\,5Y {2dUGŜ q%ݜ~n7,ݽ'2X 6G{=rUd:&TG&%5+%R}r"UOwo*>`z 3= cQpϘ6Lj 2+dif$ Gk+tYoIm;6|'\|dyוBzD+[zg#v=Q;M&4Jp7+g!MA~bzOQ+`|t7'mr}ѼXo0+Kn9ޜwH`g+,'JK3b7m=gj{t]Rvm"rVx.27ǪqP"u'SN9TZ"t\R,`mg][SYsY< SBSa?BN䑣+| Lr9O%bucR;o/a>IHM.GuCGwkogAwwϫAzKYe }Kޓ:Mj(Շ1hvwΉ)ILAYIf2$a@bnsv}\ y_ .=c^f(,Ì8ɗey˽)Go=# 1FI[uVmgޟoxړ95ɤ7t"$=b;nɈXS:~EKǬSJs)MՒzKm 4R3BBdUpvޟѮsbٖINŔf7F~a7$$[񘧼Ry ^ܣ[ٵg]y}t^D1xb7GE^ `^(zv5@s6p.4r+b`pm2%lTU~C钥Z*ʐ-o7#YOC'L8MPi+^+nq DqC n RH:¿Q~B kNzh#3r*-mL2&DۨhG]KF/_Rz8@zUFEXHݢ.5::*wmO} ESdWaDd'm6[iYѫ*wÚ/OX2 l$Ka̋Sߍ^&}Wf`Z6ҵw[D-wUQ"gҗHA_0)]6ӑ!h"H~ˀBf04;305n"Ѱs܍g ^9ÏTښ%S&`-XNs[Fu/Hhqw?T\[xg3&\{#Z跶c7g" 9gk;3F%,!/(m7I YRH2VHѻWu"L.`ni99nSוr73yĨw@ẸƝp,6CHy~޷ pUbܡK0ox~!;f7D^PP((̌ ໊e{,;餉+ǑrLZ=]}Ig\'GOr:frYD[/4T=Y7[-rzvYXKrv``QYybOӈ;w:K -U6 ~" Kto4@yܜ:V]RYAlf!6"C\~P[8qK ń5وKI<|e '^~8"oXy3Vi.ᮔaa&!O݇q( )t!8XEX!\oolk6:&y"Jj_QK)y4Ē|~Mf33\ lW6@}e&+2…ep-,L=+#TL$sT8dQ"xid^AkhMsp3c~>N36RkJ-=id5Uqz$-Bً~{*yM.mȳ}~ڿl8 ~zϢ"5 㬶AGyfn#ۖ# Oa58mwS]VlZPI(-٤`‡˂^W{eaʡ KCHw$ &t0Gm@{se6,.oH:1ӀR{I3ssC9l\A] Dz$pvu&6ܞJ%Kip0Jks~}͏-FXw~͞D p2{"^/g?ES Bps]R%t/MwRqp̳ؒs RUUP\?]_].yk4pxw"|XJt_pZB6 z[^k7u"͑D>-"FE~β~#,W@򻥵^-]Z>/uEEtdR0~ASy:AӇR~-KjrOm.R1cI۱`n1۷L9˝H>~_&ƻX/_Es!OA3WVy1gk՝1Uʼn"BƓ9[|E¬r*-qѸmTo R,*R0cZ й6% vrM1{4&2h i9|oe|gשo(͕+ӳB}:JQ?Kh˗GXpUnJmp3P@'iN:y2NpHˣ%M@uO)oj ٝ `D1tYդGESV,8]YP+H??!Vg WKЋpf+̈ ְFy+YjFrV_M<7gf)@(J^3۸Yz ,Xjڻ' FPh4tw{赫Lǜ·a_@N;ZWW ʦm)]~&o2Uun'y FjhZFW=l0y!a[n.]F~񘄁7Uue;R}RF~MsѿfWC,ɕF`6@`Gat6b}UHi?EHŲ@pSݑ`r.:ibL{s. r)!2[ BsN޻sL_룄%Q6fx%94-Ӧ {ns:79)}Bu 13aĘbJ;6Ϊ#_68VyJRy_&}Ş*^ MW*ֱ~/2-dHYxWPڛN,"OWgÆ.n#xafwvJD$EZۼa;d`h}ͥR2NA:8P#7E>_QJ$!=s_s/~XOK<̓M,ӉkӝR2ȿ!qYB'KcȚ2-*kEwoiƵ X/f9M74Gq`,$ഭ1r̫ђcE[gpu j(}'&-V@I͚Z򈃢rnRAšia`fMٖu׋y,W,vONʳX41Iy5W(IJӼ^LE2uDJcd@jbe_wд0UjW1ޣīoM&MHrp4  K#u iʾE8drF <@հSvD q2K);Sb&٨"5n4dyc¤MDѭ5pguX=FϴSeЏn!K5 W'}aL̃t wpIf*ԐB|Cow۷Ć g9Dme.tbQdrG7g}; Xr8?*>‚Z\sz5, _WǁHDЊyMRBi^͒7g2d ZMAC[!@>UК2`N! O+A~yA`I~#ZR%<Ĉ;\tiPKӗhpI6?Վ-ߦEE6ٶBxkԄr>Uyj' fI A͋w~i:$:k_䭎'ubm)q:qS5c)+VƝnu"<+E`xvVYpȱػlt]W<= ~E@37;B"\qwP=|NP;٢q|f %J*ǔWjt@"xFp fi_3O,M-wfg&:5sؼ>3h< kv||~q ~\[l! OoۻLr\Iaj zQ""&zs&k!q㧿C0|ߙeVY%:v9#l`\ N/>jVM^i`?g?+e94Ah%S=M~6JtgܽǍя,H'UXω.7zDT}ΗʞFș%@<"Bz="//IVZ71Wjj[xYJOẒ*^Yr7q|cѦ|EE۶PXWThTwOq%ʣc]E! |qs:_.ʯ \x:tpo6jTh4m߆2L©)-os8lJ"iM,lpۀ*P6QklgX%”|%sHX1rs!5"nIOE֦B(>j)^vjO &Rr}Gv;d=.}zipC-7߳w=|hJˠYƕXFQ]bC"}X_S1cO $6:! Civ@qԺ)ṭ4%*.Wx_\J7ŸB(ࡘG8$OK :X fĝ-%VH6z[;̋kO S3#vm;voc? E9tHnI̿6*:9#rmt;P)9t_ ՘`Lբl5S}xXYp(W$5 ȵ8Lzِ-#~n<δ ,).vm{HF Ga,C ϺF9Wܿɭ/ߞFq|LZt7[MѸ"G 1v n[Tש-B[ͥEٽTy$;ʯ:RB@#9y8oD|ucVUqtf4 4Q},}K).|8oθ]=z/$i18WlHw|gpḇTT5"+ΨWyQzxf+zPSF_>(a,\+ V\xPEFkX%6E*пZ\g\KRM+ߏDnz{xOQ{AcJcj 6ЧO=;iؿ,˦H K< ~>QϜ<ze{ҷ>Dk;)*8jȨJWC;p  v($v[#ClQ"3[%CkюƎYJB dsj_%i^x#+*Zt/Jb7= WCȽY[|GksiҔ~H,uVf>2{݇1@ k@8ط4. G.ym2|>{eFLFD^qQN<_[}8_ ܆YI8%|fk. lbi'彑I3[?>zw %X/rC%jS޶'Y>Wb?b^@1n0(4A54HQ-!kͱ474U3hyl%T/1J|ٯYABnb>e?}!9qXtN,Ǣa?ҔűA+^+$K<Eԑɏ{kp~1XR9'yق^2>0PV.:Aǁ}JuSbcZb뫢Y]mWktJ+XR_= M-$8޿/"q#1өGa~;OF<*1 ŧ44) n`ZTK %*u/ O d%'ڌu+h_j9xp@l4R v1X%Pb?Vm@K3;;Gpƚv2}ɏk'Md}L~]|~ ybV<-A/2 2 VBnب΅3|:7AmgXg gmU+P>2.MFlo-Ҳarz =iŻc]G(v9,Ѷ8?F./D\gh OHPh)#|4KzfE4h6@NeP09Y胼]԰ON?Eeimr"E =ռb#oe>] UGBViu-R=Zp -k8RtKLW}i\TI]zi@];W终a1 Jwu_(eCzq7#@lj#nk=,g=y剅,#pJ(CZS`m-zZ2W"Rڑqh a9u'G/`)yv*}Q%i&C|'nGh v|+.%TH_oյ 19~_S]<L K8$ ~\5uMvn߄gN,@?ɹoOpL.p`L\QfnLG Aѿ8Q 8OGeh&˝SNm -}f2Cպ' k7 %S+9GFY BlD[4 ,lgai (晃ihg-%<c'5ɜqoF蹵>l4|eFNHONPg9PzkTU Bx08՘W}`,`7b6ı6h(N|8ذe|c(QqWۿcy8RLH筁l0B\O+`H&GX3d2<1vru\;BX-tc!{a$r7hgsuѶ7eT} t#Tz}S67t沁=!Z>ahrviTſ#NM؛}~LET>1qƚTLnL\|s#rwsWUM˖N[8xWrO?,rbTNԙK7K&XǦ)]#i ߁&YYu^).ժU֗ Tai^$Jy1#[ +ՙTia nZ&Q,8.Ra|] tr**[j#W+;wId!}P8W_L{<|^So1[Ț k\*+MtXʚ 2bhR[qU*Vi?"b;rP5PDϲdN6N:vې4f>Y^z qbpNNO9qAܺ4S$6`[hF(DfHoXv$~ߔDwk"Nw,ANsM tQb3ig:}:bpuAH28X={/%<Jҫ-+};ػeP}\3 > /[jo&xstTiOg8ed~$NQG<;L&!38]kawO_.95LJ®7_?,0jP9tmDᬁΖX>V35vpe.K"/N/K\>DPbCh> M_H>n̒)s̵q]pj^*d銋pa| Glbk|\Lb)rz冫^PajY{J}\$7HjyE0R_F]w/3vWWªaWR}\JIF\ 'Sm-mG&.j_aj|8pu1Yq\q*GW`};2>'QdA3렢)v0Zា#ݻ۽8VԂ>Gyn]U}?cEжxIťQJ}3ro"{͕Xip=vAtխ fk–ǀR8r;;7/V"El|. eH/h+}ޤvLVS Em*V!k1Q: Z8CvL6iqv".~f\" 1/V6#=vKKuG,>4d5:A7 ->rFqHݗ NW83(3 D-|i֯F]~0-e1Rp}7ޕUP$!_-NwiNΔpʹ;5ܺ=w0"W~ $x!hj|d|d1 Є唝]~$p x"[Fp]'JJĘ #19ߝΌ\IՄō>D 6CD8 f=)+xdR]M+Dgp@5YȢhxJ#GBI7TutZ=(K㽱XDsh>h:uZ]!P5,Ga\eGTexOৗD/ڗP;POB &~./08] )Bmoc,^8Q8](U!%CK~܁Hݏя4 U(=H;GU1DvWW|:%8Cp8#Ry`T6 j-nv"`eEJ6YfP:˕Bx/kL_T>{! ]N HKУdh*9a]ej/ #j$ "iXjd5*V^` Yv \Y]_8a 5GRmk\*/kOyy_B}AR!Zduy]Y˾MXSc^LG|٣gPDyR#;!=˫!k$ 4=R7M:ӹlW$=r/\ d*3gDSv{sՑ/,PtN˻6zٱ'zyB9Ƶ/D#K-B&JikfT {W-)5;.xiji`#Arj=k:%͵Z 提R#Bօ!<\%vt-_BIZ#t75>36C yʪ7Ẇπ#^1/AǤz  5[Q ښ)9(j&b}qC4õ P7hSG8WvƳ=|- őݠSA5vV[oN}\營R%aZ:&2m?rtav=D|2W]")r)TAeR0s{,Bg NTq.d[_ B[7iaL볁A! |2zդUƺ cK+a`^,.iO|uW4@q=i[ItY+O koMg dUOʨ5Y#mK"ɜܩ|1ػh1G!J{5rsUZ`v um^/QΙsz%t2K磮b|.xuXZZ=[:k|ϐ:Lh2^^rstۡfh:vk&29tX16LT4VsNJ9"yWXٛ^zGA6w)4xfq{19ᱮ#鸾uPHJ"׀!@+c"nZއ jW !V$eN/FA2 =Mb 2\O_:Q=LӚ 5!` G ;*|k%Mާ#8]j*ioo =ZUQ6̴S(Vj;chyBK/6 HE娆ɜ+9Phߣ(́L5#䂷8GZ֊FY_ ϲpa[BnawvM b?`Z -,tꜝIic"Ӝ2{R0 9wBަPW.V꒟ڰee/n*Ҥ9M/'.|9?#ƺxDMC>I]-L\3\qI@׈N"2 #M8oN[:޸&6ElBrcC}`TK՜<Vl`w$703|؊+,q^ݎζ%"Xuڰ)jmCljNHhay$3PL a2K9\5-Fn|"ӇNo܌ 6+^Nvv k;fAٷw'q&X|/f9sƉ#%+韯kPq)sk ~~=O "cJ,'&tU;=#;}T܍kWhȱգnC2曱zZQzGnR$!(^O$Q;VNY3[z.Nbƽ?oa0 :fN #+\Id?K^rzK*SYO_7ڂK&Sǐp}gҽ;Vͳɜ}xr+,0|hN!8 6CbQD?KA>Il,\ PeRcY:a?u.xZ `Ñfeid >e^!sN쏉G}2?)lwRz#\F=`ޛ:{0#+O?R{tT,Z._򘒶eRg=` tgRq$~N[zag\y;;9Am?FǢ% ʉz)㔎b a@(6NY&;E┼f.iwl~'ׇCW`m;m`xRAAni<|{y !Y .=yOY_/]I[; ^b)I$kcrO1 2GTH|%CyDSL»SZ\? 4 ^bۃ#/T7?}s=Wu=Sbr^=KϜ'yn竪 a37 JjMK109Qş> "MI>*[ΓN13{S%@1)~niGI4dF!`Ye l}qu}qqSݝ5t,ڐD;fR'3y7Zx6x·J9t* /74-D JwzJSӎRFP;jYꯧ`ω%K&nB;*{|?G.Q ? k)nϹIe$yIMv--̻ /Yd{UĸG(@Qu$pF Ƨbn<(+ϰ.Bwpx}8J.kU$HE:B6~l8ܳs~m)(70n_\+i[Y#m:,i`Av=hm μ+e@MzdIQV hS!3/l‡,"U?@NBC.շ_hIq$X*PkCuuC?U3Fi,7J2.TkSuLjsz[gj[[EOHE{uKbVm`B\&x9;IhE,늞z;ʭl4m?B*(4 ]XAOIY+=iڶ8G恚2 Pf(YCHҟ$,δFy g4$)Ϻѝ]R!^4loF䁟$r'H~׉MKY ^$>yJ rí_J4xt$H~&si$,ҏ)R5 <_o>J?%SąR5D7Ft8aʤ4ZDJ!Vp Mcajc<;W`VV\6fFqCfbr 7BYP\AۖUh@mwŚH{h;w*m׺X0 z6 Vbw/m*-0-x54t;nŋ/5Ete;Ι/V}r0YM'AkQqڵd asN,fyC$6"} `[灉/Rx;i8ךYZ`+jH;IY"U(ޛ]$3`*zҎvT| D5)F1dX*,Ө 7%vBM :b+-/9{r/x[{)V̭c 1Ktjhm# o ,椢p|Ǔ; ;ǓK: Elٹ4̶&PLJ6|׻1)XP!́!^Pս'^$=a9%杹n8!̞ K, ⃛2o{Eq*;u}tfm}~):4ٯ6q\Ť77kg;j={l9Jvzw܅a$1hu@/Oh1ѓPT]9l=惼+;1qzuZӱ$ܕ>5v3ھ6T9.[ة4>N,b[)b[ XʕWq(/B*697u9*@b@6E$JSX#V BhZ~BS7{![w LAZ Z8PdY`N4+-'@R[ a*,Y?L-3URqddZxJ\b_ q`),Gf:>XE(Ε74ۣz)#͸TOZs=AqZis\%~U[;mמf@?|R}ʑk xKO>F=75c˜'X\нN>>V$ d,i^kgkR+ dk Nčv,"bR;_KRdL/ IƥLTaRUT?r@(OZ`k";߃k. 4OedBz:i+-DO;a`AFތLS "u=Al%5ccrf &"t;N ab/i3ȼ/ww-ňokkNuS{9hA|_|et逰7h6 L"ԛ_f󃔶PE%!iIv'K Hʮywʻ7>riY 6) `pYްh {b$pe$uKJ>YV!u&qG}A8pʣ* :|kғ>Wpa2)o I l 1:oSݽv,L3^A'IVN&]腰)gyq襏z:~/K\ͣAݵka;d 3*qg7G72FO\ rϱ%3sxX4&B?b>/L3f&Ak LPT?3 3@j =\ٰMD\iL[D&xbhPJ[XZ TB^lC0mu&3p +inR_z4 3.u@w64af2p9D L *dVxWNgM8Sx_QLhI@c ϒYsN 8'L{8_E"\Ivu\uJ{Xܯ,HYr+/`} ײii+x- 1tb9|aѸXk*Nwe1Fe|VW7Ho"a)C)BfX=';> <š(y Ukۄ+#w=|YT״9fڄY}Zj[lG]?*捤Ӯ=(䃆pI7zǬy,^i2oFC ùR(#xW >?,)9\]{,i" aJOu'vWPHR8'Լ {ӔXxq7tQA96㚎Vutw\>,.\uX 14\|?c)DbӆmΦ Ґi;}*pbsd@o$D$\ Qh@.nRR(<{WwG~ZGJܙ}hf6E[o6\MzM (3 H.ib&6$ck 7<#Nf ~(h}LJ1:}A32f 4tm9^ UχG|6&V>R{>^E`)PKt4nZ3PP3 }AZHn&%zC<5 k_II^ vSʺ~ 5Bw;4ю2"v53!jAG'7 ,~M@#^ 6A:Jf2{~gZĥ s I?%<DA]' 8P`̈́ͦ\eza'F3)LSX񴢦+3^*p͎8\1|#F0-2,({]kdF b ?gͧOZ\PfQOѯ3$e;0KO = QR5V8}4=Lk U]?vhnQN/'" k?^5Yo'tep&f7NݞڸJTXDcGYVxev<}}hR3`i]Ck5E6Сϡ֜!,]g~ >2Xo7}^<j 1z{M%m˖!:q&bۉV;;acu[kp߬ȻGi`/0p̶U! PGheo¢$yyesZ{&i\GSi;Eme"ǢO &o)^}tMRX^!o 9+3k-AA +-0J?R&6(sړA_bMwzpA mF =ބI2 {vQ a9J0+"D' ŦC )X)h\jҒ}^3,VOaj d|S;ӠHHhj:dQc8(x&8Ļ8&]s$s` qm=.riF~rB-յAjI$`8&E:9R+΃jsczŽ"r m:E'ed.C۱b:]rmV͈ں^.YgܴMEuy\"~ҘM.õjOxl#imJbbnӟ|[I_f\OJң7Mu5!j _XL-D!$#)P4fΎ\%g碻{sd ˧)-H#K HeT4𔅪4O.(*Jhn}HH Wh,oN`HtCcc~B4J5j.>yz(l;#48ۥU ~%qTI?Ȗ5<3l`׻Q\Q/`m-3d.}?֔ˑRFE*o[9}'Tx`ke&goܺvnR#)Ú- C46 >.K|BsHCѢM}M53g=W:␃X6:=TWٽN*L!}Gpp|L'M մD䠥G(/F=gBsь@om?BM'J-5$Čp5S[ {w9ads8sH%um V11#-n2Sjq҉QRr!^WwZ*Ɠk"!U* Iq$tFFbz &%!*i4!H4MmmIb/Yg~ G4=6ĵP L92!][߶Nk\QMu/Qlyk[JD/ųdxUD@=GPKpG қe7 1_n"z,0^.^oZe s\wd:j]{7G a|?QMڅ0d$k8KD[^2589E_(-&[ZgXøGRBD"9s%ϩ55rS="_ի3M9dFJ7en89#ϻ:/M<{)KV >.9M5 (YWn~;|G sX4.ʹ/BSOYq&FQA#q˺Ղ:c$x|LtsFpC'sğ( dY).Ḍ2SxmϨ:B6%^!y"[ |L^ѧBhazI*Ku? w#_\&@P0< 5σ0A%ᄏ͍ 99VkzR`N6"0K_Y"Hߝڄ*m6G+ 4rIQ>҅etDzoq4&gBMK8"Ŋ_L6ộgt-oubjH֖(sNh9H2#Qܪzo*(iH{ j%+W Ϲm2fb֕? 7Ho八4b|fOvM6!6o Yc]?vj%?9%C.kr-FĄ2{U_y+vEdJzmL\`}|t,L QAǫѸHE6߸S/:fm$uʴmAxcv90˪z41RYTh6@Azrm'HgF`H(K@#N"̫c MY/Bp2(:]Jli Z^D, ˜f9~jߪ*[+A-%M@$./v4.[n: `P1*Ō^- 4*2VlkW J1Pm "Mw"e OMjNhI,oMELhd!'U5Mhoͧ vƳ=0Lj2JQڢ2r:O&juY TE`Hv=(4 d|Ӭw)de.|B؞,;ѠxDqʿiR,jS}1RKO@;>Xf eVԻ3۬fEXbҾbxR l݀s ?V夌=cg(ӭÏx=\ im!gmjOZ(Iǐvp U0p)M"ΗE*]e/odѩbUVa &s8Yx6(qg Ї9]fRA<5дsfwE`i1BбĪ!+ :| $[accCڐQMf [o,)>_U?(w}@c\҈fih#1սWBKzSi?,F)*v,'?8rjK ĵɥ!gabIdPJ^7+aQ!'oÖȺ{$Jv<ychC.[\s|fP~"vL췮eq3|:LPoOJZ7]+ _lXΰ1/te $o8fB59>-))6?~ Z =r{ g砭%GW,hږP@u$nc<%N+Z8hߟBdG~!6D3J د ~;:1~gzHixV% /K 6YY4RT&k4DцyE8T@$d͎@w n w:} y-ئA<zyp$:n.xYG/NJxTz|.&t34ꔿ𹺞~qٳYo CUئ(Cʥ?Ig^զDF6 6`OmbbWVd9,*ti쓠ʆs}XLP3Nޓ}umY}9g'Հ>|XM.@7+Ǭ] <'`q}'VَehDݽI_{| 5lցF#5%,)鿆;#[H|*VMд{ 7sZPj4;ѿaLMDXn4o~R{RaFC=x|&U1CQ@&< U ֜'ؽ&!AR]q"/}G^/IK׳]XVgDUge666+kfS=-%H <p\۫JtMsҩ"^`/ж3ea9ZNX8d]7+=#4BA L? vwI ,Ve%cHg|z/0,Y"$/GŌ5 MUz53,HhkJ"ZMG@ U&n$G21h5׋9H '-B.[,ϪR ěAi/H. %Jd=t%fHԤ8`ovW%(6yV(yOG \.t0PjP?#b9 /IN?)PΑ]Ýex];+'|Y-L fxcgʧ $1nOwID9)JGw)t)G*4ra xN;:^AgN̠@A\l!s='o8ߖz\ڗ. 7p:sDg-BNjCQj]1;E#0gLn />׏ݩ FK3,FڹC<4ҩ&w]U?JĻYCt L_5K*j}|פx成y=*(UM|MØՓ^(P>-Yqp`ȏhlü=NYa 8[)?g9%(w/o|H*xy VXh;)61V#`!Q#vVkZIIG8:u$Z}}Tm4}CPJ d@JF!mv<1k'tkNKf|,06]*^&iR.KQ,aYO!ObV./Hڳq;NzI}@9 .fbŴPZ l yp0}x{ba]hZ'Ӯ..QzvSi3ą6b)@w~>ٖM>D_ >{.˃yAd>ȁK@K|P_̶, \gh 5W(Oܨm\"(kA|tjGD!zbTm.qT5(4IC8DPI 6ejw:\BekH"VCY>8OmKך~cOzѿ 5kD"{e^CR!1IG&m7JC T7Hg[<3Ǹ;* C?[m3kI =S C Pj)#DN&ſreJb#d~K`&`kCwU#~Ҙl6PT`ȑIf9}/HEUt$WVX8T1/L:ѹW$ivR~wmo/4,v~ \x+gQn2#!owۄ/^Ne˥towڪgt UI~~og?܉X`_GSzaf$%RLڞ>`;e [?TFhfpPȾc /(@m£y mFL?_!7hRc艙_7ߘ|Omk9Ȩcf7 ڙawC1զ}5M e\SVL V$q;4Y WFmR.%^ .N7LmX2ɐDy@693Ȱ6$`5V5u3C¡ўuz>nӅ -NFG'>!2>2e?HzwOcSv W4zDDJ Д43|% o`x`Qj$zIΌ6ՑS_0` q+\wc׳e?쨸~9h%#t^@}I,:^ssx,'(r&|}#= UoRfEVXe}1S:C $"[֒F U6V3I)>bHJߘn,XX>Àuo%-{8ũ؂KЁsW'@2;e"{fǡ %PNΦ ^eBDmo2IMA2x*LppV1hi& 4*k;ş(š30i# O5NBgvPlW}zȖl( fMlkd3/'jK2I}NtM4Ǐyq DH}%wNlTJ1'&Ǜ)1} hhqß 'Dy[X_ܘWɌMnYkF:7 Qd __#:M$ (,74 ,GU2y%0_ YMz؅FYzŠ>5BӍ~ gӎD`_7w}o_0WՉ~*|V/T@zS}ry&> \ )5٠ԕCq9*͹trx]/qIrgxBf_0yK8Lr]#jGtF7Cf @{Y񞢁5.m6ۊOr EN3TɪUϪB.vt2Q^P0X:I|:~] fJ4rĘ}Gº,&I01! =|Yʠ6Z삜jMǶHz#/ `"hF\POo ! M^ z._.eZ K/ H_jX{-Uj N$7s!ߞkt'bVY(砋hw\טSYr9 ฒA)AE(tIП]yT{1?f !G 1Qj XhVDT_s(?41ЊC;C)=vÑHÚ *_)@F'@=ؘ*Ec-8 3s]-E !z.2d-PX4 GPb3DΪŘ31ME, %e5KIqw@n\*eg,:C\Lc×#h&ߜtmWHÒQt½gl`;^T%K6XT[b˱d?aj^LCt1qN,H]?83:?wȞĴEvI;:'סZS}lE}!SБeMn#^ q _JM^RK#I+ EvǛMN `ݨF"1ݾפEs$f@UOE{w\:xV~ZU٤Yp&0 = @^; AUV7O5.@Cqni*ݷ&f" h:A;2Yt+U- g̨(pGL-.vb0(NJd5R%ìƟ 9x|0Vn)r;L7T}KU1gy)=oV|wJ)Nq}-Czl,>0H%;b_WJ"S6u@Qh ֞Σ *?:׮'fMNBP[ LdG4a3=9td |/bp'NvNW=1ap8p%+ںd JhLk ya*.{<{@syĠ&\&4Q%=f+PA05N\,!}XަHu--vt)be %M]7տ[Ȉ*O_LJ@uԳ>dz$nt tCqflz}Vm%B$UD LbaۅStZ&VŎ!Bڃl r 䰏< o0 2 7ՌbA-5ňxB[9Ox/g!AMiQEڄތWb+ h{~,X' ݴօn VeSL endstream endobj 80 0 obj 42690 endobj 81 0 obj << /Type /FontDescriptor /FontName /Dingbats /Flags 5 /FontBBox [ -1 -143 980 819 ] /ItalicAngle 0 /Ascent 819 /Descent -143 /CapHeight 819 /StemV 80 /FontFile 79 0 R >> endobj 82 0 obj << /Length 973 /Filter /FlateDecode >> stream x]JdG;rvE.D·~_fHfw(8Iov|^7˷kpt|te}=n./6<^7=ßG7_^j[ۧ_n ?^Vܿ~|%>s9q>?nz|tyzz\u׳S}u{x[~ӷ83ΈsF d$"(F!. F%шntb$|> endobj 84 0 obj << /Length 85 0 R /Filter /FlateDecode /Length1 1306 /Length2 147041 /Length3 0 >> stream x|t%m5N:رm۶۶AǶ;V۶m'~?5Z\f1j+ 9%]x Vv&n.*v r*@ 7iWc[_\%EƮVbƮ,n;<sgk1S7;Ll t#@@IMKKfnnn"1=; y66=$- tuuad?9=Е/}q{3QS+f 4;[ٛkl37GFu{+'7 w `cb`@OSKy9267qtpۺ́/p>.@ `fe 0ZXwaƮV]&&&f?}f^`loW'@`fff{bϖ% 񯨒efW tv[?F Rup2ZzLL]i`ah0634m6 +[+GG?fdIKQ+ +=௪9?;5ߪtMߴS?0{Sa{ [ ?V.V@3%+WS[?u{3=PߑeLLoP`77LM̬-ol_`S7gO_&[ks<@O)`(mNRS%= { m]c ]j]l(h*0OLj̲ 4b;y4|.#kړ׀X0yٜ~Oj/&@'mC;㇍ f xQ#?! EtvTR(,R>WTnMOWE 'aiwc ЙhK6 |4ZM%n`LjaYl60pyljۡ_ ީvְ29OkR*Uo*1mT"ϕr7't"3KG}FնsdX|'z%,g^ӮQqv Ӆx!ڃeGP cӓFo^O.2m* xT-h| G_tv̘֝ꌫo()D`.M %wйnശz8m ,iHdTmc&✵< Uoւ;a5zDLfL 1-̱p*FIX +dQ1ļb4Vٙ7s~zm !`ݕ4}#p^Sv0 I̮,<ʼPo\eg@ѰB8S}ȶR945V&{ 1|Vz]ԉE΂R ;Lw(i"vJ'\Ha+x B{7pRm:?xx y'8.?w_!$sUH!Tq XM#IZ@sgګhR١q{uK ?DnܱUSullk)л*Eǰs~i\TƙnptϲLhCű&x1HB@dYVGl'70~t,aRE2a}5kMƹyeb)efCS1L78o !cuDaeOxXNۇ+ C9jX g)x>Rvr87t>6X?OT^lr?s͆Ĩ> eqȇ_,j.sm۝v>U ai?/)ˎH ,0YK479u*yNCnX"H5 ޤk aƇ <ބ߽p?f`O* \okvsr="e{^HIPk"1QjDQI;Nѱ|~`s&I6ɻfU`[t>CQ!@jCY}n{%}BN]EAelj 1Ν O3CX"z5[]z׾oQR<]u$*kuMHr95XA`ą2DSqy \ j+[ĸHsrO@h0"g(TS-nIظ !wl&; KӫYExҋ]x`b^Mw82v_{% 1B؀RqH`LC. [1@k>kl$O  'hϼsRUW4yϞ#P4< $GKxMxt4 +Yfr[w5r*xOA y3Ӱσ xkjLeeyq.¡"Q1ئE)IE{Jʼn'Ooׂn0 q4$9\O?Ԩp^=1y%K)鯮BWo-+luV3`d475@iX#[W!fQI k<όjMW$h+ڻB,E/I2mx<z`(̷$v`gqȷ!D.T3gCɋ%LEyrQdtbPo[n¸)f=Pc. L-LGk ;'`^1mu5pBVۇUGAB24'H eSEf B+ !1BWT<%CUz"FM"98c/X㮽 j ޻W[(x3, ޢ'pp}q2{w0d\?:_Ǜ.$sQ)nd |Ea`E"(9[?`!/ܐ#kٵ^m5WEciȕ u;rA;'W컼z?x[~M{O,aپ u(u$?> S7S DkYN<9(eC4BYW@:sNhߙx~zRɏA~h,X9A&bzɯ]˳qJ%r,*z)*a+Lqqݫ]Cqŭ9 4Fbϣ1"nT>p"4z?aYSWJ~2uF?EAv Ŧ }o'LW kyG:z;@R瑭<cHҕڊI6$WWF1@j2ەWyq1uaS];|أg#HF>O䄰GPxk5)V -_Hx<#ߜNF;cT44\G3h4]1LB$R glj\rX] A(Zpmc`?Ίu+R.짟S2?QT_ )m\zt4WRB2(66ߩHy5P8COUEBtI̖XZyGߍ ;S X=O]r!qrkK.C`,XКY7\2$NXr1I?:mJ& 6Cxw(M C Hu((؀p dC lv d5ݤߵ8F?6X*XS4 %}-vEC#bHNI`-xy Nn9eqIDS`d!ZS0C"ڄX7j$Y. lnu{A.ʱ26dN,~gR .a*p0.۸R'њuY:|_y3Ql216Jx[X 7-()fMGkql8J+jV$UP9@mgב6S{KS ayR mJR ?R5Yxw)<[ͨܐ!bk[_OkU g|2v{l< Op? F,@d$B&6de(%/xQ|Sy`,}JҶo62Vc:^aG5&ҨODCH"%{¦_%Q$oh:JbƘd&ƣђ P^Ω.3G;U6uGhث=)\9DEk<'2Kf&L]>25'!mjpmgb\6yLoPÕx|gƨDs'Χ]Wldp>C:FPy?Yx!sH@,4sU^!K˻=,]]Q}`DL D _R7(kF'jz`DZjoĺ"E:ۈq-$-Hhp12<$^8q+6:WjlTN z6$ 狪QIa'h~;HPm:G nE9_ƕB;pnx!s^)S> ];Ρ Ydʈ@PC/Sflˮ=2 c^͉qt^#菹 riq3NsTMd=[~GY[(N>A KeK#s&ľ$;W PL{[ 2iMi;j Cj:<m^^kw.UjIݥ'*'\ !FEyyܸz@<{Ӎz.*He#`skAx w"TJEx:DDR(|4#SCy% q2H4r85仃[pG[uپ>+dX  1 #:AYj, R@l0w 񳗻QYqpF$nڐ.y#fj9\=oI韔TI'PNĢHU7$=i>cX;M,yoSH͖5-IϿA;xLdgh~_ٵ9y^.5Nmi;"bEVk+R7&^DTJEh B..Ôĭ0~AtлPW5HOݞm/eb!xN#.녰sd!sMA-u|Z:Uh2l_fg ,n^#/-V%@=P#Va䙾nޞ.bi23nlN0=4CCڦСN? ϳ(X#b2bN$uL+]exÒ;N ru*g wwC"l#Sؑdn{˻{].d26g_<ÕMFInыD؉_ZЂ_U(̰%r?2LWXzZ쒺#O 璄Y̺;AT욎o6S{SaJy`X\U߰b?r-9jxJg(.`梡tAK-2HFL_,Q8gKmfdOf"Ui]2xRo|.B XD vpǥsL?D|DN/by.3D:h0՗8uJwІ*O]KWZ o.=U>{hF4y|gEq l:vમ(ږ7bAhޤw؂G>( :/ϞOIBHEߍ.o++E)sJ2Һݹ5:lEZNu3;9o>`@LFDoMv]" BKzt%YW[ Ԁ x?Rf'H.𩤌Z"ZƈUWM؄}"M}"4%]KkOnq+KsG]bqviJ6թ[&@}&ƃp$q~E-"*sH]"K.CP\4%P?]G3hʰb6w ؋*SjUQb|&h+Є:A1ܜs7=TxcW%+]Qq"Gz=W=WrxcO_5$ߛ8AmnWVʒ:|hѡ -1fvy끈XG4DӗgI#/%Ľ9Ұ|TZtop6qW{u[;ÇM .6Yɖ ̺"-G"ITRW.ɅY,$@xsƜbY2@4Wz>hy0,3SQy0(7pk &RX L@{<'Q͊chhl %hQ(5c<|b)r!϶3jZO4* |6d WNuF\ى߮cHMN+7 ]Q|b5~N΍tLk6^B[ӿP,_IBU/k!<|cJް$#V֑"-|TwM}/\8{o1'B\F?Qָ1MxFe׾vo\Qȭ[^2Ljȧ|Fa > k 96KWS߯6i.\0nl~wd*uffbN,hg a%#RddmMKS"ޣz|f`" 0Зg$3e_C`{ldZ8X5lvݫcKzd]gVM/AĶ{)ӹ{@n {8JϏX̢BIMy3X_ݵT戄q./&'a2p|v×p26;RʔB蘰ZƶVコ0uW7)Qڛ>/nŲn .8_``q[8]\E䑿Zq z3ڕ<\ocwlkJj e09"wSe1gyD/b5iCi>P;KSp+v|v &H n?ZLk$:Ǣ5aͺC)Q3稻Y:Mo_Xk3'K}5yGíiYXb۸irRNӷb :9`a@}(G<ST9|74B&)dCsKok07Z9-70WKh\gI90=""7q9)Reo(U1V߮I_ϽxS6L뇴\ke[/$<'}\&jHP(pg`Qv4Ry8[$1:w>["meE_-}WKxpk6>< T*]qR[ ӑ\ FͯQg {4 r>ك3~CtCW/΁"P D\s ~݀} l:i&t1TX;S3'(?Oc/ǹ0Zm H4w p]B#6뽙.Ӧ [9foyCzQ~R}vJ\7c-YvƗG)s3zl)|'AbõbF03!8;ݩ<.pD*rG0}g@pRoK)>~ t,Β_8-f :(041))|RO?3 ht~ J%_?`5F]t7 $cEaq'2Sx>R3Ggj?R!u=GqWI;Ж{}BOW @i-+zI[b$["4ȃF[c`;ԧ5zoӠJofx4Il:9Ws h7я+W;U$_^Jw-: |?`n"P{{<{2$ȖŽDWI`sUC}]˼ .Lx-`PeW(}6B|ݭ˜ءS'Kz+~(k@7Qhyw% K6DLs/c/^OipZZƠ;nF}:OTM5*$+/BOqz:NIONkD}hfD}jt1bEz38<,n*T1j湀5XwPa-%YMx&$㪊z$rڪuO,;Cz{&u~>M8K-'v&t?2jq2LQ~,$nLzih"Ŀ&:&ޏ#T}?6UՔ{Rv ђ2ఛp.? VM4J2*7@Pen: t 9{6'8w/mJrEĚ`ʷiBL$h 8{E,OnHDGރ>f\~ йR9iZ6X"}u:q \Ě&{ H,g@>|\3l]O&P|mbŸ:y*X )wA.a=U1oOl:L6+Ϧn䫍+)񸁘쾼 G{=3GT-=:(vVrD#"eZK1rv\;@-CԈ!.eSqܥs78nxKvoQzRUNI{;A'>YPE G:wFtkSMWnwTS~BP/̿,(>"!) O EwF>@RFxڡtĿR^B#y&bِI~\ vbSFI `yCif~H@[߷G az-q{7HU]ӎ=ϋQ*JhE^T 8mOeI k^^ڥ ˰Or/'ey:JRpeҒٰ9w^j,\ -[F% $j>^ t³}y ߗ`ҳ0M+K!coVr## ;je86friճӸ|\ĭ*+rXaӞ3,T|#W%Sp>\r ryM/?a]'hWm٘';;f2B6ݎ0b=]Ġ %Qw 8W:tUf_^B&|W0aw0hܹUB*A42BM桜0>ɗϷsovFJ>Q)UOhwbaO62tݡjx|~ygy[ S ѵ\$SҊRWgۉnٝuf*woS.e[Ii>ۭ&0*0Vl.mG@ÐFh2iu~c #Jt,XT %V x pυ;w}2*x+:柃n )l:L'‰)܉m.P/\R>}<ť&e'j ҝF%+3T >m@;t:ZӒF jerI9 ?]eMԨXKpy~ycT(۫ *?lhjqt*hBm4m_٢囡fNoC hZn౛0&{0r+ $n3  O?JJRգva#.g:' LXD@ٟt12\j~e{U5I.NǗ)]^kA6$I}daCX-ċ^!va(S-򻢧šoY3W"b+RCbtgH-ZLSX>b {r^YO¶JJ4- ~KXFY7SJ-#D:b8Qc`1KpѮC0D/|kOg*Y)eYogB}$W_YHx:{=n)=>9^!)G".ȃ6>g֪{4_@MFޞ̥}LXE-!Kn6-1O"C$gh?ONx1i_arcˠ;Vlb ;-KC~nN?oj3E%l-PEFQqDX,$̬-aװXmZ]E 0r3sYoXF, ĘVI;<7DAB3txZJOưaNzɽ5t cS4qW+-\r8 0 k/ '/'O\dxC5OSf`f3տO(T/y4]՚GBz8!ܣ7:'Zn$0l$<t:`ͭ ˃_¾wR]='ϣVgס_Bgl:u%@C~rP|%B aѝٞ2M!FQ2=f`WE!a*Ac{Ca'x]"i]cԳ'>11VI C`,{>_`hNFԖJB>&Pj}m8kVH۽c]=IӓT>m٤N2K,.z+2\I_:Fj ~܏pKTNhF>#oŨ"ufRjH+ DV+ 'n 4%`|-g>^:g0=[>3Q669iƫW > ;ѧ4hr 9*,Z?%r`xpoKo6 F%[x i|yA11QYҲjOݱ淞@é(sU=W>p}XF<4OpC" eƏ9/u>eE/+(٪%`s͔gӑ>+@!y|Qbe}SWpW' duĀu!5סHx:&菋,u1|\A\3Owdt!JKCC".ޔekVj҂hbŖiZ(3%%MbfG. 7oh'SsVb0ԤXG,/{#rF($oy@O^e)g$tTc~T%D+2"XIm&晷(%Oh`v'7Rfp&cP&haCeieOLd~vY `e* BD̡kDQxY;/V9D  Uckڎ 9#yҬ#Y椥3dv1ǔrճL%2H+XLqz`9!+.d`4gOH<.fJ,խ}La,y?kևh8֣7&ImKa%= vvᗢSUgHUNP#3 v0d7V> ay瞏Ȗ$*orëw'bgknCI `Uwa_OrH ]TeJ{8"'TÑrt(s{1سfj!/XyEe3p},:ZPdYIp&/{^&y1KG1~(j,j+A`5lX!fbSv{ݿ{ I 9aW-U7}grOފ鈛&78=~zeR ]kDZ4 be6B07r gFR;LHK X^H<@?9 d#DXl& lYC#w7"YډQ|ZMrPrFuȃjP6Оeܫ<{v~ޅEp Whpᄬm{$Ҧ-p@9X4R8hͦ(i0E&ֶBK=o+Nc@U7L*:)=_7 QEE$`Ƹo:uBS`T/̑Q\m9NA%'B `jLF#X([EVЍ2\ZyS%uh7Qԅ|\ENaYOgYN=\rIGQv-90x԰ B07?:>ЎHaRKB0HaZXwud-#h>FO0&{PُsŒcSyqjLȋEM6f(5p q8}QQ/a]M2S: 7y`N;-Ze^r9HBRut>43]2س0DtKv^m`WTa>˕ML(77P_(Dw€,,aVf2/GRoF AϴߢQ7z55Nn佶mjB U)0mc<?JI!ǨeFWu7B.aTCc2F>*UՃ/reUt8-}mx w)|_Ar7Ex^1R~˱LOk vZ2AI`k ""t:P{M5KOk1pFgvL:]p}ӭu%ڐIР%;ODHt|<зŵ2{^4V.pC* Dd@&6&Cί74* t?(tҍjzѿKh(Lyԕ ` 0??şNI)Y5ՇHV%ІD"~# AV 7D3.$4CD|C9ՖTWEGt5`X:[pr\SA q5`0ڴܙt${ӳ^; 8`N]"h G.Xb gBHQQ##bBtZsٜԒkX{@ ={vH_dT oj6[RWF=4 &ގ\yҴiy 89kDx.J!٠u^WC_oUl0 s'<Qm:mci1_.=lLHuJ(S؁G +q:Vd?{ 3ڊg#!+øPl9ŷ8)hvcwEž{q7~O!Q̛;.}r> >}&?_!C|[omzD*c`h~M/@:{yưj|4UW|FxXND",g7@ܘb d ֜~TڵğM\IXǥ+{Pf.P3^}/̖fٰm`"[V wėXR~n2Ew#VKbaԏ' F@< RSy_3| ZZ*UQ\bdm9ޭ,XJ"r'NHfP6E&JMz>{Ŷ*@z ER{'F5iڵ.Zfπ/@y8hKՓpW.'i@0ݶζ?7j@27 8EPsFFNIxnٕ4$ϝ?҅.e8V; hk WgQ(*ɦ}LnMJia}kHsҷzD-cLBmH4 XdŪynQ GH€]lBAת[D^th^ZZWMT˿)5v8޴6n+ UCt Kmg.>]23xa&Jg` -Hrs&c2r S*rRr=av*HJQOraI֥c^C/"/,JTNn5.Bxsf61]e[TqB gkxxLǣQ@"4A/c١;t#3F>(CN#\E.2 NV$c}LZIpn@5paºTـA*N`f@\ JpPeP^NOO\%un7&6M5Jwhj\w=9kh&%5Յkts5)XO_'GR)% >̒)pr@^*Ѻ;K|ua\UأB<&7)pQrfGQ@E|0eFe4.ސ$xqOFa og V.[Q+}i$Ickg0%qwtZ!S3_)OYz/ȾԎ~%^B@ȡs"} `MdXD1VDxJ@i>OK3V"J |MG:e#dܕ?2f-lPm \*ZoLrؗxJ~+ޭ_ǒ)n x0g%sIvdf0tPV3瘚D (mv|(GEۖ?0j{" A3mcfebKyBgp\ baP&*׋?tyWz*DCߧdy%4 懏N8M.J),F]%YމF6_NB=\M]}1J?g m_r}5kl>`!:w?95-2):yj$;Jʞ+;Ѥ0/A*w`FIV:s%|UNA\^6$8ˤq/U`oR{b ħ?Xۭn\7w t] ^7F/e54f6E|ç.F/z%D,$+ !*dFnA\R3N6Q`9Bl:UCYm |imRϒ]c H.| n̢+JFX D'f(KW09WSQ:k/ARˏVT!fEBCDŽiu % &QĆv(ǹ:cZ[ <EjɶnsCAY`v}pb:ڟgH%2'ҠL.ds} 6^KM+ߖ go|3[{u3DCذC5sҽJeRO;K 4#PN+ /gA-Mllf+$Bָ~aj(.tJBpQ:m@eʯݒnptʧrߦi>]Ӏ1"Si/eh"ɧ2-8>ɓ z[3ȶw}6k\L_1'- & {kzƄ`dvP?II$3NA <t`0u@tۭo+`7qZX#} )9@]%vXLc dc}Z@gũeEwFkLiRlF@C6VMp@9T)3^eqy(^,3R9ɣ1@Wh>i-Azܝ!4x6&47bĠ5Z\䅝rZQv- z`9R_lS,l-ǥڱ`[/ғ>?shA-_պr,X D4bErX7CS^^tsu5DYkvP?5ŭ90"F(7!:^s%{YyZtFǚF m?uȨ*wdk%9#؄"|pNաzu %NBJva|6^plkCL̚5@Pfn?X-yQI#}.?琢i"yY! 46KIG #K&10 R($9f˝' Ɖl [rIʊFo514Ѿ2PꥎYƁ1ui,"ǟRl cF6S‡$52!Ѩ^Q<ꫢakpխ񇻼/3@RDڷ%ZZ/!ձ =m]JW#/QPWl\%V4_j[?̺k[ Ie JX:8t/cখtȊ<0lUg{_`_^'.L5Y5[΁m 8t PHcf4RPhpWbr57/W;R iƝdw1DlS1d<bFmӹB=u(ۈKsa^-^)o\}9뙰"Xny\ zOmweu&]uUX)QLk CJQ}o]U2نL{M]wL[b/~>Xh_6)^,>w;fy^Fcyk;WRdžЧ{#7[S{<ڙK()|`ѩ{3+#!#y<9v Pc ٜhW BeljQ*=afftMv?o}LS[SsGA\iP[ vc`}$.롿\?\Z.B|@]巣ȎjC݂B ޺oe*UBY\kfF-jU"6w]V$r\֝tkYYuʒFu:JBSh+.tRw:ߐWyviQ_F7f8[.*[9[?`~gهs&łC4Ws+A;YV9zTF(Z]EH]]!TiÖ6Ҏ8Ar6^ؽYgbC^t ߰x_JU+8VdIpI @(ǮWqUWqUeΕNrHr4%wɊFIu@1s0s:0K(P| Mmje1_^u#{1p\+KNj k$+vX,"_jzޚQ.y鄭5/ ԴZ*wAAfg?5<򨠒xQLdUrrYDLma,8H1~Ĭ+V9Ec1WBs~MXI7!ظSDqu&b~qKG*55^ Yy(0m$ne英!ҫTC@viR~qPRMD۱=f~Xh۫߄ڗ+=9 W1Pc"}XD<8 3' DH9{Ya"`KnuJ2nRD[b؁C^-Jc}d\|܊&5@ӭ(Z0+VEOSqhև1Zd֤q[Nl&Ww3D H~1q-%ehbk(Q#<4+~vӔK 9U3 W\BrC>6*LC/fNc\x+ MMLӄ." I4P-=#XXj;@ Suː >dA#\_Qg WƳ'ŭa4ڃEa!7|Tf&Ȁ'^K؞v`%oV 9ʺ$Ff HQjy{C]?QEm)P2m ,!F޷7"E("κT=|9v/?RݺO*Xw EG䯩O7Ym@gZՈ ҡ>cр ݰ-}%!iخSJ:LA"Z\j ChAdOA,CR,ЙS>2qa6X 4S!H1! t@YV2r5 >43$믈}3A2i2P'W5W`08ҡmHpX_dX %<Ε}>/pm">) :NWX[D(.X:Aг$rd VFXh橏s2|vIެ荡_C8Ni~}λ<&;hD@.y|oj.5[P xvD;w^ɭ6{U,dHh;<oD 0Ǘ,S;\_XBpBSbG s0Jw:Ω|Ň-ɴYQsOm KdX!Ȫ)E_ZL CO6baذi}]|rsc%ٵֵi~(vFu&'iv)`0Lsĥe=ʧcVl[lV=L*tȷuB$8@(gjhd159Ge<,I L|{VЁBZ!b-l잢(*YI:aY?ӄpl͇ MWʀzq]]? ^.C̈TEA1 p!bЃۯ`lN+ #4s23D TԱ:#\yq̡}]"IP~8I,XF\Ǣ0J }^I?!C(˹>$ c$աN:ب9ۀa>v)ku}F#/(Q+"h 2 puL%fᡉDMz76iyV}rV.vqﱄ28eWVQUa»|괺5ZYW1?}G+M޼ԏ!!/h Ԍ[!3LsHY/ÞS,0բkR*S >t*QSC>NE oNh{\5GPY, ˣ!/*yVf]@7Uү9S*DV5ٿp&QY5KYg+ZjTw$ *UPM/ka9+/LCZ2cSP.eK'ٱGBZJJ2< b4mߜ{9*mGw7InY(`f*PviM5| 1#j~l]Խc9&e{=Ju~ ă:Q+KsQQX>/"IA8ؘ|s0KH,'d/p؟g.G",b!qA]6[.;WWyNz]'{$ܠ+Bx|?$h5DJTKB&ԭ/XsZ:,l' ؉[9H|2O0Lu֒E[E/Z=ڝA'E`V\S/ /㶝Gr^zMgjaL&]i$'ƖVWyuH3Edc={],ܟϘ Eh8af@溰/ -MVc:V~S4v7vs5].qrm4fs_3S2dl7sSm,8+'^O ??tE5@ H3 m#O\ &c|l"O#Kj*3ө xdĕF0:tp$Px5QǤ9JoIT Q^<&Guׅ;Ҹζ+PZMTs)t0sC(Dov"k XINa 025WѼ(VJjMx߽'ɾ If @(#yI Yetgz,z#|V`_e'֔Ww4~暶5ӨEɉFZ'}ֿ_ -%V7$!&x]5s$&_ۓ (!S<<kAp§:]Qx_㡜ZU3[]Miе(ؗP5ER? *#*Ȍ.6p"#6.20PNG$z ,3A׿UF-YxІcP+CUڌ- S.ą a \8k c;uPJ↣)I`QV4{T-˘lO ,[3Qغl>㮌k/ uf!m%UL2{zFDKg^^XcXSY&/wR[jsDgOf&a9Q X ll6T-"d` ND2QNB#^d鼎yJB{^JDrkW-)I_| lѤލtz.]`1Mdjc!kc ,X. $p`%C`FD[1<$T2Ϊ<0(G 0 {>ΠChéOC&Q#> =`P}+}؂پ>~|XDߒb"ihOU)>^Z}ڤ;!R^T]\Xm(]S3?-W -vwf>4V{-L!cU|׉UOI%d#:A]+tpQjfn,+rw"+53ףa'8Cيןt UQdz$t^<>OcU\K[ Nm3.ir2 +ɥ2EZ}LR~gK?m#Cy E=gڜ]'h/b QSC"D6RjH:Et")cvǦ#R8߅TmNvyޚ븲1e @[ܽjTH!Xf]8%}n KfDBK{L1D&s!}eBVKdztt2QW gIZl|dfO|ioO,OҖlAy㩄BX8f+1" [8ɑ1Q-Y %y^N'ԙ]Ueaӹ5v74ODIO &9a7Qw=@nKPqtM= tOC5Iӽl.~cvvP;O0eH[\;vüoyCr4hUf!OB:I]HWmo<)cYgi`xb]IʉCn'f(g4%/gĵzOyi|%?j-qOpI:{zTZ:zЯw`86Z~S;.nZTſ]iO&ےJBY1Pb4< \ܲ;۸D|Tn`WBċ\Y> N#Xr1#لR2,F͊JSDʶZya^\zXYfKT,ƹ);u?7zf|fWvo㆗%n|%e+p!02XSXn-]lml;P,v<ڮvڕo `.,zGM#2I?H҃c,(ޣ(+DռG@Yn.}b} >PMiϠ\+JρɥnFfi۱]}Xc(&jCQ\gn؝ )W9GlW)&1__HrC<-N> `p+B7D7R Ar9R-诒 ,Gǡ)<;TM|DjUNmjխ2mȿV@3L6ppv9bg‡|=wܠ&-)Hv*NdBVw%옇ɹ3v F!< |"?5\Sˠa['7^Ag+ [bt!}К /Y<% Kv4qhO'#]2j:?BiůfKd!SD5|krdڔWY5ZmH!KLu&\?r:)j͵It!8A&EcF)E"ф\=EqVHfՓ B5z5fBUj6qQX|]8\˭\Bۂ\k<1[U'j5Kصp*Ht'|pKFC͵fU⌣xL ?Rf{KX:c/&%U/\=dΑ֖jpIikn0' hxJ"::zM~Q" J.eWQni0ϦbQ2dNp68z%7o( ms '48ŇS $ iO`O}se$'=w>G[(b^mH49,*jD4)>/G(pYkw9C;gEm7W1~e=@ b5۸41s6U2ǟO??002Gp7j8p'}fd>Rq1`(!B"=n`_UDCSD_`޼,AwU4~/8?NvO7tK']mOH/Jk}T&Y@Y0R:2_;X`a3#~Dⰴ ъ2}J vWv2uShg$+oǭX_byِ\ ng̟{^Tih)ل;[STU _%]t-'5-]l7\[g3*{"<ޟ'Z >[C ՚\|CaO׸Cv<h.WFŊ?X)7Kx5t1 5 ,(e&8K5z13ځo@6u'm6E3Ha_@Zh |$U6G(wܱ%~nL KTdou22ok nR=*w&!.m`؄"]%Ϲkma|ق*V"` Ky=}P<\ v`0Phu>GQD꣉.$*A WN!N+ljp=phD$ {҉`E @%Z9eTixy~$4mgIO/ lbMho~^vzA}@YБǎ1CJ4|RE7 +v%?;Oˡ &*rHE&S#E'aWig]߿ɲsQp[攫1/2y&: J6H;"oɗy׭b}m ,A468#E;.~'(2*+O_̦]6bb'Qz]W1mj-`$PBh 쑏 .5a3ASV,GmM~d̩>LQ@ʍ?0d :ԝé6C(lNכy6H1/~EM%J.j~xIϕϭQ) hi?Ӽj$5[be 5{" |B4P N40n| U9/C`5P%B涄ؚ/dJ,@wÌ_ۙӒYrv&+< G>*":#E N,9y5mQZR:mOǷo=iKppXqpAo?RDzK;=5 J8|?Ǖl$XkS_ϫc%:Lf|Y3E[7 琉,E4\Rxن47 huX}fOYD2/mT1NxUnYPR2!8|̆?eYz_K`V5><À<a:3[4KH Gssӡ5Mg5[U!Ơ0]6 'lc<Ȩhz(ԵNqɂo,헱<#TE% %ɳK?wtHxLġue=@ ņ51_ &^X@(Pȑzc$4`i:ϖ{P$b^AR_FA%rHd^p)fEDcc\->…wmxÆ95BĹZjavizX8W$N* bA3/רH5.H 7KjؗLGabE8#r6;'r0)Ã} ]]O )AH(*=:2'kP Q-(B;cH59O(Dsvcqx[L Q^Ee\s}U|7#[랬a n\ئO"틚hTv*Xo o'91*ݥHI 9q0jH2_Idloe DQ hB֙0=>h.xo91\uM\qOm9c}|ayv2LrhEҢ{Ysl[c}e;ge$-]ƍܳ>]lKI~xƶ8#@h=j% `)tk|Zޙ_ On0IwQJ`ٳU8n \8Ixav{'H"T-T|s(|ȏ"ʔFA>d -<3/֠>(=EKh٣9c\h70 rk[^C.z&O xl9z,0TrޖGOî7M$lCޓhNJǙFs 4L{ƶU*nr7 |r4d;aGB1MM]EXi5Kf""-;[V`۵ f_NljVen'kj&m[7=p A%28ӆ,G SjEiWWkV|W~Ύ ʀ)t={ qOԝ߀e`!9}Q!\M1>a.=vєx^V}CgZ~RJ'G.M2M.ElFѭv#sO*OH}D9OYF.C20z" 㥴fGXZP3II8Wz7!7XS0pl8slʂÕ [Kir#N7ȩU^ӮX廓bIoȇhj,jЉj@si=: )ծʶ&%G9ڀ[fU:7ZƷucYU1M_<1ڙp(f0WsVrtbK%E$ ]γE\W-m[n1kն$vC5h 3z{uet mծ4*H$%H$hC#Z2.wNGGEH ASzg3.Jp-:I #,թ|,v1KR_#+a GF@kz;$[ D{Q_/6c;3VHwm;$Z?!Tؽ;J^?#ZK#v y= $"*܊ 2z&a440aP${%']7h`Q >5{[:tUm|&?F a2`@3qP+0Gk8(od4D- dƢ޽Q0jy, KJ;̙vkUX~7"]zjK;иٓH "aȃUbM8Rfn$Fc56y~ȾɱK>^.K-`iKo@P*sIUsX]!?n[N[Y-Bh = ״8!o?$@njO o,eʅG>Uqw)Jxȳu6Wh`*$$GM^옹݀onrOx*`oF:o!)D5/45.qj^:R' 륀p L JT1YwpL;,la:I{L";7:@FJn|9^/O)܎%exZFR޲}ݚz3Za0>KO^aqQejL$ W W)koDo#WُqLƞLHdFz[:!`AI|CF:(a< O)k/YPNQ}UR B) /"4I|,7v*Qjx8$SpMZ?.o'^U>~tno-1aߘ*zXۙ[ZHx3DWMq)ArF%j\ 0S jshġE 0)NS}Q t ]٩}DU"triõB ;j>L?ҕ*e7*<Jv_36ە|Ȋ' z]?r$2xSU.8IIml8^b.:Z'{8^saK!ˑW>nW.tz (IP(rucfz# ೷EU41aJXRxY*yC6NQ~' Іx1ƻ/teg86+,U)%iP1vPmz+rGA7$+QwO.suP$p>#}-;O}GW/|'Om S *+ ID7$lDh10QS1&pja4kKgkTjb:pXMkL[dP%IsKQ%jyjhŁ7pxlbpZLTXm̕UZx[gsq@aZQ͐:eK Ԫtµ:XCjyͥ%-((6Vdx&3ux+L/rgGwjs.&1Wrc/{7/+y_RDlAѽx %,{>a ŒR4)y8ZUj,F+~#F1)|}'wLIzǶNŖSY3Y=Ԡ7aT aOPDpHgzVAZ i LB(QӋF%#|5co0U\dfg2ŸfUdQwR<[roMuur:@WoqIӡMG^ _b/HZZ5 fBZ&{x:V7Ca݃]9?iP/ ]Yo{)y KN}8%%< G\JgP=<^/5 626)+ @ _{3F5]Q/d>67 `?fũXd U{FNv;e%9(jqfO >1 |x^wy5ԉ;G€~\.\y;&nIqsц-d^\%rfh Y|LQhைR:U0oް ;7tJ e(3OVCYvSW40ʙDb:є—`i gn!0<[{qd`& #JYmEET'𪙐k)%VϤ #+1K21)ؑIl MpqiXl _ďu0=CF;!rF~u"CPvJ6yڣR4&)z2 a ?ǛL<ʾ>X PK-?W(stAbU0‘q).?Onw!-D0LEg?BMpGc ߒ y[e]u6dDt*b;GL[,#ׇQR j >[ W}X=:6?TU`1gTU=9p<ܴr]ź'9Ab`6MGT m/㹧-CvBǸ2 Wn@*Ud kP}]kw} <O`|,hv3- TVE$w:+2vF . <\Vu:YEp> 0hYaIa;N_ m0Ϻq%]zȮf;"7fVWWudžkuDnRۅ=w +>|fT@9)Vn%u>hH4=Vk9^ȃ*{`<I]Ȏ6.?wjJs(o5332dߔWϽs4 FߺK=r;Q{ ҤzxѨ(ޭCjr뭿eCp⿊>jsq.F %"S|DAho?gLEd,Fs}1=rJvdAE]([LYkeʘ䡦,b~U  _Ӧ_sn%#~ǎgYUd'v"BjENl@lﶹ5{AQ{ (:5EM{Ω;mZlBRKpoh+O p^7qÌliSkx[x}$3A aD@LŎQ}2צ;Xl>3h<&?s$^I$YVͳ }'Z5R(olT䰡^sCw*̪n]X4沕`cgMp/yĀ0g`Mc'b!dRs@*T5&gB}ݢ4!['xkҋV^#v:q '< #͗fe`LB䮷kq!_dG*Њ9G<|YN:d&{ zcy]+B81B`"|d\N0(^*o4H6~jK~yISFi*H?j4$FB(2|:h3˗D*+d!&2|1P,1Cѱ nYk8\3s2ʚJH課? ˓O "{is-lTY +!)ň "W Yp5Y_lW&*N\Iu>,H.`?_3ֹOΙ!?\"TGp9 V+?vb'w ρtwx73j{O^ōAuo hU{!_ [he Vx(F$28l?"=_էw NOx@tdGjtfvA4)dS;\_9ug! djy`$<,?|0wswsc[ٞ2 (E) ֶPB!1agU h Ұ,͛Յs;i&^3#fIL~Bq/9lFVo٤E$ZF#fܡ0= fG£0Fwr WRj~li;2nɊY;ǭ,Ԏk ]z2LjUgQN(f8/#s4D H~5a I5Q^h2OYB4BtvGg=}(ޝjŷdM?S0p,̳og'YNmDn%0͍/ـm!FrBY1U5dk,E1R[r㠷~:\,5NF4)__#&;L4ֈ+5_Q;j0EC!|Hձkt>rarmvt ߴ?jv^:85AqsŎXIŀ+RST MF?zkdrVζ4?"LVq(ǚb7+* vu1~Q)' KFZ@`n\FKXaZ-Z=6.x)kP2a6*w>r~PPi^wۗoHCM t,y.j4OuAb+ CҡD,8˪mG{Z34s_o]}#u(n8|[^Ub ʅ5[Wm+F09u3G?ocRޜd票 B;6nBcw0}v,tG5?845=m$(]`ˆc@ Rݛp/9}V RU+fjN1&+UUfM2us\* ]?T}٬@.~_kb 3s!y\Ln>/kLdl0DJ(?A/?v+wvs ~tMax%-mrT,TEK׍2"=N-2F̦כeꊭ˟m۫d[\wZݨ_!!Ai,FW~gemfwrG;Ib;s!HњiCEctMlJ{c}C:uVowH6П2&{i;9R<bD3~Js Vp5. O6Et**0Zf`[x%Yɫ m+ e{oA$kļEgҧ$\]9]d`ߴ` 5&BI6aJMDpo+/uT>K$c{||Q',aڙV'A}h:c l۴ÿv4_p mo˳N9bRD^ ?Rӏj2wJDcSq}NhvnۭFz\\ *S}(gb$ m<"&KFy%gX9 #6 C3 A96;V1H`Lb k,+|=[J=P 47)0v#m$ ?;gHI-a,ʸNK $ Z~L\*+D/uꠞ9Y-Fͮ66i'fjT75y[p35`KS& -??rCu<'ϫArZl;J7f;N'w5ݢͶʛHn.{<\`kR) <uX-y&Jƛ\%Kz.ْ:Oݐ-Y[vUcs1)K߫\93& 7^Cױ+ (~޸]J :}HuN׫:<)XreCeytUC~kS-*nKs)%"gSClM &q9M+ҕZq27rgRa{lk w>[6.v\UJ0LQ~ (A W!, nq/iN_Ve:Pd k$/[ V۪Q$ɱ;j锐*w iTktd*_wHV!)H/"lPHOA\Z:Sz0e}#γULN$C:*j7ez3O>A7H}^8v; @{i(Kt<-Q7պ@1f䁩K7VM+Qz^(qy ͑B;!PmH}'>ֵ]TE"]UeCW{²Є&oԽ ["%TZs@X![1!#T=6V-@@K$NQMq} Xu|=6w.H74-MϦpŲ]jl)ƥ=ϭRgrs-}8^ZTX53k/cץsoߚ<IwN[UuN >nX8@(J;+p~A0 ( hBusgzM`rWޡ\cʋ8Xȅ+R7%-=44g~Tsp- eAI *]B4 M)ȓ"c,+\v-KkAML-[D/@j1jȒi<fE8C#,j e@%x&O}5Jo_ծ!؝S0/0*(WlYP'׾I`L8յeFZpϒRje~bUYTrn4P6b)e|7YQxd? kjbKJ3Hi#.{&T"ɓ,e&v{(p'.dŌx@aJJ൪],Y-owO3E\UՁtxXgB94O?h&|m]IF1n^PZhz٘(wDFb~+$ݥpNo,25>F=;gR1ЖE6 t HT>KU+YO/I:%* ;qa B>"t7tަګu jN6d'*U;c-4-/Q,jKtN_^'B4KfRdeO :%ɐBȻ^ ZA*Kf:.k@wsBh;1ɖEyzGD`|괣e%07fYJ  |#/ҮqAH䧸e.ߥ.K&a)E5z9<ϟP6!r{wdXpYYՆ.3x[J9#i"a?e(@fǢ @ISCf>9 > ѩ잟Ưhj̗YzyXM:|kH)G xt Op"M.v2^ W?oZ6'X4S5-*b?g_<(l_O+@}^`0#(9m+n&>Xx t*Q<}r!ʪPCԭ#Vy(IG^rR"֤Y<"sbhC΀{]K!5r_`\LLF"[1)M@驫vLJwaCضe Mgh0ɄoAa!(z?dDt!f<]pWLDcݽ=1W2EO%`ZKd 0젻Pʇ')w E0Z ڕk1 >v.}2m)_^1f\\@fA1{㈕`&WD̍D?x5!/D~;ﶊ&A: 9M3z5JXZ,wK5?]WDg=d6] 7J+V]ci7(O cp^cnXf imvHPK"("Tx*qPOFw&#X$=ir}G  0V6#(>D. !nc7ܑ] mE A.ƹ$hecJLV K(|0m ti[jr(^p!Ym WuT7 ^4_?N v j?[5-hV]<TCa-$(7l_KG٭$5oV4,}"W}plzf/}|PE]pnDޓXPv$FJ̌X:WL]SQ;ٍ Ex<Q%␼ء/ Scs;!pxi%ug$C. Ό6M*K;lMΆ[Q38VHF 80L@=\gv&xv,gLm(!ik6&v=cg}֢s17a>p 9hYT]J~/b/Z?Juڌ:ae)JhB0IfOV+r2 8 Gޡ?@Թ)8(TKx#/R3Uķ=zUU6 ok@I@ ՉPKj4_-򨄌k/!HĂGaTqCtF,&? \rF+^G>5&[b vV[C[3"0|rĵ$Mk/r M}iD( NTYhlOl_و9"kۏUlYioE$6})oU0ML*>\T҉̜uiBrxјB& _1@>}j |lTP94` (\"D`oki#B-u$J\.^cQ,fD夥+M"FK j}Sn P^ZuѷDu?=AJ>fo\s)}]GECYՄ^ aM98 \[ƑڀN~}sY^>P}[ d:sgvcli>}6Iv'MZg}4(0c3(jTú7,3M-tMɴ&|&JO^JRX˾$ pCZy?S.Z9QvtM a-h 5%|7K2mБDom;N|֣gK%Czow N8հIuTS*fQ\Ԅۋ~“i"Y)G#i#N,?ĵΫ+xő iЭ]P)O\$ K[wDɊ ""rCKͽ ]IG 쟠r!oQwrKgW*C H,)H:Ɉ#|dRq.ND8-ٶJ^\ ;J]W8 x/Nlr՞gbMTZ>6ߕY=TyXW-o*2dt҉+3϶166.If @m$LV$ bRW}RI`g2.c5-Ҡ'/ZtQ paQbBBĬ92;GITc& P~rqU+RzF9Y.LSЯ&Z<mC tGءյSBG#66i75QOH{\|8狄îH$'W՟Ӿ3HKѵuqv&VA9F#y;.N@B˖(NH@ql&hiH8Hc&f7J!M Dub:ٴ5+FA: fc8jMװhK5?`sc!Rv8(f&>#G!{6Be$x9C6,ٝZeJE5=hWI-e`Gkˈ?7@S>@˚~|y'2F;Fu3+?j/!FED^ݼ-;V"ek36 #"W9cOb?&=lAQ]6_[SWr[Ƀ:]+|)vtH_(CisjI->Ӻ)բ2aCkDTYDnT/z>'hGMmg"(}Q,kVOo6ӗ kϵ;6fc2m}k?/ꔌ+⚫Fi\E0X&.K&-lka.D0[Hh9]'cwq\lUȇ$>q+ z{#r9s<2`T*˚ &H&>OJp2mĜΌxD $Kt(eJu!E8/N.}X,x,k% lK6+ъG0Á-+ ZxX7 醡N)l í*pquukOe%Z}?]BA G#&C!oyqfIiO֤ > '-VK\OpŁ-Jc h-aŇ*wv$Z; a'E>4T5> '|(1 KqZtik֖7u,E$2)T!ۤ{^f)(yT@O=6NlKg.tSkxV%1 鉤T)Zmޠ#JIp~*bWHy5EbJ# ?[9 /5UZbPЖ^XKL.2fi7t]F.=$q%bYPQ ,BD ϶M Wsz Zɝ-eܠKš+]B-!'"ڎWUE '5CY4lkNR07ɚm66S졫8$᎗CldXň5nggB +vHC.|L!:YhA&}b.NhPCz8{NXM;7z*숫膼S띊ldυp5f"B$;Zn*}ђ,bl :mںDJX)uP&tqG@nl&q8 NM{1ދ!}F jLxYz \c q+)_݅%!Z:9Ey;xHM氦#Qbǜ|5d s|l1C5|Zn;ɞƷG/e"ąaV!qҹ5O4K8Njn} ^+ZVIh)]`4bC6󿻜fq@k ^TwncyevOc2 >GZGܡ0*?OT^I^/;ZE.id}傜ÔL'>_,`y!6=2QZGbgмS㨫/ gζ;h[i %ͤl{ }:د1"iU?/W*O x+dV>Z6Tixe8VSRuMSWB#/\vY EYLX8[-Sh酭̕C]fVkCkoP~wx þ>w_Ve-k:dj)1\+NEO͙xL:w3P ҍSآ ț{qԫd-E/O8dV{Zpri3/;,Ъb,B cW$E"Xr˰ꯦHE%'zmesZx W*4*NAH*Lbbm^KNNuO's; P1 YoFĆAئeҢNCjdo؏r&ͫFH*tQe >|~VyDWJk1sg*=m8AOZ#.4BrAxv 빋^)Ofj-Uo&Պޤ{,D(qcmyo@UϮx*EhtHwxOdTJ4"A,4K_^ND;PaEЈAfZ4&A^@s*{w?fr.⺼튮 ͙0xnbt4BJd%^zZqͱ}$r>n*svy15h#&ZOAIGÎ5i?2ŵV)jWzw$w 0q|-2~5b3R<3w:R\)D$0~.a 3makf}J&E$KVP:n0ozocYmuI6N Ms ļ2K2۝x\'~FLŅfl{_=`ղwrǤ B.ΫJf%β.+x3 >cECOhSʿ:̽ Xx{Ҽ>60l`ac/y ]-^k-գT;edC\n9\Dз =rz=ǕyZ#˥,Fzsb 5 !p*ǟC{0bۨIybaR4ܡdIO4ر,?uw.`y q≽U[o(sub$WXpšG…89me 4쥆W˹wߤ ^JP:uq,AJb.]bpCZnqI<:Zhul82)qnU(Qw8r5._ ,w?&[h7x7]^;6"| s5Nє#;DKJMKص"WCaES (Y)!)$9#bFN׆ݶ>8-peܫn?l7Av$SG5]E M[J'RJ#XNqzv_(ԋF,&Q Czh0мn7\W$q|-C9;YڢnY{,C)-oH}"W^ DyfrbE*LمEQpd@j"hjrjN`%P .gҿ3ǣl.۱3Ž'_8wf5P~ ?-?@_7-`(i.Db ˬ3=+tvP9!]9K6ধYs9|P +S&yNs4\[(+Kx5fBT/莥sNޒJ!'x{k.pv2MƬke >'Sg2;]\ SL+̩?R*C7%],2T9&! kqQՊ{ a0qa`ӑa?vI|4˿JjBr"2)d5Rߝ5ۏ0;eۋqH2Mc0h6tZM "U A@ / Wg0u6ZƌԴO'@\OH}@Vxٰj /wP AnoyA92Y5A"s#E  H_!>C5D;'ZKyPX稈*Eӆ7&V.N&i+H Y/OȠ LSL-)7gH2HTĆ3k-w7*Nˡ|14l'D$?A_\Ed 3r:yx~tYF"aMNcxu3[a*yҌ NsX5\"ՓsS6͊,R;R%}|+c-F/ĈE^KoA)Цq7;Y﫶v[DL@4t>V ql@$Q)qO0.-%vrޒ|XT${@ic`y1O2 S>>B}3jKZ͉Jԥ &޲luMxxdI^#]ʮfQן>ĢA? ⽕VPS ҰMeesa' `C[~e4iB6q7K~<;iE7wx׭ڃj!CРM:}L>*K~Zn2l-6n${rLǢy >[!/tׂa-*NEIs=(C:`73xG@6M&uk"m$߇sأJj [cO%'lvMjiX4s4(쾂 oYSX j[cFQ?'J"G# aw NhsQ6cv9$T-#eݷӫq[]PV&#u/VOD:u2h#4UhHkGRmxOdb1z`%`(Z2#eVUmV|kUߝ17\+K%L9u#kg'`!)(}4Df ұ~"ś2pv)'] R5:LnmC-% v9>'d!(CNd!20Ⓗfͦ GlAV_.&8ƊT$i#l阗YҕYsL`"PkKP̽cq8~^>_)Cڙ %#k* y╿.1P!>B-?܅d13C] "zx>6(:r.̃cirfBL:yF]DqCcʪs+%82؎`((?d]Ώ z3)q6,>i^8yڕ-t#Hu ;Y%cHrF3zP8 0}@BVP2iz몡`X?W 1CRd5}8N8itD@j , }(haw:C"][K))>^YE`}DnZ+9q=vƲe˄77fiuW%Y=+adg/y"[8~+j`g44x4tnqx~2DFK#\vttR\u] 5;[ʦ֭Y!CӀɚ_>3nӋ_y-%\V/{U2 /B0`Yu[3ݼU 4Nf5Z5?>mH= 7uWwt~O&SL =r#y`~NFODE!qVMmN)!  ϑQ3v3߾bN4ԯ}_H*#,5/w3BPlBYl|=+E62O0L/mG7MdM; ؇T8/e.= QP X.q`ь{^{zN;Ne[#|(c :6JŀnҀi\jW-/_9D^=fym+5pXjg;7p-%gGq|pBx:vǴliD/Qy!á妮@)۝Adg:L#h՞MYܑjKS+Glvߒf Q䬊XpoQ=-af̸5CA]Gz/ W!TY[:!15fTg3$^H.QSk#x}WTOQ͟ه 2GX@> 6bL9Oz3Ee1y %i\;cr: 8lWS~ U`&l=,`>&mǪ`ҷ.8~_!}{+Ҏf յ9ߨgtt; ;`;"\/@3M3˚EQ*'2'OGaA,E&q03bՏ鼗+oK6 $V|{z~!,w@@>_wcgvdy Y6{k9RJl/@H%d + eҧla0[Tk|S`{8< `r3 4w%*rjBoTyGJ㨖0(pbԔ ?5(6c^*6د3{Æ ىC 9EVi/_LΡpz>Nfw+2ɫҾAR}@\( r5ATwJ[ʹ|r7ٌkuJ: A&93$)'[#$+wg7|49B:اqԼqLQUT\${sCZOFrXXPIi¢jv@а4>Aqq9e\!N)l4Tflb~=# ҈O_(hJϔjQй7:~'17)Fy\2S@K9:O i?Rm{P{Y1;4u$l%A:*R.xߺ|q qd-ڙt%x&P 8+ "QNymUȇC9n ߝ[ TZu55ȼ/YVJJW0)F0*aDuy1VݡN+E^U4Ry[z[kp{|?Lk_ b_Lғíߜ?)E᧣ <3=ZP#~Y8&- CV`{c9ꆗJjOt|*7֢1w gQb˯Wkng=i.[X >jy@Uc5Rd旨 d"0RYL{_t-t~7 u | h0L4Efk@6SE s 81ZM|F}IC5n٥1nLMuPDyP* TjrGwX3DSIvC׷fR2drb6#&҃xBC {R~9Ys6B#>jqB\[UkTIqߑrw. zs!{Eގ3T8#0qM80Ӥ \+: b<AOy-Ua)>*I`, /vcz;;pR\ՅسhoӔlڤ{Y\O*8)3 .\3ա^SlV^'IyhDELoȦ#9bbH2gw#>Ko/4NөLOyY3c^ʬJogolS14z6V8 %Ŏ@(6]7ט^SQf&n|dh?w#\op|Z N+H2q6 !ls kjr= ۖRTL~nXL8l0(뎊:]Aa_z(?V{@S Sb/ =z`ajZVGlή~ܮ#cZu1D\ura)_Mr5^C4_ޏI~Y,bP;n{њڤb"<#_W >D[m5ڌcS_0lɪ^hJ&c 0DV%-ʺIZfU\٩r0<){[v&34=y+l\y`?H%\Y1y] KwXyDij51]нLI D#v]9 PTNKZYkaͭ pI($7۞)q$Ɛ@Ռ6u1 Sdb Ԓ:m&]XetJXx+YN ,|w9aNKKOMFurJY~82hXtyܿ[یSخ(14" Y;ee^"%o#%4$:!EW} EnL)hߠޕhcTTdHMlo5U֪rj ȅ5Q-@ȣXSջì&T+ wgdSFϦݾK47.JU{#=sc0j] 9Q'{eyj*H=Z ۺ%رJn]ipJOԗXRfL4_@NF?8p,tV8-";B[Wh~)OoWW^H݀F$/J? ˏ_h*]~ %4z6'=l>ljC^۹d^H2d~#jaY,G(e?,\h 6婍eͿ>).(HC4_KLiz^,9̬aCQ չf®% C^]y  @D'jMxsdfTF=(GQ߹;ϸ߾nDAqH &[w24r $6iEutEnUI : xdܴ-m@0gsAdP^? (Cs~5-wxk!x>_l Yq 1$TmfpB$ņ=&td3x)e)qM#I]Gl,8.t$ ju [5u]%* gÏxzݻ(2&]ɌQ*B4Y>6Pba o̓ud}qgUHr6u!7gxF-cr*4j/> +Mz-q#YT*iAxٞrNƥ>HDX7 F 0}h?xQ"qJz5jObB49 ֍$iܱ"*cw=t6@Y_E\⋤DAkVt)YSOzx_lQ^VxnIS ݺ(?hl zx)<+7ZN[rX+xX$xNF?[dr^KD\!~y uXFٞS>[5@ &Pq'y5|eP4CiٕJLP_]T᚛3&@GrBgx]eLxQ~3n0e'bgk(,h\Q3 1(Y}mw|b#EgnddX/"!å9R tW-L=-V`fǪJ4e2y+8_w(7_='eiөV1LA^8nƥlYM@˹o |{k lA6?)G̻2~ΕVm5-ʫ1Q(0iW( zm_E)KpadҒE׶99xD)r4$[p_Yt=l^9B?k0eE\ΒYvV-ճS ھ[6ɱae"J37@'i5TY waӗ|!(caz˂!BUۭ'/wnثUSw-{ZIyd.g""Oű\)7:g&_XP. F[Ϸl/zZ +E_P+Ӈnvm(NoeiL`LYc ?*^@.[,e|(+kR 1lYP^/pERj9 PwH3D{=F?Pg) \QZ ~aG1I|{6S@7ZU!.hHS^M稸F_,'Ԟ}SN-Sd$KHQDSO972<%'%,v_bh{)"q~jsRM^{ QC]5E?h=өԬ֝;WcLa|?T*KHT`A :U'?- $P!j=-͏Mu;vx"t%sJ `K"quiR!ǒoR=nYpm-< ~깎dV \~J}eU6bAI3^A|H#"[VBf[CZ2֕5 !F&` v85I16:±F<R+39lRz ( #(<~/ UZKUE] Sl2o 9d)RP ŗlӑz{j^Q ㆏S*,ȼ5?w<p2s#>e7T:[IH1ä6-m4H9yz!73=I_Yxyia7^?od$O#D5R0prӷopUym9ʓ/C8+.T^(nIMd_‚Ý+]U}-9)Ů+YBy -XR !vd1|hI%|ۍ#c\a@`owVRc5V/,"]4K*ʡg1V@]/JA%A)]~AZr[6ѼF*,sߵxN(w%đf-;O<޽W.:b|*JU"tdkr ć))ie$|J]seù;{[V*k sn&LUY=\L?Sj2yo6Mp@/[ŹJRr Ṙ&ٝdglqKAm?@}'P=B^TUT?7fjN vb}39E 6([ UI_Qخʜ u&Ш1nbyx.T}lq>KGTJr[jul,tkp˦+K'K](SK;m`fu2L` t$dd!1SSsACnwGG` .JP {AIc犺Λ5Bm~ H|XlGӰ#@)$8ϓҖ}LX5Gw#N(~=] [+G^ș9[\t^>$q68@^%s]N>Jȳq@U72daiHi':4}S_(Tc8\urd"5'G~][3yQfxj\<@. ~?n[)H~n^#_c̈nR>誨yS"xxCD[rl,d9-tÐ]pV`B,c(9=5Ժ`}!c!ǩL#t_IL}zΈ{_Hud+m~E\{KT&][#gGy # d<]]ZĠZ1 >*&J /җ?vYNOF rЙ>uw"qэ7 TGςWIV.!Ea(M; N=r{^ל+l?fƥs/iʅvt%69"DfEGaF_{ygY3Ƃc_D[GW?)IM] w\_汹!08G`)BxR|4FBd~zKqC`<;`Ryr򥹸g}WA 5 6Hc]nainƾ$[Е #=7 CmոR7@~ Fk[q uUoZo\;ylɌTe!rÄ;~lk3dp(^>34).K'9ڎ*7 B? C*]@>o%2\06?e!94 L[ܮS[ h_FؼËqpGB(䙞FGl=.؈\]%Ao D9`=Sڞ3^#O@5o@|&mfCͨ>pb}ofNȪohf*k [ت_c<'` Zfڦd8#TG&] iQ?GDH!QkE2GzU\=2ݺpK`h2Cu0s[bV!ؽ5lD>^bQrx*Б<B,'#pY[,AIq&2E1VTl`ty1(a}~si٭s!dwo!CA-QSbF`F(r=^+KAO}}ݿ=x=Xij;4a͋٤aq[7_Y . z+{a'͚oEJ1<rg׭,9qSXV:f@^l&&"bOITv[m&uExK"ə t߇[cfPUc< TQ\fɈt⊲=}mXE P3y`f[I`)$(6S+m0Ǯ}9#mKxTfVf^4BgUjPG ԵV-fMܨ,';.ߨY ջ7^ }wS>[\KEإ QW[{ AiM=>[6k1<2BP)S*PC k&=,6-R 9eD`[*1f-NCU2 &ٓӭdVk8MZo8bYubo5W;45r0=;~p|bY:uO{qR&ٟQfCΠns7aw|t lh7c|̶پa4ݱ=!6 ~K]9aE0Bi!amA$FnpO]kiI?Ӌ,B%Ԕx:W8غ3,d;7Z\ (v*0b ݲL̈N! rL8IVai[%&gmi;L&&pꉡ93в}j:̆=)[!йEf~`GtƹȗKV)9,YVeOΓ0q69%,uȺ򯓬,c#I0|*aai -Y?:FsS?kI,yak2`[ᷓ >Yc%F`zXb+&[6_lc䶄68pV~y?@a2whG 1r)dOge952\Ks[`氵!lԼ`AF0DfwaAU`G~-ˋ1P}artVͅ-P.-I;l]T?`}eα "|(։~Tt;]t%&ہe lj[͵^R d$ A䘅B<XuvS?˯r9<8v% m 7ᰟ`E}63+M^ܰ̂\L&|(n!3|5] pMWE}ʻ?_xPPXΆ%kn`F!OGM遅]QOzHf1_3Ƿç}l!+߅d)T/- r5qŋmc?M5cw>/S MJor~s,ƸHrAF-LU#"&۽au7x5f:* {a< ~)1QeQb70@}a}O">MnғX%f p崫ucfiږKzZoJ&6 y'M\д`8<5{LQ||RMwc5@ G &l s0ֳM '|Sv+g%<~B7?#ҭJ~]# ]Q/P@܄K*'=m>1 GuO $S,׃ɵ9_{U:q-zhhǪG4~F{2wl."T3iQBlƨ΂O6޵:L؎| j [dM]/&bF~nAJ~_7#7:O4ߓ y^bS8nd=/ .9Iy)DVzٟY%bZ:P HϴݺsL;$ >sD mOSK:Ff{ntG| B7IfXϹ\eI;})rE;S6]#Q Z)*F2Ph &|=q b~!gkd*ep9HQwxCS8w2TcE b, s'9E!Oxdjw>2 l}`P H$~r.flv$4#%國f^Ǥ HLlэ=3Sx^}eyT }N hSҧΥԀxz18f % dw81HEZ\+.cyMulVk0(&OU_*AX~znMF=, ;o@]-#+;\S Jv|ՕgS-$D#VgBUKV =Wt~!lBnCffJC_1YV6F_D^". Vg〿|poBU``f@K@!`tŪ*651ҺG#zLKx z }$C`9li=ln$^+MR|V@^E(\E!!Rֲ9ԡ-LHq&a/ #<; ٚ@kϻ PgYSN'%_`2c@儙rQ/dqG, &c^Wc[ߎ{{ٱ.,HB8ʆbw?V+3!@K1v3_K&.leТJ,c lz(wE{ut6hZM|U& +@P{(PX33N]f=m/pX ۃԮ ĄЀ&ØS*> !KK }/6/Ҧ]O81r;(5Soh䭃jjv@ @DK L4L]׀Y Q[8O zE p{Za4c ,|݆y\#& s@ʪ4pc*q"濁~$H/Sh[XqL*u!րeu3[Gl4GM2TSneuea4s Fd j*OmI_&q?D~ԘSe+>AMnK co+gm)(r !}b6S;%0i$>!_+َAU3=6G9Jk*({357M^F` J(< Fü6A@[&S~^wp*w-o 7b上c'fD3}AnP 􍳜Z޼VTO"uB[ l'l~\zVs;G|):ѴA_'7lQ1<(c%͒|M]o>9C_.i]oHrB$2+8%;G:v@I8 \h^NEfmx\]}!ya_4UIϼ0ux 6gꅝFA>t 90$ؤ&83iK;.r,>10 ;`0Pwgq77%!mP;t{܍O 4ҺsUExpׂ)upJb?w}/0ODx6p+Lw`j К`Ϙh'1!H}?>PAoj}Lv ,l9t|En3$T<"_M1xG'=}=Sʱ})B+lf$=uY8EIOk]ra#<`-MVDBk;$`D$ Hts֝Gq= FCdžoH[SLk i"  G:FO"OV %B@ O|HP`LlPy%7D 7C^&k|4_]{4X 9JP'Ӿ&bBoyzsBk(1'Rm<iE^yc쭉ʛz UjY0DЗOGP0D&sݕ<%o G5p"U2d 0 |\ϠқX"L(˼/IlП:ؚ Yi 1wZ>`o66_ Q ].;Uyý`Zej͚pd؀9 H>252 1smOc{ëOS[Xl|`p l)Z dY]fzmW ǝ.V+1hlf&IpwS^snf&2nmO9Yc8rj>VM/ vEo<3>U:kCJHę ,'_3[i_ O4g~tѤlL{,Pq [Pg o3ƅ>FhBK>ҎYo;.ڣ{60wg|6ނ0\w0M^.Ճq7‰"Z;Eȶa9G;ԡ8VE:*WhkηG.Z+o;WemsܧP/z7,J0V/b2yz9cۂ}Orς52L-ថF-dQPtbX 4"gZ#N*͞8tee8Ŷp*.C5zP*~TQ~k~ܠ^6a]'i|ւ PkT)%ء"4 Lűމ&oX1Ϛ_ 1C{t!e i'#:*4{N&~eYƪ^a%=n cn ֱYA_tb_)??:5K?'%/vkEW'W[M=zy-VHK f;dD[iY+#8RmZ^hlZq8[_`rE<*ݡ2:wu1́R٬BX*Oƺv|5ɞ\kr:n*7pؾ䎼(\^fTvP߮IO, AfLtȰ6cהHV;.Z_\ϓ̩Yo+wgY*SJLPv, '/b399Ǟ1BL aS5҇]WL}FdY73HIXj!O@IX- mr S=3Y[ZU+^ao;ePZ r,:G!ghbhE| 8E`t]`򀩦KB)B \{ܿ"Pܟ{"yYɻ{ڵe*6xL=EeZt|C&h@tD+|B?w[C9CΥy:, WWVrUYU0M0bZ%T'zkYD4 j mYTϠʪeEFi1lsHpS|p_ ½8o84.q,6.(+Yk|L' hjI߫Ά?I웘˜";Zc*8Az'?'9àr0Q`q3p}qlLиuDf">$@n IBea4F.Wo;Wi^58=z"0vkϏU;c7ef=-bāHW}'P )jR0i!)+}{mHf)ᰬ? &\4ީZⴻcCJ.%,}G9H}/)R?{!z|R0ycʸs *^.M>PޙQa|<@R{] _A;BE꺌|oX|LQ 92]=@u0^T_Nѕ;9r-߃{'b—l;CO$C.,n#ȒlKK]L%oBؿ`E=(:f ?2G)8dJzF\*%2RYty8/NwWRqV /#c ~YZbQxz4J?AxM)?J좃ʰU}8@As2Vwf {b9ZyP}\̒G{nx+ۦcu̔YUd3RmpH/0 \{8^'$&10(;0n[ |Z:Epugkˣ$Z=O: "b.[(c3@ރbRUoPJRmGm-) 1ʙ_BD?S&K fOwHsUH,{f2/ XL - Xndts*7_7|1С~#w-Ti<?XlɾoB0hj{ o5Ʃ6^)+f_*}ekir4|)Vڣ5/Uf.5L+2q@mW$: 3 AKDPnJ ?I厠e+T3o7πӁA EgOd;`5Re$YD_O$"Qޡk6wZ|=>@$0-R@v#iy* dm@`csD)Uj—.6"<[3ӑ z: @˧#wmb-pIB80W!v^X=Qǿ-6 L8=&>ӋDjʋFǑW-^`$TANEIeOp_YtFg8MX$ m,׉l&*YHcy{\zgB8z _uB r5`ϛ ),iFw? Nl6:J'%YBG}V$PB rIBVN6Lk.%vڰs9[~|0j޾ *μP>p`d=}e6gDp9p47DNp}@PAzl񑱊l6;-)T`|1}f(?+i@%򤉅|p,۬h>gsZ + PN\v8!یs_\ ;"7Be%#V&ojǠDAP]&W$"EPc:@[S6kpjj6B6A0l|KD_lm?,9^q#AʾCKZ^RNmT{11r'qƱq]nЂyB$72 @Zc?xO%shz 3z̥-y%l<>B>ml8f#^Q(/ 3[,Iʁ8Euӱ߀F[S<ޘɸ YzTuIj65N~8qvH&Ӯ%!quJtXRT~B@BM@$x\=w1S3݉Hp ET-KgT_eX@<몵XjdG+6LӇ`9S+RWLѬ${նVEvT Mo 뇻8C{M3߿kPmg[J Bj3P}D=X"20sF+>>ꈁ &xJC; pn9F_un:AS洚o$싿YN_K0Ɔe[M*JRC;掇o #|[N .6L6JO Xщt$eq?7dE짂a˿/Yz#.&>ScKdnkjot,,٩ g,WA.!Dvxj|nz,4~`$"%g *X~<WQF <8m-bb,ʏk&iki-8f(uXJ3]f&+=>0sW@ݷ&.vWrG"ڟޘsc-nwjR`d@Gc$UM1>֘@̫f~@Gpߑj)Ѣ6v.icUBnUA8?[a;OD.z"*MN V>k|H^^utoF͐A>RYfTy|zy{~ œޡj{svL5Sg[>at l W,#]23}-Dĸ1݀'Y-7B8UV!xUy>*g:>fQc2AN, :Aq^%E$`J\3e@Jt;x{.v8Ҋ ֥ %2>e'{^Cl=APL) 6Q?:i]Q'4}T?syΞ dL°lrլ.KDo0Yt2Z1M))&ĪxLH+4hҏJ ?oxnv-"HKL9@8ړ|3 L#GM~TWE(V8~fԎ=aj&* m^Z;6Н . 8|X]Qf3\r\M8"ivgkiQgv=|t1z7MAGQj>5L`r)wQ{22F,MyKzyRVhS{ 1Z6pȹow|{a^qfb5<;sKx;oR˃"Ig _ĆZug"FיuYضXbM5ͼoS5. W)j^si@5&5wLMzYa~N,33*9T次+xó"FT4(Γ lSR٬ԂG]5 1F@#nԤ'Va&ifTަdAq!*%-+)D) ǚϦοx[]mTɈt|tqKPm)䰅^e+V.\ҋ,$Ԇ8JP7>%Z+*3!)XD'mu]?h#pv^JBT -5jw1.[][^<-' a@Goy' >wl^ m$Hêp2bP'%ė;fdzB6\ȱB,tU{YZCO/kf(o8l!ݚ-9K}Tt,T VԜa lX ϐԥl3-qVf=PHO |— iS>~RzxʵiRDgVn3z6vUa=lyq̂rp嫩d$^F6xQ1du`%i)lXȭƪٲzd7ZYq6=Ee/=JMJt^FEH]<8ͤ`ɰM/4UĒvW+\)E H$V(1>guI1o'ߞYGУ)XϲL}/+) "yfGO_fn{iZ aU`M4AY屴m;H,G;8rnTe7+gUWE $>q=r?/I/$tg\H"ʯp_Ddn%`OD)#XqbkAw9L1 y-gE8`Ts WnA7cvmNs& \2M Ŋ ѵ=J]9q\xi ;2 _`dvZ d`Gs6z6c0l +r+&?K-GϓԂ p6%Bδຏ݄VԀ Ȼ@K`tU>V29 Z4i<'Q┿NX/ eCU\AߓܺydgOՔ0&Q31Gaa t _wpLE@CC8nR GyIH_?ठ-c ')z ~ni<@E鷺 |8M`_>Eqdp)JAӕy i 5z%- s0}.G`K"&Ve=VQX16MM)DLùJf-(N?Y5->80BJY;*2SsmVyVk-"#۝ 9*F4 e+Ḋ/-9ͦGQ1ǓuG,V΢2Cc !H3c|e-N:3\7O~!Y-GDũ26ԓj{Eh7xn SBR !9BH%UNe夳4 6dZTF/ Q>o-OƿyN.S v} )Qz!%oV-f 2CrsR4*#:ks,^t 4,߾s<͐> ߣC'[Ƙ{t}]-X[T(cmLF! lC? ݟ>n UVΫ1D+Bn3BMG7 YIW #!2;ξ&i[b&>`}M BuO[@˗B$X>HQ{Ϡb95(ʁjn@&i1|F2EMeTL:L/w%+D c6VВ[{Xc[G2Y[Xq>R/ѸjS_2o&֑֙a,;ttĽm *o./-t ZD՛Ŕc_6閭Υm.xSUL/@gz2;q37xB@Jqf_Z;7srtdvER[C1=x(4R(KnOia29ÛH5 Ƃr9}[rz ļHplHsShz(jَFnH$ȕՌwVWcF|-_!g/ݾjQ>gn}(lQyCrX'G<6tZP.)M`pd4V:䴺%ѠGCrP@f-G ?7Wݕ%-3PLJ_Lml~NȌK:抠U.T08%1.XJZ1WYMͤ?d2r*ޕ܎k ZK 3>;Ma9Khknhx[ShFG eg_f|W.^@Qelo Qo/zʍ 1c3>X= ʪ(:4=uh;qٹkn;nJAe{G*Iю52_%ݧY`/7^ 09:SIwRB*)?-KU/>%ٖ*⇾$y ezqaM0kSe}/WB+P~$ c#ܿe#@dӁc lk$.xTB ucKdǷYAg]Z9)z}zB)b/=4(P3rX %CS4d$ТLmiG#!ek`P٨O[ 0Oys.,[W^:7=EKN4aU%{60dR>q%Jt7*i-H`[rFCn:2M*NIFͪi EDŽeፔ]\#{NA@SAңѿ'u?C8\\&,QC prDC2hP"x-[z"wyֹ$;iṧX%VQ1crBNͫR= nž:Ng](hxj1ym.  "'=ɹv9At3ٲҪ)w?OSb^!cOȼKLJFZu&B};$ ::kO\H9MYz:[4-bN)0sf噮G a䢶/"Ss8wY=Fq”DBgƔgܧa%}tJpeIнgGGW|aaN~y]Hn095r,/bLV4d CJkϳLwpuMFNekyY81XTlal2s޷₼JVft rqo}q;Y[og|R0 N⬊ՃFM\oޝScBrWu2 OjQA5#:㥰;r?/ẅ́_LؾwZ̘2vDK5 aO fhHOŹ U4_W5K|Ȉ ltzG,s6WJ}1?*Ifj|7^_cb}PHKXڬjCh?x}mo;o-6k1!~Wӫ\}R.h[JHD"fG"|H9BYi,]0ȩ;%D4  *&=0٘3Ujkӆ'Nfc>_'41Sy򸆛JZ)], q4Qd)3W~Ko"a7Yp#wap~@e:nһ.:6|ИNZ˸Wh1{kn40zTF PL#A:᫒+ד(}U8Qm9e[́1 ]<[ցirc ׇ.Mu_O@]biL! kNS>v44_,<ͼI <ǚmd}VX6:2i1F;7} u573 }`z&az^tJiή]r4GzփXt2} RClo y!|V&V9ycr7 FQ:YxfLJĞ}l NU:seT()dJl$l8cmhxsxLb?n~ fꯋ+W\l*xS~=>slQ;NrH!9Md<=J_T7ۺa|.9GѰ$?"#Ps,,n)u9'} } ob(g(ʴ^$ql3M4vOڵ¹9p=^cXF|Q$Ȋz5-WM|} 卖5̠K WO# eV!@^ 䈿FK1/{<|C^@AP>ƿsýCSAvܪ"nFggpnmwSWUthH2%t_ DyӨ#x!Y6-LWIDl& ;Uds[^Ŗl\ښԃȟ$#=mjvjֈCs\u'لG0hlry($l2&jm/F2Dd:N@yK&KΙN$@rTZ;Ӣp两(~z1&ٿE!"0tA}ϭ|p/&Hvך"Gn-硒2xҾ5PwF4dvhaEl V.8u#ޜUpVlFмfz7@A?͑x23(|?Mf6y/:1d(m Om>PqL J n>GyCS԰촃( \6znkR8.oH†+&#7`C3+(Wz6+5./,\b/_Q%bX X i@b،ݕ^Y8@/V5ag6Dr/ꮁJRHEX]Qݧ0\APYxKΉ'_-5է6E$eLCC"@ǭ$ݓD <({%ӌMi:d%tqTf$׶" "lN\q ; ssDe Õ8aeBE\Uڟ^߾.VjE&CҼ]]n4'~ܟ%*B)! GF B ϑ +^kԺ9![@sqyh)3 d/6OF(o|}_WW$?a6޸ Zs|ƀ$贬mId!9bFsKct4P6FNW@Ҝб%t_y6WNX_}i&~5d7c`.N~\lz)crD+8q >pɅ+ DDi'AI@ )!r<1~ĬU] 8좮,*O^Jtk0z1CI"r_Eq7WA+/j/$r‚TMX.5=hL-b=߾]nQlIoMg os}ⷔ96=pX4JE3"N|;x7p>IgYvK^yswqBm!ԆLl~hq{0}n@o4gQN*Xg /SMk6pmЌ`;Gc^~(a22>JUVEWygrfjuZjh庾q>7%GN p%ΪR+ieh愡\s ;Č(**:ǝ҅wz)2v/xb-TsGqH9#Co0I73wߏ*iRtgwHV'Y= V[$U_G(̀5lC D J13)*oKHK|\" |k_J2:ĖhWa-K=ly9޹ Gȫ1TPbcSZِSl-,5M%W;H Tv`ݖ i߀b#k*B[踩BKlb)Қ2@M6Y}:<[⩀$v]#\.ӭY8pfRb\?bft&sd3DF'miyT/CX_`fK`mumlq$zn 9 q> mbyE$idkYj%'w Z)1eZc"^dxNtEAR͇Иh d;%â*W pCw=uC02=2@Y M#^D:-;@6˔7C60R,ia@wC*'02&<,ؽ"-~0T ).'DKQ 6JgK+ܕ TҀZ $'&yG_efց~~VF' YdxQoVߨ~Z/"~ qo[#ˑ4bMZ/Iɯ&r gZbWNHˊ,E豹Șy|t@A`#3;J=սI=e ew䜩C)o{錮k#È{lkmG*3QTUߤ$W| II&! kh5%Rvr:0ɢ tuX$X%(T]`]P}߾be܁j7b 5&SRb+Z=tgGH$G74RVQ?o'{i;_,j`l$93'i]^,è׷u/}T˥i1i[u $C# # %RxE:P\h$")zB_4]W{n}iK1! .㈬tmt4ςW3u4<-0$|41cZjW<)(0ơt`.ICu–57ɏ fe.[rd?cEףNo)`ɵA%7e`(9~OPbƒ_"E Z:!ku/I/RV=aawG^1@bmqBf|2]1h2>/:o5|W*h91?Q `Ws01ju٪}64g׿Ho.˾~6&jk\I].+`3N/S  >&L*aCRʰŸVKߧ[kdt6o쐰Lr*msdM7`pG˟"d%m)GCQl7R19p460Ľ/uYWRF ]Uߵ~xyTyMYwB-nOMU?ڝa$dQX}i4d5<r!G7S}%oCH@[QUp| N8(Bծ,I{cd]7 CwlwCwld1Ţ- ]Eqc)wrF$9 #4nӅpek+N2v0w"t"?$I wnꀴ('Ry)bqne689Y"# pr{Y\>䕜*Pb*f- Z&\ÏuA5WBP%/BRԜM?~308zn)r l:, AnJ謜df@>Θ~7:F$#z8"i*hBTUT 4:ssBϴ;ą.0#/ ޻ o  [r%~ Ʊؔy?|MD= g6HEEܨ8$eaCkYG*jF 1&b)!E xEE[aVή @h~ M B JR`ҥBYlF>٤$ rɣp\܀hү?|r'pA}H _MZyuZG:۟1Et)uM7NZuV*Og~%{k sÌ>t?B:l$i_6VQ`XY]Yfzvv~73ZW6b$zTM@3&d`S$&&}F .BbT`Ұw$z^Jrdc.TN;:3'[׻ =PenjDF;gζ2rq۬2$Im]ʃ=L%gJDƒDPdkuL)]sm:hEů>ڵwMoI`n8&bʐDETd uDƶ)z`DۂI02YD^);?WSQ:vɱA=׵@ ѱ87ݒ&Kje Ϩy٩P."' E/z]AP&{gW=S5 &]2p7/Bv?z`qJ#86} R-?hB&e,,)2YuG_JNm?ە]iiw@8:''_69v\: &ct$QfwIij9(_f33΂qē d)R4R^K.w{-Φ#850v 5!+ o>C,l>d.s'suwqH2 '˘4 Hx_ue mk1PK#˶|r?d1W~2GNfټVKu|I9@t2FJpJ3$ܬ9r?&\t~x.)R%0TfwJv:g[ݤ@֮lPHd (a I +ʫڕL8u/njMߙum=&)9]nݩ|+ljX]]+S,.$[Aρd⹤jwCҎ52ދ[I,d4S @{܁NJX=&~,i-*5K.?nL$˂0d7UiW~Bxqlcqo: o}Ps^Vƚs(L7q;T#+6v\R7\ {[Dlx$5* +VpiH* g%:̭"уWFuıޑE!#.H7Wdap xMDLL2P._pAh|l$}iG{m:,U׆oH  Ю%2x=޺*Z=-Pzr0'q!- N14,eӷr嚜awZk|ˠkxu>Xxn A| b@ 3mx:H]g& 2p?qoon4R%@eO#ey+(Qd)]MDw)CF G06p^eo _N/o0/7@gΑȁQ ,f ڄe.bڍy>,GǷjp`;jv^sw w@j-?-E8,d㌶`NlW0vw" 6{H?+C[C>ULb8zj?)hL8O1x $xkQUQhY6 C鋊h[KD{Y/./>'!0BVIz~DKkXZ gw~-sE@Mv'=%ʀ1qX5`Xi gЄ?ITHLkemj3*HWz*$4I9 n})H.Ys.bbD?d RުXq[ )u,KB|pћe/G(")} B(1N1sFf# m)@>ywNy[&J$l @6`1zukFgT 3Ns(JcU]X#A:i8m3e .E*W~a"HGOA𼭶ؒQ/#4jCу\% C t*﷭eӳ'~rk A=`bxaʆ%6\$ E _3` d]Y7Vp _ 6ʵ9IQP⑳Ƹٵ)*m]{=K%<HU%h"Qp8ؤШe)$۷t;Չv"tq@͟s[1SHgI^8T&wVXP=fYxvi , ~Mp-ͪJ y^>߽?;Q0Y;OBij=t6 ;OV-ÿEh}Zrtv{藢B4'&\yzB.1J1'$@*&!g=4B2cs(:|jŜ$QUv Vkiғ~q{rR*z׀ahDE]DR>bfBzݡׅVyEdv5Y%kEhy>9yİRp N%5ۛ ,3jX y*htR9[r(= ͞9;HM% by"ฎD"h {M lZ)3b@$ ZtyFKl^u62- r]i#룽9@;MkmlO:%yWŽ)B1CY9_EFlBڷ+M`r-3 oWNY'^0<']JVa!rC b*g{ 돠ϊ a ؊b>-,8՚]WYrg|ecXV0E51 5IUss- ԜAֲ`>b=l'Ä\Sy$LFέmP jKw( ddWGڃ,n,qǟX|ŏĊ?>m)8ɿZmrd9:ay3bjɄ9Wg$k=τKW<|102 BymfzZp{v@+(bogv|}|\>W+lS=ז*aX;C!J-Ea07I5J8uH/꒒p' A)@|[U83f:mW }Z됥Y~Y&ɨHS/Z_Vw7u| X9ctB߯.|EHvDBq0-I:zJX>DKO@i[٫Q^sDdV&WctBPntC&> UU3bӌwĶ; c' Exsn94wߙwTLaá u{c(C89$H}Z@8"a;pZ D0]k a6l-deԝ xH 6)܋ͽcif:*'阩}4{ +zAl FEQrrհT$Ƈ\p=)ߠѺ [\qB&/ 3p:!B|ŭˠ1E|SM?F'6 ZwpNa8TYێ#3քrنhZ`[4ZO sCx);\ j IL}?8l ,ΜR[C=C0?-?5{B2QI8R$k@*-gΕϔDR'7έ"gUq OqՌe}J"B@^-T1kˮG+*Q˹&o.$ԣk,uI8X /c!q*[$)t-h5k]WvDaBٕDB$j?  t֥-dDCL{NJ{ػyc~r^$s*d(_dDֺ V-V:.$Rz嬉5(!9yQ#?f_)ns99(J+׋ kku;V <~,WzMnҌ AmT,eڦ?4ط3׻s5[![TR9R6&xFWJ K9uVD7a"Odm1Ңڏ8z<!&2ZM( U=~+7b z!96ܝ Fֳ@.7,_j5&iARA9gb9doZ0A0#{YX6ɐ(Dc+hoKaA#WWc1a@F25DMeJa jg֚(ұ-xұ\"hvsFV.{Z['͈6"yXQElP]Rjף C?IՋc4RLO} A&្q+9Xy_ 3filܿ$=-jvb˨<' `IVQ Q'Hm8ʿ.znxIl$qD0Dt*glG#Es:6PBJޡ, =Tb,=cB @8ܪ^w`BɑҦu(]ee|73;V]Nhd6_w|Y?2a<*[gY-=GԺ Mi>}%S_HhS\l rϦIc+ TUβǾhL B5ZF̶T&(ymgO 3QWcv2pEˬOs%z#& ~<ؕ4fz )EVؼ$嗄u`kru_jjDhEæjYI(p?ug<6abm^&6EE5<&}fS/ޞò}A,8?: #Ŏ&WE:s]HAyQ]g>`Z+iLL 5th5ROQSX\ʩiZBIAEf[=#L5+Mxx#cKf.2*PEcpl^Y|Ð:M_6H|WJoF,r]jhץ@B"sht a^]F KeES{ ^K"YIuH@B6NV^jxԇ_oSS6 N98RB"΃g:\IZ:D*&]X37}kgLJrݍ C`7^U, uWBe]@S m kZ9kUV}_L)=sŔuE|XfafdQ@ P8KHe]ք@xsk;z8M8dCZ_=`K?VcBsmddYb 6 FkSu5fX:mQE+F)L5t̆ϔ؛b̫~y\HçOWFySL8N~{wМ crAyteY/j.w[(IdR'p9}4-EcK+ lc3G.P#^rk&DZЮ"fOq-nqv$~i*,C+%Vc瘟wp*F8'gjT{9T>ϼ5AX1s1gwOTÊ"C ʉqqF20_x>ۚ&+, f|gU5 D}7Y>qbG׀Wo8OnvQQ)NJ / =gP=L0 rz 8X×cuyމzUg&>+6뺗*L~V kG D&DK7|#=I j:M.n@Aמqt I4@;'-->+r`@oW UԚ;nx%?#"eZ I/JF0b݆`{?E8^0m$TG[ IG3MpմP_KpiS•弰I9utstK;@.|:{-͑ cJoīrbY-SUW˼GVP#l8hN2DȎ_yb InMWk&ҾpO}$ ]sVЭ~3R3Yn6Raޏ,eqy*Gn&UBayMt7i3ըG:Wla@4CѴŸ723rm2ݴy~pg7f= $9eЂ?pjIcef/B㵸>]OM8. 7SZڡOH_$(FF2@ }}#S{}LSsA%'gĂ1 k;A?WPE!D:!nӑ:W))@ ͻw'D2[ϛCYPQ`q plG|a,J";pCrȐi)¹T6~ tUm '5hmq݈C;_C18pzkrBgj\"c*bsZ9?`sp1NO8M"83ߜ諲K|'7lOXQ0JKfU6?cea}%Vf]6|E&/%#z*5!g> 5: shnmtP@^jRv!HTU"gJЧ Q"77'tS>7f>bvG"(=ݚ9Ue}J}dmh<oPV^KF@F%[8kXzŤ/o /J;ÛnƠ>(e dJkYrg5mk_2]=uVtN *3ڦLrL/|zHhxu3vbsvC#.iXR0L8X.`Nj:j(}IJ3 0[, N3<]@Db,1ևUw(p5^|%:2E1ۊl,)4+iĭ7<]Vp Qz~)bsdPopw|7kIs>< o-{㮽 + ]OYm9ojGp(9CU:3~!@fQ ^\6cQuFnZZԑeDWv|͏=/u(fܡ#N؀&b7?{"+-GcG.Ee+2ϖ5lQ2#m̵#v!쫇}~\>lP 8b8< _ߠk7¬kl0n D3klj痎5 ngt?mE ]^ڞl4Ӹ UxIǂrBѵ-̑ 9لv|fK;,, /cfy qA*q,NF`H!lC/*n8M6NtΔ$"=MhADΉ-svW$\@U֚.f3ȧJ${M?kS#9(- ŇCsY_t|5N0)ѯ)v?\m^R'q_R=s:2u/k!{Y_XehߩCy%fV&;5;(Ν-hPCm۰ 8"K) ]\x}1jj2^|n,٤Tɞ[d8{[|?+wpABF#8M &J(dks_۩/O|.me z" /㗾:Xɧ7h)z ;JVˇ.+R/ǔ)ѓ.[QـG,~ޱW8h zJWFt/s|_*2*ũeu&ojbiR a>ԄV)4W_f|`ɉ^\#>Qi˺8Av52=y-!;91xeI& ~?,t,f$@iq&XnyvYKfBLpo~E}sBZ~9Pc≘('㟁d3 ՊV ;ͫ*;缀9H{וa/d޻6CUg4 +T.*%\VMJ~UjI{He._#:NɌkxn@zS JFqP1mࢊe_%a3NKL7h ͻj% &ݗnWˀ. NڕV1!= 8'msOJk&ɒW_rX9N{ҹ8|l빈"ba ٬B>E1N Z=Ds#%N&?(*vW_ ~dU &@^|pKҁ'>Dre^[l瞾ЛGe]b$SMF9x 2-ّiI!!+".l a8n9=RFXo9(q/PLX#@蚢H}s4x5S]Y^&bkdvl9R.=KI5~ 谽2t6> J[" Nw\45b+"2_ YĦOjut+o{ǥÙg)cQK4’QU5PcuG2s\S=kl\;;†vQ׺#M{06NU³g#"i0@cYq W I baDTV5Ď ZL"6`ir`w\CigxpӃUkSc@)½ Gnޏr3+.|vxZ]-ko.M+c^4caKo3lM,#*a(u zÃ8/)>wޘjF,{ u1! HT24a)v9q7am9`plE 3OkfT,7m?7S<|0 YDCX-+֒171'Q=] ԓA%z6TTs2*tNbcߦ8pyR-ig fG&!$snPÅ%9i`:j4c ٙ(pl^ c+|ɢvMս *VbP}p/l֊&>GΰMY{ENrPf#`&˾,yEW0-]%let8+Y#4uhDG* >-4Q FLl_ΙgHp2è(Q1S_+ཱིt~悊`Gkg2@Q=;j %fYq_&J7rt慫bj[M%ɃՁQ}O;5s ,fg9sm<|EɕƊ~h/%.K6ym>E\$I!σu\mUķWöYZL釱W8H?<\'p[j&!/R檟8WBvlG&?MۂXS8 v Auޜr|c1%,H凛[H%֠7wtDJM2`ɛ’}#-S>ng7A٩)oJ!ֳ_-uZn{i6Gu}p$f RQ^JP 5WIR3{2;fmvˎ0f[|_de2dmG+AfĄZi־/q4HeDf;Y O7WƢ \gi?JghphGޔγ.[n&oF_vٶJB&jD%絅tfyf3N5'QO蔗=ۡ$M{vJq+VFņTޱޖڎ\[^oC`yƝoP[]PVVvr*Di V ?՛B }݊}2f nK.+ʋGWJ }-ĚHDvRW'Dۧy}{~aA' ޓV\8MZȶ9 ZU#)pZXv:&'E$B0kYae󯥾? $rz|Cc-'|LB]-<o- :qcSWV檴.l+=l("켳EUd/&?GaP#ˆ(-!h\! h1uʒr+oeBPDWtԝ}mDDgGGm&L/R,ndMs-9K4Z1S%B/a{M i4JQ=c{ jք t]-QRnIpb)0jRjX.qݢc Q Ona %N9L"7 \auӈ;!G+!#$=DF0|y V1EFd,h ~ WG^:e|"Ml16gVjtf L윯!!;誖X `tGf9w^5RPmr2QYxM] ԱrU4\:29ϓ1IEpJ45 hzHR[9e.ՕmENm$/ng|:όA;X r HM$23G"{+q}աТ%M+jB]o0צzzt[>ob4'KaUOÓ4<ǹVoכj>(%h6sݔp]05=@(+-V7xfz-թMÜž B7+1&ăm1y-?{Ĉ| ׆LDv\ԥ&iEg+! 'ws∘+ ~izW=GL]F\p0|C# |BԈ1/aXBYE@#Օo90oeE[-vm$B9s4$ADA=VSvZ伮n]VٽfYlxfamsW՝7zCGa:}nprt%W{anm(G(QlJ>C0d*3T95ˠK=Xۑrv°xA_{۴[5 "( QJ"yV&9}2JV S\5{Qxޢ'GlV+gb҈[3 &j5s2*_CW]2+ &lTߟKzwz*6x`.< 6J˷{K|PLƇ'iX{ Q*|@kbs>pZa90J7(r xcX"ɀ<<P=5SseiSmd%Yą?l1nVP(oldCuqbiF*{>9{.ѱ̎ Ј~ah9iP>+_PT-)v1/:N.'Bᅁb7hcٝ H0=8;gݣT:& [uOCHЍYxfEٚx;1gR7qm8Qiؒȣ<9}i @XIn,Or_ Ofx4jTSO/OfW 0$rڌJ+2q=86P QTp@.CKn(,Q*-}qIߋsk.rrCW E*6RKC!>k@m8KLs?J@{bӔ%OyIH땫9H+ާ˜֧ôa"IŘJS 5AR~l\=~: lve'θcSiV gҲ\`]֗qg'5=dWvxohÙ=%H4wS:?K"lY[{]1UnaEb.fMF@&a2V+PWS2Eʐb>hWC^44rc[QC:Pu2>psSE]k!yk'ыr!5OQܣ4SʺGߵYm*%w@?t倃l-I&=Ӣ>9MS]\YV:t AހS V% ruFdQ1ENOZu}cos%Xb܌-OpG鸨a|lc۾I{OQh3-xK<(,q=ľbT `-s!F|K.v&V`Ԗp/c#Iy}W~{r0Ev #)ePťӯPŸ:%Fǚ"mTٌ磮khs֐ŗIk)c7-'w" >q GnC6Vz&!p˔ۨF v|GђD\nc}Q:dͺf%:o ;H2|"aldmwFWkazA|ϺHtwG_`'s4;7X\s5nyO`9=268*o nH )XX yWuUPLNj}63 c*_EdVDk4mX&َ\r7\jweG8kuQĶ$VޘeSEgxx`˻כMaW~êvBӒoD+*)jE[@B8|l2`uڼ5O,@%~PM"1,**Dz}oڕs$FnZ#z$wѼ0~qTN*hoٜS)'mdJ8 2}H?]a>='q^ \qEXdWHzTyu9'/a- s£z?ܢĶJNҥqN- Qxcb{/qꋚ4gg0=*eFbÃyHhˆ21,a&wBZ}gx4%56 ofn*@lL}M@Q 躭2ʺ4"MkShE]oim`IΌ/qN~͵ dq :W\Ό _N}- wjI#vՇj`y[mhӑdlucLYyB',ˌyq }_Y&cnB3U]c~ fyzn*E4e-͒j$S2]ԑNy잍+ +Ft=n'@V$0=5cTØo~;Fr,Yu">5qo2s=W1[7c߬@RAubqyk[<nZŒi/p=#3>o[5?0yFK HEafxg3øi9]`9M~ŀW5EEN@ )a~#E7o`×wL(ijT/XwkR:1Iе9GðpeJ~M:Y֬V( 2,R{d +UT/gW0h돯~ߟm /pDrZ^ul i#'4aQmMg5N]1lR{F_X1h@PCpv@}jeA[Ñ=BKw bmÝGԁﶽ1Dd$SI}Db D2yPw6W]r7 sr~uz4A4EyI>iXlߵXB![(<;@_PvB:'OIb=WۜCgD^e/K (L#?6]bg)wʀ!쬪˾M# czybKV"-Z[.mcZQnFXRHZڱi8eB"ZADrޑE\ڲlhZqÙWq$'bߩ~~v9mTɠCxGo^q4vt*S t9A|m9|fx`u*4A !Bט%x6r]I+, 2 c`|c'Ho)}%^d߆"#Gmn rB7)R~ 8WS`'H (0b+į;ŀFGʔ\&e9*0*Ḯ.Xc"V`tTtL(.JR ~B$ZggZ(:@B@oUfc>ocNvkVud,|dT !f4XNYz:TB#GK-qs>1$sGwg$rߕp٭0VP^7;Icڟ&Fug'[(Nip2&-rBF51h.3¦"l\o-!(IVWobdZͶ}B AFX ڝ)G?Ro3{uE; =w岬)LXU$ކlT+#ZpI8q(`6 ]=kcvL.,.\/?.Q{[4h[ek"[ 8;Ni c+L[)("Z~%̾gvi#9֕HhWrE"v?GBip\ٛb̪mMݖE wL>sT^f":hFTIuW Q ںb3u0;Ÿ8u Euu$&!HRV$^iVXȣCmAi(Gx]ZCLz[F`_t(!X5}*;:M# SuXׇ!KH|IjD7]X*nSߌ\\dcijw5+ϣbvљh'Bƻ+[ԙCҭ8noTrah׶Mo9qP_#Ov}@tgd~M1m"s%ut&a_/dR=Da2Ըj~ypQMb^WHz2UaZHXŔ+MʯPDw7Eֱ{#5ǰνt(`D8w <dnH߈7 W2 Tp`%tc:ߨKp}#F޼n.ǜ<+:xٿ%Ӈjl R<d_,Tx%7G,̣]_`/S]]b^Iϖ%k}(ol y޴6scI?HYkK|&}CjɝBI6vH}L&e q AɾxˀM\~GZqҸݟ w|e{ueV_5dD%1(JӀV@ 0Mn50A) ? ŻDB$N6cۚ"hatSC+j~g1BwRK5yu51utC6r{[j_ !>$yfCā,^"Xw9 }5pӑ_DžpMfӥ%VEB/UTA gۗٶL5YySW6;͍!*:7.}ū}wL Yv INNx'N.#ec"hK 6:z?f)LD;Z%_ÔRtHѠ++qBS4b1J Isa( ᯅ6ae3Me0_֚gN(<, `$dM.fZTdv~]]m<?`/D:u' 7|,[EWO6,@,ס~0z{~X{ϝ9Œ^ȸHY]Ҩ/Γ' [/뙶N_Jބy. x5FEԔr CVn963[`q!ɶ !sڍV "-V:D.& 9rV,x- s4`ZmɁ F;qWuO3ы^ ƩpQM+&^\ocx#N2i-i[CܨYov1P3LLbv2eb'W)A @5q]}S4rqvgjo|`#qFg?+ 'so o$F^zI 6۸`VT V@bas4՝@og6)̂ hg=Ɨ<'WxD8w2paZA7`[pB)2q3H6 ^ԂGA GfSw_}TdHu7nyYRAIݍ5ǯ2XD>tcxjةxQ*tE?Ɉ[5cfI6V ϳX¥zq ;7Kk$Yΰ\lfJwpȡ28q=E^!-6F<64D540p^fdF={~#9|7 rZɪ3 mrd71ORV.Ѯ͍L= roIoDTGt';vPt2CO\1@ǃx\x#Yqtl]potCB(s&b`:\YuZ :PXRJAcOp^i99u%ΝUtZӎ(mt{AwLk :#R' 66梈`(HTi{>Zhh6ީh3LZ%uLSE/ K$`kؙŅ&W=nty,@xR~l?I5 " %x 1 1y٩`-0"k :QE׺AFZu*(!L==H`Оy=Yek{7όyOdHB,c9c|ƧZCLGC2SKQ߶bT!<)VCB;]5\ڞ-[⻠b^C#۽S+}ܼ@%CXW"r'vԈPvCyXqbY\ն~:8;? UX}Q[Aꮯ;AܱQj~y} Vmgf"޲q4~RXKt^6`u5.0p2A[E0HMa8RU(>*:Jc5Xu|a6qf Zт(!0bh,_PNh0#!p)Ω3QKZXL,(5jywѼK}TXyӾR?¸f{Ebꂦu,NT(u/P1OŘ[҂'er5jr`uof`G1-̩QB vBmγi!g:NJ™MoĊnGQL Ql5 3 SUy8s`4'`:@?5EgYI_z9juKX^>@9}חO-T/VC 4bg@L:x, Τ!UM[wqJplK׬>ج$[Ԓo,|v牤u%apB׾)v=N.}xI҇XC)" /|قD:JycHX\ffStm06c܏줻 2e03? D+,B?+7W fb !{=!vu/ Mj/HA$!&H-J!HţJmٮޅaǣJkɫj?DIܿLs\P ]X=&]}#9z\+i e ]xݖR"L bN9 @,m‚̔U6d_˻}ۑ,Y{>" Yտ`]Dz8zW1qr Q4 \a؟-z!9wh} R 6TǴCNh x ZtYQ (TJl)(1x򱩼t}mAk"%/{l? u&ԚEolppaF%a[ߣl({Ίr'mDt:zCuWID{|0e' r?>L;̬vWx ¯"+:?arOxIbS–T%OB3Q %Jrd\DjVR.{) ګI2brZ$c*Nlڠɗ%XyDZwqv⢧ޘ$-7gURXfwk!W&ؘU]z2& h ̫> wmUf$Ojj^2ڜx;x-- Uj<ThA:fE+R.\tXH_DZ]l}/0*{*ݢL0$tW=Mslx lqf_dS[Zd-%q<=r%Y[^EUxèփr/&MN \Ějn9E9eX93X{YW`E*L+F!_t0eJYM\!ǿhvMG#PZe~AV cyc d`d ӸzJQK3=ȒiޖyGc3~a푤>&U •omThMCƯރp +nr͂mg3"5HxLv<,[ a@MB"H '$1-7?޵-j+&=h1t4v6%E$v$j:"a ^S4F(v,Q{qG 7V&ɓ,$ NrIU}MiԾ18@ ?Kk]&A8T`!vT}m&g,!ZHTVQi hQ#voz!4aSJZ6s]ԙ޾Bv#Q6J$<[/-: ڞ(&p_@׌]kL+[:;"?N1 $Mw#z>%DL22`ߌ^("N%mqhˠ4K  nlT cShe#Кrw%Ho@qkam =²˽<8T$zo`>r-PFDN ;y'qGD6jb]yMNaޮi ATs)woB.7+x*bZ4OW+F.M jY?R0 ̯870pT$Ati]fD;.tPA J}UD=§ߘO, '-}/j&t\iÉͶB2a5_]2A*4Lxe.[wvNy2d.iA!%[ir>B"*=oPt57ѹ{]+~Էh [O ;÷VVvW9%H57fZɦIEHE$BG[04/ݹnHd;-R B*_eV#d=;U`N*M^6,\̟$M9ajQ2pH9 l:hו>`OU"hAl Sa(W;:ii$&NPM^a9Xnv쿖 NXաYcE?CZxzkѴ2췚)pA"9 ڼէzUm`T\R̺yBf1>v*[9c8_֋XF_9w3˹u["S4^`aa?E;,="k6Y| xj{ X9#.| m88{"xoUA*;Lz Mp-AbOyIpZ8 ů&IvuYM}|a]+8iC7ld1@0;K}$xb|w5"QmuKb-$$jWX*yl}'B6F `+je~ [4%/4H`irZSʭ{]%?+hvјDٜ?r8^5anT?&}4'iMo LL~FMMu;" R4baj.U^ճy _a_Q )cXKCF=Z(').݌S 2DV!q>@L=-Ʉ}/^?Qֱv[=XeV~T mVjf?'94i-Ahn*iW8j U!F~b7̎]A>tț?1?*Q>s7?r[mJ)7INO0|0H 6\Lo;ڊ }|6'ۇcz~K -bF\} 0F92ZT z8_` rAr'*+SH A>!6x0^F?_ꦞG6uz6*cɕcHemv!p֫ļrh67p:<ԯ*ք)-ft;7ܦ tJFj5[Ub$1)8G9P5E_R!%@8[Ĵk[MFU0!u@X-n RqƽwWPY~=!dw¡ !(Js}K%$O;`8cDi%!0 t`3{Uz) ʣP::iЙR.XD &-a ĆVKP: 4(Y%ZH3gN o^uJSa/j'=e5%$ԬFi56"iEY~Pm}%וd zY> .4 xk_6žڶ.}nv< Sxٸbv"L4Nn^ G>𘚄Wx]'c9 e.ݑ|#\Jtݬ Ǫ!pi乞uxo4T"쫵#MHRg_&6r7D!9F̋z2g>ˊdg䱏-.T͏51Da,WAPFʮ1Ѿ ?IkHP Fbi{s58RKѾn?ůC5Jc̳oEW|{6L>n8KMXyyS}k@,À"zE{.$e!ݬnCsiXJk@ O*sEoұ~rTݙHʽy5jK4Aw7˯[E Ȝ.|qDvYJMJE!O>2K:-t& G+jcɇɾzZFA%v^|Xox&l&c+S mQ8(ySrXuL\5Ei>:'·o# 14KO1oFAĮ4D逢&8WH˩[.һ~1kZnV;L>vGX ˙8o%F늞N%h?os}RNy3dfsDz dRqK o˵znגkwjc:6 w =ր1yVw6GZGHAq2 tA}?4sLgv09j[ Dy1uoh͛DiAʱfYr82\ Lm~0 }:zMV武lII%/)``Q> K8ny/5q_FUn6$PcA0,yɟ:DUM-j)ьqcǦޔ7 1hbβg`"]Xy/JVeo=Qix[z\Vs C"YTrx `L KȔSX t'F1ڐKMzFx[8TyڏY(Xë%s揎EXֵ1V]߶13X'=rJIPAj&-3)W_8G hR.[wl c}HMվc)fB"H{Y;2D<ɍj^%xQ^&G=F7^Zro\'orkЀT[ ?0bY6}Ss~=V9-Z%B1T'5ح.TvWNZׇyZC/tqrV46ܝkpdלH YEH֊vicܪGQ#kg}-g9鿒yW/N ;a<;7!ǒ4rМrd&DZ8i] WaU~6FA\ t:r/ oLx I5lS2FS'W츸;X9"]e-ǿ9\sE7ۃdjg/%e~O dȑ5l'%E6 V458t$3=,;)@Lm')W #9<˼7Zꛍ$ݰ_#/!F q7oR.MpN!Z;IlNP&DJprc؍ޮ=OM0Q BK Q]dY vM*Nj!1cu'Վ{@W j%-`P@ $ֻYK6qpdg9 褡ok(cvكk+}>Y@a]'/5k<ꊪ" 8+.ڶs'̂MOP-G#5FLcĿM{rљNU 1+;=gװR8+뀏1O7OYތ@p2 Gh; |uya=;Í/~E4WhA<$C. ZEp-U<1׽Z4ReN_ךJ9@cIKlw&F!7J'7 L&l1,|;nW =N2]@:8~tz]c~ثt|8_磵d޼ܖ?#\}/ç'usΏ]z{uTs|\ ?,Tm|"iGg%JJ/It_ٷx%4"d7 A'JA?&9iUChDKGgL'b?pB@m+"#TbP8V yuq) E+&}rk-&+?RgN._|Μٽd)X X1rUi]2uNqb"Uc]yUe׊R 10.od ]45-,fKe T.`V0f)>Z&$V8b \X~Y6n^`}T#eX`yy36;o'*;9g6n*Κ>i"&r`+Gus!il0k]sR ,Eek*E4U'LUS]ʀsS*Rlb!cA9@(ogbɊ8 n 2/`\_0bL& ~zp1%Do2?_<ɶqSA&̙>x9ϔ_j1mԱS9$O.,-j{:r5Y>KG-:;0ۛM_ pu4)Eb9MW䭞BK2ĠO ;x ;\O_o}a1@1#/yp 5 36&.M,K`Hn4mm\4{1Q?KKG.N~J#\j "l%w1prlC9W-2YPBV1T[,CCU=u-tP,MU'*#]w %Zlof5~^SJnt-FWE-5LQl\3N|sʺC3_!9 Jzz2 d<6$p 9b4۶dz pEۥV?Vid<ѓY FB(a4jR.AAfY ޣvLkQoJl)DYS0|r5dn].yH *%)sd.7-N&ߴXԚGȮ+c}dIbd^V7f9\5=r&Xݣ:LAjt&꼕m/$g|u| PKe縦֕wg#򎸒&GB TYײ~!XϯGQF yFv<&/a Ӆ= |t"H&veEn'SQ ^"Xff%ޅylKÂH鎌9i>(mpfX5an)ԃl 7V僑0R)π}w#O;x[@Ҿ/߂kdo%K, Ys#X{O@rpga @Yi T$>¯'B U`g8{߬kUS90.PG+W*ۖ `kW!9QPNSM)w$ =բO{Weӹ\TO q0X4%WK9XlJn\>:: y2~ 1TS_YX5׋h" I쿋5B"wo%w NNL%Gaģs'[ݜ۵Dhjb{_8 nSt'\XHPNc3S NeMA]'x2VfuˆW=4X ; C % "z4aWLyA*Z퐶O"~4H-kҲۼzrSS*R{RFn/T)j-gwvgF ݽ!P hBheR86X_ZnޱuR*;ӪcV-;(LdM m '\QC\h+;ѝonzH*0pg؏ DVFPܪmTW\z>̈́C^W΀Z>}|8( 1608!ӶeWW'&tYX'ee.DUuƶ|$B5mH0,C51K@|񜀙ʯH53^~_| CP;J$L+-{d V t?i|VP/nz.7 txD"oP]ڽ{*T[i3n eCy| 9t& Ly!UdVD6վϓ;CdB ke,&98}]p[ݤ:Pʕ<|<V3o2^Ъ ?eyNqIk_,f@ CF G} -+$ |Pz_q'y}NznFVDX=O@rmkz=n{C:ZhDjb,?Phd@AiCHC_7q{k:5#,Mv,܎tVLb) m7"݆̾ 1-DHO`5LuL}9unD:BzA9˝h@f-]=N<"ǒۭiGZ&JĸCI4`>,@0wgw-X/W#~5ݞ4_P7JRj~K5:Z$b)ZeEhq1t tm>cc6W皚=G.:Y4y)ٕ PCuZ0Tm<ȷ%hX>$ ?lz{)2yɺb=76$ښck] ) i > 8nMۮHiQ;:6p~.,"Qygey6t fAsOFI _ҤpoCfrm]p/a1ҵL-W5-G=HL}b- 2i:t&j+Tn.-_`mY^ԭK{S@/5ӏ5f}m{+ϋFW{+Qz?~a̢2p+LqbesLTBTHw>c—_v,ă32Sa}GO7 1ehxlc`}uNI7T~40Aۧ3<92y=;>&t/Q!OXS]4EmC Q|{3C8%>a~˦qO9hHfn6GoNLxYt p@IGB&i{YWzf@ l{~ٷȨEǞX*RGu߁,0&=Z3U!`'"H=lҌ␯ٯ8i +~"K}95 Qd2Wߦځ "y[9&H|G%@H#>#eɮ ~g@iuۍAP1v^))^'^Ѕ/GjE~k o* x 4a)҃H4zFGG ?Tu4rr;L;^ Lgswٵ7ˤ֥QZV1w'Z6%'3kU_qƆ2.@oEK:>f&pB.EϐmR%z˳xL:@mke~G?妘e\ҋoZ'F.U7DOOq Qz ݯgt Nom>a?TDx[xݖkWt6s ȓ TRkng#%^ `{mΝRY*,ʠ?\b,6LX[ i?Z$P=,VD_b1ǟ5<= 7:ʪ}oW1GBݟk⌞>Eֽ"4j`T,Gd?RZ&$'88c1JPASu9.i6\OUSh:8>Z-^>zHUZ.X ɀ}k߮EhԖO(kQĶx]Sֹx:6B2sb)ҪO;L{gkF$Ku8P_HAtn0 nyԯI!qu\&l0oC㜫:Ti&!ΘƥEG+|Y'3@z tcJh.+.'XJ`XV?P.w" A" $V|DS!)"=NwjxʝpJqyvbXk wk~")Krx0_s3-&|2ƊOLI ̑C\`=VuNz;%=NFQ̾7HzZxC("պw9pn1Fv|絥'h 9ne/Un:(zsL-#;5jz7w'{Pzw 2bef#_]nTְeZp.&?`.-nIuH1,-tzƑ2F(;hu{=w?Uܛ Вd05'scd?|S/׎A \VN}6N6YTߜUEUZ"{ca%H J-?+EVW5hޯ6-n996Ud#,OYwG~=\hw d؄OӇ0P `>QZ*/QF&sr!;69r+;_ asH{+ `Y ja=WmˁI(x:ш@#h%g{SbC574ࢌ.#l.Tr?n!樉sH6J;ڐrZB[dl8;*ƤBZmc!ˮWHc#[]Y?m+DBZHT:'wy! wcu8& I^5 e}4L.,ŀd.N>(%D6->̵=h@M07ddT.Amk9di#EvͰdXq{/)#>TMLɪQgq"jr65$O l넏ǯq<W 0j/!veCcG+:TQLr%fF_-|/z%k;LeXݔBҘ1@ W;#̻hWct薄w@2[~V,'WT%"%=]f0=1QlZᙗ|>‹ {dfT(E ^˱Wt/﯁9Oh<{!un$p[s]@#v -cI`V?ZOd*?"泄 5RF Gu蒕3ɜᏀxiHU;b&seC Ri#!=B$nj2.$`}30BNk+M9!9Byqӯ3 [% V:t{К$ 4iSVWVv( s?zpfmiAG[yrU}KhH5'qhcQ!Qu 9% H)]xSLoGa3p9X\ Lˠ]53LӎvOꆨ.A8H )u`%*J*1J>> h{7p9ߒ;ӎ dM16$Opu(5%DJF2}@LaK KpSx)hQPW.  > pa\)tӿ0+a~;8 ,]؉"eyG(O0B۴- =a+Aȩ I:mY0E5zlQ/\ kQ9e|8%3>CaO+eRVpY=Zk`: CZЬDΦA;29Q>QG2gc߃,i#"vÑ=D-foNK`ԓrjZm 7B>Q8DO,.tR!|%.()f̈́PJ5C\yTG 捌*~LưeX[juN.C8Dҏ)|}^3aykƾcn+NWXAKk{0/M(n{ KGcg mju;z9#DVS KX+5,gR&w #ou`|ޜ.ߣ\i9d~ߟ] 7 NK K|r&+C)Edª߻ѭޢSQ:etx>U80RDC&w@3,]O6TDcoLYWQHPCտ?} .)L)/0Tܷ͛gR~<ɹz h *pd.+?KMTRn\j^W>S* $Tzû-ƁH i2Gzv+ԽdZ64oֶIER [Rx7;+;GNyZbxnWZQ&b{GSyK泗;0LPEdWF&LCpю\ k&9 Ǫqz)Y+#!KדZMj9'%'o\}}S xh{et5 e,g<#vAZD9 Ku8ր]ʆ1&.bHg3'M^*l~̠P&b ?LoUgYAۧXF|ߎT:_KEF~rm,0ŲCWkF  .w\e +T _z΄OO;眯-[* A1O@g%[vmA|t9q#O󡖟Iv3}nx(3'5CZ{Fʍm/UD`*15еu}KaOZ+^AH[Tyms6Q2ָ-<,RկeZ_;Yhl4+%j(Nm~mOKqC)Ĩ5ߦ0kT-c#VGqRұA|,}% ! @ء*oRc Ӱ)OFV7A%ՙE>[nNTs!SG0V2 hOO0 Fd5c_++_妉t=j9#OE @n(A$Gje$o*[5yO7DcwãdALo($7HJvsLsĈbpE.P47#=p4}Xm$1[sy1,Tj9Q4(;?ލѦ%C @vnD#NY/?`1a0:VݞXF3;N+ߓ71 zXk6Fֲw n_4L?򴔬 (/\YX ">gƞpy (/k0auMX̍:r~S Ao ڻWӢ#ҏ<yގ'GFptJ$d{zupQ+䨆/~<=lP=F֎^ɑϞTQU^T[բ0_`h!we{\Z(=m#`U՜ꌓG:G9m98FQY5 u7a@ph{?w73vkELs.CGt^h~um֐Q{˾z׆ͩoDlA]ou+8Ɂ~E#uW@sӏS]eY/}BWu7'kA!Zݑ DEr}vc-:ᶲ׻sB_kh{+rH>X^*Q &2;4Vjis5y0I~lϒFUG$س !) ԐˣtFU{rH{$UBkSJ#s:2Gd. #DI T,Zㄸ7{խHw;?1֑ ?Y7Bm'UzZ|z$9%Y$HlWK[g#;`Y R7$iD+n6he")Fn^;. ƟI@Hhޓd/W~&m =D#˴P^q9 X͒D cm҃M‡ U1"xgY_~TTkżQA1Q͉ #ӅXS!TaF]!8V2 iBn_I ~w_DE0.6' 6&gmx QP3|S,S >˯R`EL n{WĸE adjX'qO8r~=(pIevX)}u/nE+{6d'z UIY*iW}unkb endstream endobj 85 0 obj 147936 endobj 86 0 obj << /Type /FontDescriptor /FontName /NimbusRomNo9L-ReguItal /Flags 68 /FontBBox [ -169 -270 1111 1128 ] /ItalicAngle -30 /Ascent 1128 /Descent -270 /CapHeight 1128 /StemV 80 /FontFile 84 0 R >> endobj 87 0 obj << /Length 881 /Filter /FlateDecode >> stream x]n8߃"$1` e b~0i/@#ݏJ1M#2Va8]_px苧4,U]OguY.Voax>rQn]ǏK:؏ygע\.?O5_ܿJ+N׏\5_Tv8Џ_.6e-6]].hUL{z>؏Lv c 5Vp ^A!B]Vk{FF!)dBVhŽFw -#BG8y'qx<qH x<q8> endobj 89 0 obj << /Length 90 0 R /Filter /FlateDecode /Length1 1265 /Length2 142793 /Length3 0 >> stream x|st%_5۶m۶ӱIrtlv:XQǶ{G^s5k=\MY`qwefga S}5wspĬ y@vt\h)ٓ sqqw߱W89[]foW#tprYYik322+OfdeOFhbdR3 dQ*@,.,@WVԥ_\)3oo^FC[{{X*͑U!Ŭd\l\ld@'25? ky9d'lfqtp$4s,o>.f@2Wg7 ;;dJf#0?f O26 sϓ߷ pWW ٿ2$$<|yȘ99ٹwEHB_!2Vw_cjz_ ݿdIof 1Ȃڅ O}1ڒɀ@QKJ"'fgjd4'(ad5J7kiʻH_1 PZX ж@@5?3;ԲY]\ȸ7 Vi{ ފL͜psv+s{l Z ĥƄ1\vȸ õ$w(O CGZ_~V=$"| uJ^ƞIk/;~M3߯aj{.6jg{hQLA#6wbza-i|#:eqDjGͭԿ@buCԷ6Bܮn xa~Zh6~b}`}҃(. =>dn9=,=UknjjNx_ 𦻬zR hYX$\QaM E_;e3gBF^b ܃.+%Y7^tiov\y4(g#׈O&`2.o!+w"ɐߛ]@brٕqyĬƇ|&Z>GoP8.5Fʪ;N$q aGǕtjCᶯ3?ّzujv>9 \#Ж([f#UbB3q !Ns-|=d}̟iry~y܁ƪ84MyINY-S9kiA"Hξ;C/lC^c.)ק:J_>pd[QP@lRoĝڪh2'7y`B}6<LS7V=-A2cMp Bq= ~6KєPjFթ]/j;t*0¦5Y!}8!+|X^ U6~ 姘cl|V7jSpJe/'J]a"lE,YW%鄤^LG5/J&ӧcNɧfƭ{LlEf<s$v$.՜m NV9۹FMfOǚI|VlA}Ӿ_(ȇO/N!/a?)a (\|Sh=Es(u&ARqYY3 <V4OJFlȼ;?I"LZB"0|Djt ԍM)nE?iUjRzQUǠ Fq*֚8U@RrE;^/25)hAssvt =[&( 5MqG144Z vseA?ؽU{!ȳ㵇sFNcx53p732{2, )e#gKrJT-ƒ79 wߜ+ǎ$]0OP˷KBL4m~fvJoV*n e,- (|yzH$]1珓~q^QO.[@V=ǔ8<=3Ȃg}}+ʰ9S1:EyL"s7u.1]RΙ SJIНB} 4rP]F_TJ&e\\4S~Vji3`V 9i[ |M m2I7.ywG"Lf )Slra_=/[}]E?,\:L\9i)l)>h͐%=G䇓NvRrk09>e|ӨvDJ+'_v"dk c;X~1Xl3RT(߮?yX/¿"03 iyYxжU '[gMRxU߬[fq<Ɨ7FuJI&Ҷ\guvb%;Ӟo9Ta"$XzS`/n]ͣQU iʚ1WWt_*yQ] 2ѮtJq($g2gKkaJ<9F=G67DU/S}Vb g"S<;Y`|1jzz#6̚وOXVBS |h_JK ݆z:|+zj_h뻍&xuH=4okTf‹[*TDcRw6F]0} kvCw,S, xwdAi| 7$,l( <$W!ovG%Ÿ >FAH,eLJ߲5̎J&㼕 Ѥ[FM["yeA@%tE|j1KTܫXez[Bں&Euᦽ,B +vsv߇n0 gv/Vm4\//En뜏a© \^w3g9;L-em*X[, u`mDwwiӶuPTm/{!-*.2&fU8{HrSDnrh -JG߸%fnIYP̜fz 6W҃%KW֚5|᫼ҭ#о"ŝ'Lif,$_« YG%9O9,HcoK"? i2w(3B&Nh$*qD8CVWlSURF.,u񴪳XmP*| /bbb{ptF2ZU;6)djc$L>׋>qId͙v-a<)nk"n k1(>ڔ> | bI2~a[¨`/ VR`ya4>0+to_nzAd | S㐧N*lxx}=xĄ=&?!*j[pO /@"3 '7lk}0OG7$ڞwa/dx^M%M 2KfK95*jpcL TZX3 _ꗹc0 gyv)=(exZ*AРg8 |MprMIA%2Of]jLs T3lEO2(&4y$Qi˨xchd Sumctr}жS ",nr{]KRj{jp(Hcϵ{O$ӺSj4=Bj ok+L8!AUɠHQI!0 creD3H\YXCb߭vZe6j&ymgE-^X so”w{ffT; h[vM^閼}F!J 82{"?|?HQ:`~?$G!~]Q4Hc!Gi>73&EjYፑiG?]%b;$oĠt7K):ުEAX3ZS˥:-Xv&pt,ƶ_WlƷ ,8;r ;Af[4 3N}(X9 .som^껊AHuzrSxE7ϩArBDcEQzÖCoSd8.EdO$mj([E_6 :K~%s+ \΅Z%cx5.F%>fԳO8=!RWM Ι̋B V|Y ?ӂ?@45χG]fxWl~egzi!_U2pUlaP+!q+IsoJyC& [6%BaAfkdGd:T,e+IiXȲ/+g@!]Lf~7#ray ձ<b&f-_}}: 馋'ecu]UqƒШ+F2h(D5cAfd$z"l9m7rE֒ }gv R+fr/SOBɁw~K9ޟA'!?Pyֈge^N47wj+~KUBeJl3r1lr7.>*1–=XkD (WЫTѷ(mrX Q M!VA<^̿gaz~s;t&Oyr $8[c0H()<& ƟNV^ b;O0\`KR͚}ngx+ Z{h7hxvW nʜ3(Xі}*e,";yAП̑aݦF@khDL>G Mi|҆KW.*H2n2>u?{Fw!jX4 7sd|-a xIƿq+p9<ݝI>IMTvg!C,j5|>嵪JOoZN^-jӢ SK'l`Zz$dKo|+Tv&SC}*B>r~dԶ>XΖݶCaSΌW.zp2La\j C!5\+972c/|ʊ-+Kn|%;nTS K[nJ ޴Z88t2޼+(Ea*(x-5Хs# ȉ2_B+c‘ H ;IL?lO<<$9-(=|=.-t;ejכ%SKHۋLCQe٦P+ry*'-32 89lE| ne+޻ӬiKAv4Pӟ`CԨUSaink±XhQO )ŪbR ^; I*fCBLUtL $b-wM/g @U?ְMjۢ\p*HwEqB%^Xށri qRRFkMG=׼̻Bю@ cȃFnI(8;n/Mhj"ƯO%jm_⿤}L)dtގNzvYrOQnB1C;!1#9e_~A[u",/aE056>iKgBW6qa^79zk[/Dm-Kh}y^;]pkErO zJY緁frAS P͂T%;PbzQ"9.zuͲ=! 5_5oJ5V7I4%ݪ\EabUgCs:`3ݍF2JIK[LNšc'EOZxCZ9b9 QA. * O3n $FƬF߼%H6=WٝqVI06G f:|,OLb0 b9wēV>lKlХb<` KnzDxXh=A;)))VAYZ}r_lVa5赯49)uZf:I'u 棛gx؂Տa85gamj~A&0 up4܇ @TbWApGy@1pQOFo^vzvA)OZ`Hei`3Y}܂ {)u&E#YH1kg0v(0ˆܱ" # WӬ"0h/:itIwt{LJW Of]Yß ]8U!#$aM}85vI4|e}'*2\n6Zrw3`tgZ0D[WJ8mO.:zE@go;;Tni[v܌QWd}u79KX6Oܠ$ռ;vPR:u!*z6+cEyAƷŏJb*kncbXސhq(a#֘%WږM(NK漁<424DJmlF5h6`[j爗">@Ǻ2g=sP@Yl Fܘn Ru2M Cح#{{&ޖ|{YV+9GaVt!14jJ|he<눙w8y<תvh @6BF|g탸MZ,H֕(=5WB,nnpOOgstB@t yys`Vÿ!&^(rT 3[dOVߥ~83k~u8TA϶R%!, ŷ.\č`,6B( Hqi%-uWRE[Ԟ[榋k7s7XWBԽש9/Qo\P%{śl?{^nizsB׍.&Vv_0k.m?FQ k{!Z1(^ z=oYK1Ѧ&@7&o>8 eА `HX`-}{iǨN 'ȊAv! Gs;2n\'!g IHll% K&L0ܺ=_sĤG(|lZ`*rc:8"R6b&`*m˿&P]nm 6n[>f6|a']WyݼUbF3b*Hy|vP?'BT>E/_J_pf"R0Aob՞:1 Gjd-0|n6N}jgI78Ig:fW}!0T"D~De.ixJ09QOlJ^5)Z}neua'ׁϟےÞ&D/PƁ'iE}5$F=; 㵳HI(~=XOonK${;Av{Z.bu1ٽv#j[uwk=pG6ݎkFBXE3`Sâ os*m: U[̰B'aME S{Q2&Ҩ=o5af_Ifσ #CsW'GK\uuggFl>$ ‹| cp- -DxK"A.qfy{^y2fJ[1Y&ݠ B=k1Âם e[g#- "_D1JXZDpw8'ܩG-y| ;_k ƆQcG傎t|/qI |gi84wTc)"G2}nEMDzPuxۈ:.ՒU]üc"$Q9^8VV:8Ϋa77?7/[εleGm̳{F闤ȱVcE,ԵB3~B>xlu3(.pͿh$ĩ9 0-ܶ/!=@.4/++s psk*#ʜCQH}aX '6ҫU=rO>?vl^ ]Q5e-R*jK# @FsQ+?jPD8韾iZ밴sk$)$:*)7šXf+r6 ʦ0 <,QqdvY/Ac[g*kMC܈xL)p2sŤfTذ' y V()w`G*ËO_NWB&`:ƨ&Pj1\P<{Mu\ m. }:EU ɴ~0Ղ8㘨y.iK}Z82.N $a "c~O#&.{lo5,Md¬e5uP:K<A{Vumݔw gDl "^72`-~Y@/1 ^E,ͣism_r>^;p||􇕿 gL8s5b$yflΒOjӧZ>:R. X !ުfA5yV9j⭐h jb (3Vi4ҁ~ITp  ٛ 2>+{It#7BK2uU1]rַ]뚘v;6a_[ *8<c- *oR׭);FOj(3E]3WSK(gg!ópmi&~>/@cWDc-ۤQf%pɄdڦ:<] l(Pie|)G蕝)["₮ҷY'ߪ.;i6^ip2ġ<ԓgW Z6Zw)-<8H=Uw0RMJAJFS$QD! P!zFrq ƀt54UEꍔvg̓OmH֝0k~nMե;$2'иX7HS` ;< Ҋ ^!%Jn~PbyAWp >'IՇ(DxH$fۮ{^ hG1y>JxKuiDbI?a~W$@ۿФ2f-h 9[,<o9mnBbA!l쮑 f 7hm{0  . ET#'Э,.jNR_u&_[+g|A8UW@'ΕIb~߸5F@NOrj>$P\a鋎:Zq,.-G,A:ʧؒ`xƼ.+V%HfߢUUM @2и;IjHRI-7~ݏڒ=xmYV Iݝ]WR`'>Xp/S[I <0]tЧYavPyB-+>G\_\+P\pbA&VfGϗ_C TE\At Tr^[U%bB\c&Jр ĆN-ú5@tۼܜx:D/hR]"1 0p}7Є-S5{5"t)a@}v@0,RУH%Fa1Z,YT1+H{:w`$P%"Z}TsQ6Q?y 0! wq~5- t;dZM$C: g+b{L5VSv9x1Q81PۊZz&T.# ۙ%6 vmuLggg%+ #&nmyjpTw5!K=,P@9)z##UF:raDŎY1a()-SO !ލ u,q͒O{!F:tX+wr>ҒȊ7B1[gfOx`aEGHX{Ok#Jbk<2#T6q/dv[TVK J$a@%t1UU $Fߐ"D&?Qn ш`nXM3|`wX-Z#!(cR q=$ >CƚWePM/̙--X5\pP+?OO (a6)Hn\DqoxvD%Nfk߃7ŶX/7R:O@lPxqdED$^20ys=%\ff;je Ǖff_}A_ C"0f>3z-|WB*"d *URʚ"-Up 2QƛU3!X%/`>S$+m#TOsKza~hE]_w9OJ+C"%JxKfc[Ϛ\X1sp /K:KP`eFMd/g0cͣ3vb2$tvO7 xbz8 x>ְ*&y[}6_s e0PM& !qO=HQeCŊν/#vl1D#ru:Aʍ +Y8÷)\7^QDv?%Y3٠&v7>ţh^9Q{*ޕR,bDO k']2Sv>67vfnf>GrUt\BqEtt%r\1)RҦ(Y{MZ=>O>*b"̘PkDR%~Tƕh"7ʡ;ނbwp$KI&*8_ w%' :^OX8D :_OOFʲr]>08džnD#:i9rK,cP,?o6%;PD\M b\v^hn5y)FG/NYsnݰ=8:Tۻ#!t fWvcs\r7Bm03eKȃ%B(䳳6bRU[ 's\,\z\앢:ʇ\Xe8+)߲CŀԁQRt N;Y(Eka4AX,E}6He4q;{%,щ ᳑a bP\S!o |\jjYRNm}ob)A,RVU) Q6qj!wl)lZ`CƉ S)S7v# _b.z}#΄RѺEXi3eD-nɴjC-ݿ?HXoi{?Zf1]!߆5K*.4b$%:L~qEˠ;/$](19d3b-uZ{!Ok4G%6X9֤9__l/5yԏv@ x<[ ]?u;K \#qe p]6os0@k)(ci!E*'q g$J(b*? U7Lj\i~df4w᷹niŃ9MA)NfOp !csvrC,bQ$eX[?Pk,5kplmZSL+F+Y2,°~ 0r\fS(0@04(~7Q?Q; 0\-e_ms ~(E Γo-y: .|k"%]u:Q`^K!%sy*b~h{F_Jh R-:1i!zDVrI#h}8 L5zP1c><VsH\jALeU>衾ꈝE/~j4f$GbŞФ݆u8ml6zV#Xq <+81ڽJZs32ءy 1]F WqmO ~][ rGҍT 'qF!24NlF@<9g}XWbĈ@?&$`If '-TY/M9ljKjsG$STu9)8ϊ9Kn6L 2P:\v6Z*}U߾ atTf k}:M$APY덢H{nz0ɈÇ mXSͩ.X/QRv{UwͯaFn^JM_N`J>?tuB?~N vO.+x+KaƂ? j$(e-cLXM?ɦ(敚}>:Cy7z\WpO/6b׽G'la]mFMLGđO=wEd;୻QW6I]Kz[@l4sl1XCԭŔru-Lw>DŽPE?zoqk/ " C8|Y50G(@L@ .&4+ qN; >LZy+ 53[lZz1hm("MPir3p/(Hj"9q +zA%va 9VVj\l-jFe;i)bbڪUIⷵGس{4@tVki17S-\p~'g?7.hz$,/5Mоu&A(0fO&Ԣ?Vo7ƃk.E>(`:9U-DrXKz?@=mp0Jk-Lpo'%3,'ɕ$xL8!&ncu' 9ٳasEIeIeJPZDih[XwO 49%/FCQˆ#:xhy$u],@4i;$>R3XG>ZTTEڰF/{Udt.'pgYen?(wy׳}"ɭu9mG ȿ9릦+K@nK㖽ݨ9߇/gE'ڈXe^%}$7-"%x"Lh t1* WqgR%j)}|?ʼGm%E3RoykvZu> (H^gld{aF_1cb2rtdqLqy 10lhʟl3deYD$0fK] o5٬-_KME\{SEV[<9\_V)X;{|)d7ٽHY|^E_e9 怂C Ђ젻6 LXDMT#p|\Jq(f GHhy0R*gSޯˍh>4 ŏ{~{ړAC$Tkxڈ>f,}<wN {K[df~rm/3g BiQD׼K+A/+`d\o< r.-<mbAc$Yz9^Xś ByiN'}O(g!g#վZఆذ@Pȓ|3- E8WX[0߰aނt=;0 2Edj׶ M">5Sir-䑻\ELU+3ohnfph7c[b{Yv J$ď) 5~|}. Z 7UwSj'0鞍Յ̙j`SĜW¬c]:Odlgʽa_?i4chjg*K&،73uKo< {`G|y.GZ&З8'9h[/fݐ{;7aǹŲ߆ʼ/yp4zk ŚIdcsB b^ri=Y~W5&iyq%X7xtՑ=ߋqOu_l,"*6e/a d@{c=I kt{*L_ )[PB~K5 Pc |,?=e/MP[$p]k4I1mS=q矧؝/iol Dm@F.mF5-94N 8nDOʖbH4:<m7)oD?×RXΓ` zF*k@v :AuܩJߡV6Z;dh^1PUP{PB.ڐdtaS_gl(c'f]?y9EĖÕMo+J(F&\&јap0@?hsb"HW2 m KfUzBpx7LdU߭a46Qy%?.(-p_- ?QnΤǔ;m+hB:,ށ޺_QU<,5Q>i< l7Ip bw<ެn`X>\GG|9vv3T&O5+ĮeKLLIm_0'Kڞl#mOYAr 4X v,R$ɲhT|X&VR/U|Z!tqژkY㤕2y8B8tyq `]O,p vc6[fy}/[2}x ޤhzWn UIǙ&uڛ #2{NI- )@sq!xg`ff\yVš᪸N)ʄ7JSx&^ _P//8"-TiwsK^6Xpͨ 3["]`8G]:YyN[ m7UgxO+&FFI,P> 5Vˉ}'~a4Hʉ};m 4 `putL8zmNxTnJϵovUo0}eYU4~Nق<4%5[M"{~ oQ IRE CQ(_e_v5Ӹ =iTFkKIV? |ŦkwWctf|B>'QE^5Xzo hTd}y u}j2}gB=XdD>˾1bC m9貽%4 8ټߘ6:vUTu-n&lmkT|~؆/UNU,ʤL85gm}0t3L/T)KFD+N+1_HG2EZ`2IҼe{w\Sp21kX <\HWo=4#GsG$ -5yY~wO\^_[_[&qTu fe0Uvg7+"S&ZnYT9v+P0߻Q1LmP5!!`"{ A T)ĪgiT-F:®8rk8苤\؋g| [)SsrWiFHbO:(  =WAc`:DU[ZNsZ-UHC^\)~שD%|lF\>-t'EQ[DaC-+'R02X8k*CC&p%Xj*7k;caSzqX)35U53TKGGʊ Ӊri4C2t戝r>Q= 4XRe;)5V) SwLw5Z+iTU!Ȣ%<[L k U6kؑI5at0|-WCn74 n4ڎB*P/GN|1˞n s/"){*ɔg}.#6 V󁏽L~I 7?vưq\$R89xiW3!AgHIҽ5{ki=#RAh MdCF|aah,ZH_E!őM;f+BL6;-O6~."†>J&ZlQM +iXXiM;`p@2:'0$"1*kyvlWYUÔ.2BsfQn“</L2Vwץe/r`F6txNLO#/mϺbr|[(-K`y :ŇQ$xll8]L ]@rQrF9Ye;=&yh3rLg/(Ht\KQ|I:hX];F2Yɛ"{j I}HN2•<@y^}F4˾Ae?lU_~j`,y_"@_j2#Kx'[ٜM)ڑZ@-AyV6';KnbpxLɳaGJf'UܚA`)d|iͦ3Rh_ETO+q<\%K,Rxs:{>=k ENT>N{-đ`P{rt- O[GݏɛSpob0-n4KOq?pvc>|Y 5(G(N.:98@w>0]򫳌 LsO^C\{z44jSN^n ֲ~ILYĴqHv6[4ua =mGn ¶ψ)֤EѻSea'*Ҟ~V=RZOV9I F8^E84|n؀c({BGMb_(gŒUw6*nx*S\;eFw=HpM~h< UZo'J4WP [滲52&8È&?5ez$ӯUV%D'>3.F(rye\3@~! ua'@->&U\[i*^kMtQzb;Ds)䫓YZLш#>qg7ⅎʻo*{gYVp.KϢZM>SVK^rb+Ġ}H=V%b6Ҳ&EA9j[C,5ا㣓n'Klq `-^K{D^4_=`Qg4 f1(H>Y7UHPk\W;yGv mc>!OR⺡M uiM%2^0g_lIB_l!r8GȵU[Eďq!Jv̐{q%Cƒ(l_jiZMjv"yOYH[ qU[InP *r,T^cIb.8yV4\~+E|z`IEh @WpJxIc{qFPTOt<vO SW iPfQb=/WDӥ ־]⊝aӠڌr dm>h[F#3}{#ѻxmX 'ۨۋCa08 Jota}M?qe tk._7NÞdܙON<~dQM^NRМQa$'Kom/ۤB=Knؐ_7qR[1+ckרv,Ra#.t0/ ";;;PR(%\-=)![f`~%]ctdj>]ҷ \Y?UP.?6aTQ淌z݌3"0PRLD0,7-%/y+㪰5G%y9OKњPqlDΈ:ʭmKP|ᩱ8fگ<4g͇ -t 3J:5DԺ] ۶B86jM׎G3; $ c]ypk$Q/QKm͟~ yeUIP•<0?D@X5qî̂_v\y*oy1uOuB\&t edh+vS`aWb'0k1golRPBB}o4 kezh 2? }yu0TP.͔Ƞ}(Wj!hBYe{kEÈ n&Z?kI"\GRߥIufDX{HSȣ)ML)N[;k( 7Jޤ(L<>lc+jzat\lGUAAԠ(v Z8_W葂"ݎDqNޱzTf3F7JGwؚޫ"r`X8_LTn-XuʬlH1KcD`ߤOK-Zx'5^;.ykn-I@b-g_f>"?\}TY#q55ҌmWMܨ(YKl!Qߣ3|h˟M~}x:@AS8JeU+EKh?c";vBu3{mC?AGe$ ׊q0%,֓p.H <@ >F-wu3+u@RI7-sX;x*Y#ԖbbsXJ 1 OB A ?IDvxDl0IcEHH?=EkTu@vϟ&YNqu.d C>cQn3=eX},H{H0).[0M ϊ&On*zH nej_@IW}},T;y7'* )loCbV Z-xu$z^nxE$ߘm~Jn-zv^N˒_rpY-;6L9~.|~4P@]*© En,go=;\g)@,<`n/޳^$CD^-eF"8r0W ??UjN:5=+测>ܓvx)+1`#mb}87a>C 7fDKݎoJ%\:CP]$A,rt1EԼ%rG"5lPڣyVYx YT9j0^2Vx۟Wajz"VB*:j5 9\m.Lu^ }_ߜvHc"NuE.$S/\QVYiMzbMR2N&50 !PY k@6(F>tǣu~w)=) *CZw6ICUؠ{t"]4c96Ꟍ}x6LSAIvb.Κ muWH%lE~t~#Fy7.MT:}mĽsAZh̓?PY;IOVצޛp'XbGH&nl@T'D}cݜaDT|8b/[c&aϪ%YMӘ)) |YT?M_LoMuq?UE (L E+hw_iyanx8L,5xj]t\O© L1jM:tJf,AsYYC7[1fIiqa 5$<+ ķa-v_ɎwhA9W\{K&gL m>FVGc8YNd'K%K^$Rv@~${P/$ (MzĐs?dlr &m Ep ڹ(P'nP{9Z%؝/-\47X?&T_Ț yRΞO W$>LF `DS <)Q`Ƒ@kg?l58ί{PEL1LJ0h - $hhJf^PG^+Uؙw8fCdkAR:&"y?\'c;5~cbs|zܹBv GѫMV a f;qe=ԕaN-K|/<;u΁tNtc4$إа ,9yQ~sQ @Z ?r+ͩJ/ŗ(= 6ywLH; C7I$=CY$ >#! T|mqDe]ת/ nN2R&7yDsf Pܭi4q2}xnMXG刀4`3pV T-w ^Vkl|K8E}"_' /-R8>cWS1vnxmVDpJڙMT'&pGxE%GiD十pmmˈ}ODL i$WmԀ:1:}  F"y =U#MK@,HL釧AQ/rWZUoL-V Iw_kz@pjߍAF:÷Enl˞ɪ3H2E;Udob1?l?y96~6Etd)uԨo#oSz:/?{M{ xA~{`XeSw&dhXdj`f @) WJ&9~rLOR` B߭d"j"Ng?b"-Z:94E{M`A fB8} vkHɸC!MoTeNŒ׹MH2X)WEdD^xd _̠'FQ6%4̠KlnR,=J@zzUu%ǥbe Nё$_&'N,oܞ $坡l!4İ(Fqc=vZ,sJ`{ӥKa+Ʌ u^~fHEQ|Z5~ru'm^0Sica'\7̠7̦h ) y >֢),wuQ!1̭C'\NKEg0J֕6L!YmIS-z5k3>$#!3߮R4] Y ͙Z?[ٟ#{"G0Qhæ"^caI{yq*)K:'037o6 m@3xXz:k7/^6"~^{2Ndžk=W&T=أ㸮",N!)[Kmظ[Ӕ ѭ7ޢ 肸 e#H!yZ||,(PEyXQaSmJ=b8N)\}}\Ei9*%8[1xӊ)V\ !3gc /Gʣ+gцEumB Y]e.J_-S^j=mc?MT1ansh`Y _c4-s\gX:Q "VO;' ;,^\ňtq<7Qm²j09-HҍP&]LB]KYhXW|mF(UA}ےVb0z˟q8v&g)ML8B|$c ք]4G7d5+r_SS$Z<i>A=y"I.aYpY^ʉ{+1Ft\{H(doPu57iK!&=wu}b*I"Oڑ0:!<yl#'Q$42~H}BKw t^Tp z1QodzB$'U)6!|X b8mw?ǣm>q7kUIn~B!5Aocv lC:詚Ev|FO%Z> ޯ_I͂L5Znf 2kt6L!% {a}gzLc4=RZc;FhcvӦ.Gڙm|*q}6Ml. &>GFg1r5ta0 Qxmĩ[Z!Y\D>um۸QJO !># AY @.7=5%0tPٓSm~SA,w\^=rtox&*syid7'I##`1\UimXoe1Sy5ΠR~P^,}p%zzB7Y:|W.:0fs΁ \GFnxK5~JQuX޻ "G/nq0*>B!kN8;HLβ%u*"U]JTfKɢ͆IFh(k]հy6WO\P}|K)xM_4#Me*R/U߲8ן8l=TӘ>X _wdzz|9H H+w"P{Gz}/#`‹syt-i"؎JN;Ik\,%UƋlLgX1rbChAjKъf ]Yz('`ti:C(cqlxFYQG'{hɔb> .xQ$IYIp3n[1|av*3Kg|ǣ-5"CKst/dX g%<ah,İO$ߏ XQ.xH5if:4$'Z>7*1 iRP3)$Zf:'@֗ -R< \^M*`O0lql]L.fĄ шr1ԑ9' Ȅ䉞E髯Jg 䨲7j-˦N`~;9ɂ3/#!s$zrh5-qgε{R{R_Ş,k{iI@k ;k} SΨZ}6oS}BzlTWIar<ң,#bL&=nCInߗxt鍏Fu{b:g]>va(bj cssMY \o۾Q8֧9[r.7& $1q.(\r{Ygq#)*##F,R51KXd". " Xo&mU*B-?$X,F&/=Dc M xK:kaIC3IY<T%Vi>E٨<݁K;# 2t-"}FcA@8Zz1==LYqyEcRVaK.,9@B)0rH~&Pi+>-6&;e; U9*nVM֣ÿbWO/||>\PPQ6xwv2 'o5`A4Yxf7 KŻnfW4(O`%@e 8%ثsa!r5i|:iDT W9a C eꁿ xf\ NXv4u-w[\H"PWyq:s9@ j `qhЉocvyĴ LهD`fZWƚO!-g2X`-7i 򒞜Wќ9z:8}ݽ'iЉ 2D O21 OO`c=7{mezurj iIFI|O/@5koHa5ډ$я{TrW.>vdy}?+1yccAB1ޜ%^tXeeDWQu!}V͊1i(')&]*l5@tBiBkMEv8ru9fs eǒ-'pLVѸaQ$ù8(?ZWp[?8pI73L4Ozs}fmL'"~gJ=k?(u() JbMYBu`h:a[|>pEƋApNrhأo]sv@xB*1?<ּ(k8;ȹOK;+M F軀-ВNtm܋hOBn۲Sf,P*-ژ^p EF.O1:ip^RYZh4e$Zz:@U7I̥=bZqeDTA;3\zCCI(]zf GX5ڝq_}7e\Q5Zy>c,HLx_$MDih[89%B<:(rCXn:=9Ǣ*\q"c73z7XIHLS6Oר;̶4q:pOAN{O wceĉVk@ԽҙJf+=  Ͻ +FpAt!z֦ޓ%|RɈ`Gkk1R%iH1"ۤ~' 8| cEd\Zʗ냽j+R^)n|v`Vnj+u\HIxVOFjUBsa_?zsnzq |(䴖.~^t? .{<wō' h~־Vr{O/ѵe:݌ERAb]ӠuPj ªKwteYyjYHﷸp\_ؙe޶'+!ٮU4,V>vOoBfOIӞLj_SC5U=MklMA590{XTPcN:24J #ywR͍ 9+3pr=:>hluAef?%XxΎ)Gtc!'wi5/ ?(p^dЈO!>Mbv>,H}keUt(B ( =JэU;MW vlh\#aD~`9R]% ΅2F`/u k4w՛6pt46I~0KN_Hڭ] ОĊ܌?;q?E0_\j6)_z>} OY30ܛP5*5 8i ]d1`=`"zث7`CrۄgU\2IY^P`24$~zZvҮ dH0ra7Tϒ&SF!錚ԾzΦQN'LDb3&/w*u&oly>[9F&i] c >pR&dk?1V aXd5 K498FD`}bPf;1Io奆T D4 (,p97XW8y)B/V-]eOOt& oD^˩6)%,Ű'BA E;\L>JyvnѿH`ieAp0[b'&w{YĦDD`8j{m&ddXlnyq ֺnZoe]Е@"-Vנvr+ L%Amtuo5̩Q72u3of&5*ͷp劐9c'܅Z'/dݚr%]ȹ\ۺ1"^>9F}^q:K%+]Nix:@qW Z-vZbM^C9Q*dzR#R9GOiG/0#iS4KHYMGs䇏hAc6p`;5uNF6 7h},El5Q«Nzy)ݞVl #8Kރ;Nt~XScT)4GGʅpos],̓%~-gw']4<~ t[.$[} 'gI*&tBaHwxkb+ Q_~lqnXf!"}Y/~u*w'tojM|h" JWCC}>BNaNny9Qձ. o̿:rǖliBn Wc9$hdOY/rTGgӨ^Z |X+,{E'$;iN`Ax<~Ć}*dO'iBc$xPqJX3"Iv%=3$U ;^NyQEF3?IH<57^Z~2 sa/U~cLDاf>{pb\0}WbeSL@'dmF@Ӯع5Z!!p=]N7zR0To!F4 crB1 '@bݤR#Ƈ< Ԛ{t x_lW2,_e {)="Յunc1h|K,y@͆*@ a0mk4uc >lJ1+ 1]6fDu iHi !}vcS#|;9.pĐ8j+AĉɹDɧI-^Yblebpa_ [n2L5&7 +Յa .QvF k84F˂;R7%foZu<1bL0q,1UOѷ߽( 5eSyxlQ,8npW8n8>`F?}l| 웑kuҏ`n&iD>_Yg{a4g9E}#RKw|_rDB 0e([E/gHV0/J3%X {O)ɳ<htf <ۙO l?P&m)x dz;cQߟM`DǥT pxuT{ R{1LL(F}pΔ&nM8% X!E&7Hl&L< FknΨR&`ϡU\{V{+_X\L\> Ř% 1w+^׃]$syT w [@5F] ZFj>2#C/}^IcFY Kȧ4/Q͚!7!ia`!P ydLVg?D߉]CnVkf2~@! nVhEomNnüdJV!@wˉΟ6~* SBhBjf>-z($]MzA:%w=kkT\tc8Q^~="fHrßI9}`[B,G;ޥK{7}QG3 -^D -j>:8&\VO9#N%9~iYԔaX$8bj\L 3LH.0l' }̮ǹb)fhʉmso, J%\6''K…V+\[c-C5RdZuRZs{T3#BKgT]F! !FlrfR[H<Ѽ"[='|٠sNݓ[kulbBkg[PyD./OK|\;f!f B ?%>kuI&a=`yHZ{pIeR| ~z3aR09+b1KK=~ 9)T.f JdM>Pv}VsLl?ǶZ%iZA)#,+[O=(f=.iRQǨ\*sF̌MX]AT'#:i]f#ա{VAF0.w=J^v+wQ3 ”Dh$Nj/>"(3))M0B` JnR۪;D>܋qL-sJH5*m9W oLnd}lI\Ls.KҶyQc#yJǁ^)]HP yKqe-p+=z.T+r;?ʉ3c.'0x)Ў8(rh@CgMe|hzXCm9ݻi‘Hи >Hn!꣍bCfW[|os`|"NJÐ[bQB#MձF~J9 D 3[?#~frnrwW.mݧ~՟Rݏt4_{}㏄YYֽYիTk>("VP'j\m+U$zTxNgmdChӮ"=>cA/C =}&zʘܥBIK5=? #JtC}Y^Qr,|ƱXp d:7*ky삯ʎnS+# {ZS}hM,B-K1҂n>mh蘆emo+0g9mcDj?Hj#Hd3598HYQ,ok^eu2(^:<.ƎfIYa>_g6`Ӗ;EN`|iB .^)2+ $v-Ϣey5(拕ҟ#IQ#ʊex!$mRWŪJoSp{'ډ-)>wkZñ~l,k()DAfάy-{ %6aQ4 6rwB R,]qu{p "P1Ԡtb7]PoqHD0WB^e5V_:C"yTHV3NS TݍԶz;MA!H6'!Y7IiG8+)O^ص,?)W|o"w^(cώk`Uqihו[4>N[nH*d^2`?DIf%$w5lbN @1r7 z8X^z bՕDoI,od(;`viS>@gFAT <8v&`W6i:]għPr1ld4wR1WFMR~Ŝɝ]S67:5omZX('Hn./H:Kah㯛Ve\K41t-ILG8Aѓ~{BS1]J3=C`0XOxٜH!VѵovzFlz+U| ft)S{{H6[FOHNswf09\`i SHH3:qC(Bp,j4 ry-9')[%s`^YV)Z>&ྗ=lɏΕq%z#[+~/nXcF\#4lɝaO|x 0O>NjEM#px`F%ۣ ;H:*cSZ%<m- @C@Y)q#Cc}X0#"R 55tUtF#իlU:ɻNZ<ǚ캲'a8b-]7\hDOP–ėo~З#Bפ`=3fbDAk9S$R6 Ljԧ?ppdQ1 'c EhῺ8] ta!tjvI㒖 b@UdKwdEDG ?;3.C|1?H~Ӥ9&99 B4rNGfnm RA~e8pBHI8dgf.hn$9ɡf  ΐ2u%LH6Z+JE6. 1X#&+ A,LP4'_0o 8+,Q{@3oeQ>Ln'BS@.Rv⏺KjI']b&͟uKѓ$IʚsH3}< 0xT1R H>$llio#x~%t`eD p9Z8HKҍu$JHUV֭.0gyQof\a4:*+J:om54pLy* [V;a S: +![f`8aO`a3 GENF |-a}Dn.P՟ "Fح"e 9KLAzYS>d7ed\^$~7l-% ٪ua8 >u-LWgx+wD:} nr@ 93^n3Fo=-q0|PQ YJhArumE=ʕ_C$~BYc:"wpEjDNG1- C:PMpm.y(ͯAө$;0a :Zn"2KF9qܜc=4o6Y aǍ! E.,!x. }ٱ rb#@p$ǖr_*8\迱L YMݳ8X`pl[kxQ3l}>1yBHRDݚ=p|-Ќ%2KN Z Oa-8}% <>(0//|ٴڤ?p OJT՛ת!9W .#[hJޡqjuduz˰ʧxԧ)ʚ./69C4)1L 8_\h4DF'޲`jr7 r4Fh5 u9ؾ^[Uz-mgI 6w biZo'gߠKd]f$V,f'V!ykkrhQ|_qS3﬘bwsM#L/pjor(t' T|h48^ m3!՚R;D'O+O5B-ڔX/>"Jt%aE@a=$v" lOXXDtLj qIxFrHB _۔KNE۪`5l)퍝UW4xmax4GxwDo"8G[~irTN09ZHZ+}0Pd344Ͷ^o1;#1$Vmn %(~(UH)Z L|s^ bCx-.p&"ёoqv {lhyJyy$ rlNrsFTî| PefjIS =KQ14ީPʔȤ_HwiyoUXVÄd(6r?CY\7FHWnMHXY[>(qI-\*^nl#e%Tkc.x7 4as~MW onu 6mt#)_V%]qFGBԗDQ=tJ֟:X[qX;EMDz#^.K2/0STчDfMw(0Pq2[eِylh4yHc]E86˰lm7S mu=TVrSXٸG!Pwt-p׍,>ųu38@tI4Y!Q{Kp¹g.UVBK#l3BL9T}٧Dy1e GW-3m.8!Ǭ"TcQ*1T;TSV@wG+@ò="UPuӻgF=pYV=I(wnܳ}z+-=t)Ep1r}R&cߩ튵CcDc=M(E'82\+ەyԥy M]q=,P&Ye+C[O<|Pn1sű)Yy̲ܬnРgęT:#N# cprJV5DTvf&zTXT#"}0Vϵc3aDW7dIA/$}qB=|M>/f)^shQ`mZ6!U& aĪl.Tț K2:['*ݦ''C*74} -<. 8G}f5([ˌ9;ep@q5tvM`3 q赩-U٨z|z|tbe2XcS$_n-/\PeH&Ks21_@j) }5mv9䠷d3M2_g$,N=lm(nHef#qNi꒾aCgU%s嶰dM>N}cΗĠ&Xxq+hՋJ_"!r!,r_@'`E=2|'旔~޿;w'ӧ?>=`O&YMo앲4֟ &@IW"5]t^OI@6dZEl]"t Yr#=W[CC]>]jȀK {޸7|ScPӈIl-|WR@6)x VnܫD~KԃV< 0ţ¾ytn0nxVPBD?kɞbm?Nzg[%$0\Ә;B)W-9% +R9G:!mhDjݟMxtQqx(e&5S){VٸmSO Â7t^:!Z7W>BmyuDBJiwq9RG!Q3MKIdG"V f zV;kj/F>T:moNMd$ߔ$τ*0-`iv}WSΌp.mSUaڧBΨԤmF4NMҳ 3yɠ ,IZ :=-2?#6b[ΚT34s0Ub^:{/.:r+!pl([2paLk/)`>qى)z?0f/N$iŵ̸ s&arSq 1w^M&ǰV,0Y6gYWu5`jc t$'t[-5m];L=7/B`z*LgnVw ,/畨Jxj) ](LЏszm4e>[ܝM_v}"QevE?Zӳ>[W+Vt%ʝpN-9ioTFT|( M,N#+Xe)CkZ4FȒ Jhj:y}w<}Q{ W$լ<:_ʡ x3ԀE &6dc 2F-`OE%y\m+87Cvb)r)ICR<*ߥR68O1nu ("EqAP)2zAYT=A;V#߇.A7%APuSxb1z[{x1UM NnxQj⳹$/%`'LsRZD=<$}BƘ_G+zO5nGIQ(];)oNܐTx42;L`iuR0f20#c}EDЖqÒtfdO"".Sm{c`H I>ݥ~8] ?u>VHȈ^G,A>YvZaO {0G17>="2 |\'-b5$^4(8$2IapTMP^1Ji}!=K ]r| qn2~Z&3`-$On-5`R$[a*'#B`#V|-R=G `JpOUء.ִ .Vf@A=.NLaksh!|؏v榞׭ 'ʲH w>)P`du_qcy6H&1PIx?.zV[=Td.p ]KWQ 4i}TGrGO )c/Z\_h6޵Qs]-Q_30$Kuл6 "hpeȂ(;Ci-'We?6l.& `1x)gIi(mwp =y/ȁ GXNOHoEB RuU,$amܰȪzwztìgXyB$(󔀛CţGv83D 88lwjhf)=`Y8;-A3Bo*68:ObԆڭQs,z,5k#4)DS5I+sg=mEDBTR'EO 1Bꚣl6ƨ1v۔Ź% >^,d/&W+LbT(Tcg;;5P pg[l[Һׇ2<&<;+En $Jf+D k"*q]86dm3Ob|JȬ vQ .YhQVazD#J1 4A Z$d۷4$rݬ_s)WR 'T :nCzeQeъ\z'Uf<7[K &xn//XDZ8[ny˕@|*}Fui ג,t~ۅ:;m~ivVHs?E3I۞~DgX3"Y֗]bR>(/OHPBYIT-J͇` QLA ƃUտ z091b d-`|CYeI|+L?U^">dhW_$~smV&:teT/[ 9m1 5Rݢ {"-%VjbiP<74'tgi^BH/C=ڤMc?v*A.Y>+WC(yg'dQ#6rbVPt+M4޾S^+1>/cq|lׂ},9lv뭹'=7FR evr_8hJêi7v<1t[zщ&Ӝh#)c 9Sv&Hsg,/dNJ)Fc[]̭1(moX(㫸[OM r{tOnbv2n(=9~Ӗ{6 ŨkF^3k~|WGa$ ꚳZ/O&ʕ_!v\8DU[?]/EnBbbu `4浳_9mc%^zYR8L~Z%p-2w>:DWvA*<-8Lx[$L,X(2*TPlfBu|Y/?[YpԪ; "=wp93 ASХkˠuª!@lYq5S8P@4G%VRK1c-,vxD-tp 5?+7_q 嵄bX\{_ I<rzUo} pFj7vV x*BW[ D{s*\8+NYeՃL5seܶgz ښt4*sƿAc':fѮq U7y5ceBj"ϰo˵YZ2-렬V; My2uPMxYAԑYcKϴZwlfG=6ijC}`##xu>Bɀ'N,Rؖþ;V],+k?~WS_4Js"j7%Noz]qV0Zx~[o4@3]O! ȯ "al3ƨӎf+ft3[Mɱ֚d' _Cw`c_fiޒ7Qeh4jcw ?KxHo8 `E;!5kj, J+]/s9X2p/vAzw.~ɧ@>,h^kPN5%Q%4\Iκ K1}"mh4L6eO/xOdoki!GWٴUWp|^L%AS'- -!`^^+g!`)2S.HlP՞Pcn@vyd7%Nn9FÖLI*TW.&c!NƿBSS"+ۛm'j]-yÛ HStZ=!$uk2e ʓ}M`[pJЂ|:^d!MwN5HЫH>C*S<#[\~sb,))ߑ&:BW:jzҪ]B'Da6Yn‚PGt['Fqj}@J̌>)ZF_J9 WL֚@: W+lnDm`n>[P Z4㑁MQ_jN$ŅSskک9k-0g?"W2j^Ge!У!:G^o\#NImlB(R>hf0k>zМ ^ϋ5v籹 D1ݡssK jӋv;7Sn[ r`!EIXuxС +b9 ,)vI'6:ľ]BpMЁ ;xQ&61z|;âO' "#8 48X|օ \Z pA(˖0^\Ny(ߕߤ,gLf|JJ`,6; QY5YE JBg1 {Xf> 괴w $#GO`zFپdD Yu>Y\l|`WLcځEZN~]DnmI\/4a+zk(rpS~4ᥧs'ϱݣh-a}QӬtpuiLg-f%D[n1ϒ/՘S}mD Q[.8 -'$5%ǺT"#>v Zx :g{Xr@}ķx l^4_m|bK"T\_Eہ ȱH * i ^z:071,5rSRQM .S˹ou`Lzrx^ ^P1mQAle \$#J@QFhndHVE`Z0p_7toж=ؒtU/a2]M!AgW/>-_v^j:8l?LL?bv†5- !U!k]w )%%,"z ${:bWgxx8;I»f 3ۜBaynu:r5p dzCޏ y_uNyGٵĂR݄dTĆq~e2βϢ*5ס@mOҼ8$kN8\r;LiEH(/,z5N\R0V0W9{Ya'Kş=si\mVC+p "|f\f-z5G)ohzlarf6]Iʲ|_l‹ _6 *y[@ $:@+`9lAܬAZYν~dR#9B S .+k3nc:28KU};)$N`k5̏䎪ju'QIj@ ٮPp//euLgLbj|[%4tH'{.p)lxƊSjzgjͲ3[w@!wd"  od:4a]!Sீ gXD-h" JlOS)@5) [4ԉ$Uۋ=_n"kOӈq@_!BC:WuL|Jxǡ*?}?BZv!f㷯o3.{ *"J EN!pPvOylGZYM7- X,bO4ꌈ%,0hoUD_)aC&uȿl-6${PCA-HSyBkwޅ$, f:mF~k#VCUv ޗ9bXvwn8&W6Vt@- xa/!gj]TCT[i~y`ZKt;J%!`4}6vIAlQZtCؠ1 ,߆mnD<6wT2A6vdNnGf40'k~z$ysc"ۆ~XXɿ~B1*|ʶʾis@XQfV$ RͱhmZ'QeEσ$Yp؉&#=~1›A Io/%2 aA5N}WZ͎ >2<(d}WqcO4.8Hn=ҚPI ubmj^۫'- RWQ0ש(.AG=Gd'ed]0, Vjm 9, ?rUh&kJϨ;uKb[S$/NN,B@ޅqA'^'T볒[Z7 /Bmʕ J*Dn-{C r,tp%l]0++PyG 5ǯQS|Mn(]L&y5P[RY_ T-/I,=̼.0mm\x.:0Vr??*.~nqdJCR}_L#LQW)[Teo9(|~mLP2U*htq)%+wi}Bg7zi}j̠qR1bN8xLrWwv J ŢyWqbd;Pםo\ݱO BJI Tɜ )?2'w(Q+7yI/LIU]G?\93Y]vL؁GUS mOqł'+R 'aO!Ֆ투^ܫ濾w'wrK:,ayrjPJFlh6er]+"{r2x}F!7)q֬Mng8DC7 }2-@Z rq%: k:ZROu5\D]W%//FB=sv0X2ܰ+ʼn<` faq/ͺ'?CbPdjР952Lj=Es:O؍˜+"[ZC-?ªq&pn mMo)_̎)r nݿ< ^;IB఑n/-&K RV;_xyPy!SbZ:t*nD]O7.uQ ;&hy 4keA.nաخ/"DMMOf$F{;3yJD :}lB "K5=KC誴ś"=)1TH T^(DPhI}lbxp({,/1"Pr$Tm3cMpMo`r?&ô +ҐjT~@\;qڶ\]*HpVxUQ{0kHɳiz%]ѵ"L߾=">~ fiake/"AM3w qmoO0Pr9(LAN#YsBp%MS": (O I?(gOn0?E4G|è"ˆd.,)K0 iGrPK &DV{pQ#uI}V!fb2~uB4ĀEa[tDŽ2!;^T6M!s=iAF<' ~V2\U)FvCØvCt!I PfxIb zӅ9k݊!5Fo-^ID.DLmD!T!`SN w"s%!y5]D[UNfu1HQLreAB>/p]Z3{X18cU C_5ϬU^8935ɚbprD/2$6wIt h"{׽Ƀ)`s:60ԊM4t6'$~𔫍QKȒ_}$ V?^|)3~?Cx sA֮܁Cy;SG#uNA70iE|=}y4 ݆Va/ȌFeʉAN ]D䧰~z$?DǢeNat@6rX Ll"6$R;W%tE3;oރ:J-+M.MA_i!OhE= ZEEܻ3@QC"My$ӂzGZT:÷T&>Wf  uS|Ys)sG"(eqKg@z\} j!o|f]5P,z-|QBjWlϴAR9(&o Ό[)gzB$9~*Y؞N0Փf#WԻUF[e+4 =]kgQ .A-nީK}#߃vSٷ{l,޳@8 d[]/ɜŦI+(Y&Y9:$BPۆ)=+|҉2u(xan&7 g5#oP^DyP~wL_LqJY4›c,0ŨMvx,qЃOӒdcuHrc .R֯{۴792.Aأj~ eLNvى29L=; Mn,FhRMzn;>nz!C^ݏpjô`o8^NcQ24B}x潣-֛<:?>>-*e8,k _;@K v"|6:{Ӿ,[%=#g"OhzծKY* 7n{5Y_q1^O¸EF%Ty}FEGDIfc3MT-KdmM$&=a)lf;'a^f̣[Y(?2+|R-iL&)R-_n>^44# )m5/*1Hz#il"7˭m]ykYXԀƝr]X K&uyA/$le mMЪc.CNINCXc|<)JRs0b -#N4%id|}V(gr6"UIHr\NBĻʓ!/‰.bt#1{VS @k9=˄a-WB|X٤w+ssދzw}D+\7ΌHPRf9HJs"ߦi 6*%MG]œ -/؄s^R]del Ӑd8LrlQ8̍hWJ%yOhm`1;a=yYʇHL%% PrOptn{?03bR kV$Οu1,9xoVH碡ޥa.%{ڒha#? W+h兩Ś*4f+lMej۴zUDZlyfQwe?\+SP/#Go}rc6Q.,9˖T7Ņζr%o2:@ݙXH.}!"] C.IDv#Gt˙-H5e4BeoU,+5w^v0ވ h,`@{SGE4&Pm WB̓'e׌i Mͧ&w'L@=@2\ PHFi  $:dT@S<"# C9*ʚܖ"<^|`3I}ޤ`S%߶% 嫸.'5 (eī{D7e7^ :'E|K,V w#TӛAn&O%24@tYj9L8IF1 ::UjYN[Ć-srF=X}#Z}嶳x^%6u>6=(l؄;-ėI?\ctt&k\wPD3鵚% =sɝ莥MoqGMNUvTc>yVID5ۻ w"nzsxMXRG(=w1 ۬AWdP6c@ jw[,jz&{rhc=X9>pf^˪M*XE(n>ύ. m;J,4c&kvS^iJJ1#EVF F5ќPx! h3Cauâ6QB֪=^g%@O"4jh[\w)íb e^m͖6v KIlj6 'xU<_?5Z v|^1dj7$. kf.ٹm|q!j!ޟ+  vkM}sN6Ӻ'31ú20x0aဇ=s˂^솧\fpH] --OH`^:)}2Tλ¨sKoӤkvTAnW:r{*<u|:*m]1z t-B ?>f3 ۂm {' Ρ;W& a0jGRV^*ġxOtU9\ ]@xA6h sP7SA7qX 2|X09E/Yc[Yn输2#٣sDs6'Ή*U^Y;qP9}O6/gJVyg}=P eti^Ԁs̆c+4AZa_Y_J!ZG*'ae]ڬGAS}QwIG hRrI^%gJOvdpIR;~dk;Cw=-'hfb'zvڎ7Pm-RrϱA'ނ~(D )3jݍ`,\IN5r:0 st#Hd ~O6A&K$R!/6K6g_?()wİeyҙW ~-#{ Zi%']J]bW3> 3Ի`)zbfUʿZ7G/I,K =YHhfv9K ߾G9ْXihQe[-EQe} s?3W|!׎rA>{t2'VE9X`UF~w<|[]nu1ܟkyWϲ &5S.tPv4(Ax}#cVc~53-&w6ms{JL3b֮VT ʩ|z5c&[{6n!XFu͎40"`3y}ӉMcc*:~*&oR V@<"~5N˳8Cvoހ2'Wy$I M2tbAV:^mG<酯C^}{#l+1UUVdR;-X\M~IJ7|_`Z$`M_k(ȓh@F/ ڧVI0)fઇsi|ۏFI/`u4tA^*Tٙb0#_3R@ 2:i2oؑ׀gτV@$oPvL;ixKw K" hraK3C >.C2e^i'Z[!#q֝ vt_,FIOi_1GiD_Wʙò`dE’{{Ss6 | Fс~aɂ4{ɛ>oΎ^"A`FV\5beOLnoX S zJh\S9֌Ab5fCr)L 2X#3+ƺC4&X5Y9IU RmW'cR s6UήI/5svqg1\,XDǬd#&(# x<Ԗܕ]S?ݨWk]}3. ժ3[DAk fT:{Nٵ6(^.!DO*{ns9~6`y_iI瑐ܣ6~z>/$ȁʸ|{M3R`Z/w`uK4t14bHjfI\0v9C]PwŎ$NU|xx4kAp;4DԾRH"<RJ*K@*EQ%[gV YԅLT﷭ŝXF,4(&5Qa-P:+|7U)*֭XӬW2MQI$?f#Cy>K5*bPK^XiU)Y|R?N 5}~X*@"V>X5HZˍK_'I!c09GX oTeqY!i ÊJ3FOy8Ljp!xflj2ٿhYS8]i,H9'g6oww5%-^չ&VvހRTՈ\!ۚ.D {-`+, ͱ5I$cB6s0zw=HN+U|JjG]ΈhO*?jfk>! Hc2Xkډ( @3B.uҜgQQc Y;LPG(2j"xP_;.X7wF5BpT1F6POϚϼ||3|xzci#2ӼitA򲺘'0"ڋi1FAvpsoq Vp%OWPF]zWa`hk(8)o?d⸂ p[0){ X YiRIQAsO=Ok ITRYfyjR gihJP.)K ")oY5t-*Y`Sli7DzX컛f *f_Vn@r_qPvۓS* T1VjIjlGnC3etr:c t*'^]<;.5 N ˦U^B$cx:?ucݠ<2N{74Z(_~Xoi@'X~u]y'TldEd!Ƒ:y㠬D=+a5707͗5P 4R to{H'r*p׷݊KKFlLj}qq!O_`ystP el0HD9xFzƈ5Z*} x]wF“La3Qv  F2S=28# +MZ,A;v[mAL4'.WΪoryAunԞlٸ;liʅIo11k!ßqZu6B7f߅@:!D&nKH'jKK)]S"!6ZRYf0dbT# kmdIq*l7k"lESyM!sw2" D:">_}h<æ}8 T%MTV0gRK7rUϿ+W-+ڄހ?v^9T9W1LHtdMwܩ=$VV}EۨU{}ҸNLJݾ"ЩIp+IP a?}#<8k8o(ɩ*fPT a[JAtSX(*ixG5KQՙ3EWڟ+K0 5`s o8Űpz]m\Ht`S8ٜ04NDF7V{-7SFU|\&bu_?qzSuθ{^?#C .?󻼗C2A}rq#k#5͛)4>Z޹Ӎc8j⚰T-6Zɭ ?AԿӐ <߶YH$zWHMa/FS+u 4^ZY ` JH3b$p.3+KݵEGl %kRJ~ eM{[MM汽IU+0@S^8NJi?@lMebWrwyHZ)E뀸fރsĹ [}dM !?:5xaInVp!P2UG7 S=1d˃ݸ^1?,Y.7z`ڿzv*ҊRlfŤ4%<<܁qrH.]~F9ʶml$yغ !kV)"ݐc`&o@x !\U*ɏ-[b"pyn|0MziA&@raK6/ooX!сMm%\JQ(y&RPU`vpݺ!hKEq Թ(e ,  #K/؄6̔ɭ!ɀl`@dl~+tma֩dfjLڕhR|GxUur9CpԝG{/-͇fhF@CO10>sJRS3dd@oNl6ރ}[j$L+tǑaM/ӅI8:H -JybF+7B &@ 8Y?kγ$qz/s_K_9&ggWG1p"V $2\ _3l >XܕZDg*>bo(9c3;C>!#q;8*Co%7n=Z3JIb+$b \toTNN|̔A Xx)x-,%ijg(4KJ<6QYjBGapDD]CndΒXmEc%K2u쳇/4A8>\< Ƅo@B0;z%S%Lw};FuQF_wh[O96B.1)?#һԷD#-l%@Nf,.|'G-9F‰"@{?8:|C7~k$7'[ձ? f2'h)AU'yOՑw&O@T F̸~ifU2DoY1!`Ks{b3Ke+{wVxfLMDvF<<*9ߐITOz\6xτt ]dZ# ~b& ] Q‘Az&>b9Lz\€W"CpQY*q-ݑ$ ʂ<}NdU?j1$v$`i~C4[«|K=(>&bϬ>t|DL~,bZ`C{nj;Q(bmr4M2*~M.j%JbT'h5\\lV2uF.0ԙ4cUO;Dj޼XŃ8Vf~ \^\ó_ȑ&on}k%#qTI7е\SXyu%ME!XNMYX͐I yMiOYY*r^=Lboo Pͯq Ov!]ƎwyCNaP) \,3htrVznPZFO.&"| P\x|8[H>V8gI=P"ҷKF@:nG0ԫl'U b]N)}˩[_:6HDZWl')PTԛ;g9]%[|Ӄ9A0>kOON_]K.ɅkŮƔ>HOtm(7sS8U|ҙC;S*3 |6`Аp=jDt/+S3bFi녝0(@+Y-iW?Mxt*9@N~pQX1FI vkVɂcXERT&蟥a,񶘄T/(+BOcס׸B|~Mtζ,~UNW=*2-RrcJHU˶Bw_70fIZL>5Cu=1]^dRw5-<1ܹAH+p5aPy 8K5]l,@ۣ.))V`&K81*1^8YC,w;߽D]Z?$E_ٰbNVknҦu ) !mULq]rf.q]M\GL[lmL u`itMǩ^ ΗpeLgCgc6SߴO2o3Z\!#U^"[LMq!WJs!:5Akϓiچwb FU* `R5U ϽLVx2ΐwꞆckHvKΓ>gYzjwWHt *.e4ChyAW\znU*7lJ_3nTg<3-Ssz|$‹Rh9N;=s~vbY],ɮz`yi/9cj{P8-'tk$:,w ǤR?M, ބ!NLk!lll͓U(c^v9ڥuz ~taAQozkf9k[#s|9w7ISe ãOݕanΆ 1a-bQdXLy+a_sa5qɁT~j:5߰ ^nd6`#X/-[Pb39O{Oų^AX=ɡB>n`]$ ;" " pϐK1#I {Ԩ˱_F_]Sn!1*-c_FLiq5jQF3Olug u O]RK<:A3{$A]c"JH"p#$ZQW뒳v7Oe/7=U 6h1ד&`rGiOz3Nj7Y],eIޜ .GJچ(CRo95p2E~V..Ov`` b? 겒>ތ X6m:D /F_.̼H׊c,:fSwH;]_{dKQT3Jl@b\ٯ (}8ȸAiTiȜhnMoɿ˕b\J#Knq>37<\~&P!vW8N䵖ȅB}fD:n*seOjrU,8 |ӏn:G2iH^z ø}9rN䡕,[IBI)ݛk:6;zqwҝ{J:kLZ_ NJ?RgOJXֵ|,wna 'tRt#0 fvO Eb؎yF+- mbQ GkM׆H% - fڞ&T0[[ƔxJmrʤΛT5;s*R,3!BNJteIoS=-K +"?uFMqy/~;S sVX Qa]v4u]I%򾝨ꨁ-D mB)zRK阘^m-xʀљq21J[{W!^fgy kr Oal`yPRiJ o2t aeVHJwhpW=b.V| !fC6K Y4DaQr7&UN!g־*Kg/YF6?C穰WånJ"TعЊA`r {'Lo"8"߂zW?zɕ Xĕ~T=W1WJ8~ルͦ,oW/UҌdno &t $oj|SLEr̮KP_̋겶 ֵY Vviگ,p\EuHUz-qnM5kJ=ZZP0ƤԎz0egÓt- %PcXWhR5Y׳mƏ~=$W2\R}MW0ؗ]FS̓<&\(Xٍ6Av}*mJA5FM@lY;q ΂FsͫP{/6툾]w6"$˰džzY]/p*v%'X~Ns7XQuٝz \b :70*!nXc--Z>VCzQdIf%'q:+SVaBGX};H )ća@/|o0aqwJcawE>>]5ʴv YD/dVN=|qdDB6¥<Қ@Z[e7Á]5Ol7{>L uIPwji(1KN׷p0n Ӟ^J"9&. #Z%* uWY *`7Q8Tg<ǪkO=,y=RS/<<-+rc(k2=TJolWZLKΐ;7NЯJ. ۟GDQ;gz"[ؕP_1r|[_ShӮҿ)YRlc{M|,wpHU^, T{T"7\ , jwu5.s1\MbVE7:̝=n1',#HF5.%c&Ѱ ugHҶiGO\Ǣn-MnAK[[#yӄaLyIN`ĻDEf> {Wy;1R.k$ >s/u%U1~H NRaݐ"8v$| ^ʐĴk0Ye_9: n^[1u#QX'KLC?4R cmRaD/+J3t?bvu/5nS{"&A"JZ=1ТiEʕx1dߑѸגqAlYQmN{2b佰╇OIs˻3Uv(R ôsDp| !Y[>hO."f`$|/ގ{+7"|w˶`U+N-74VYهTdwKlw{B}uS Ք5H %j 8r7ǙwP>.+dP|R?Yb'8I(AFAlI!DMARu jSc|K` e8Q;6s%icc_}Pܭަ&vf!0M^YeH.t&y+᫘YUHztEfyÇ`C\<\ Cs}fK&BN_ǧ= =m>a Gg:jŹJ? ?F0Y [W\_=ʩӀ:Wke@sOGɠu=慮 AÉDxi2H0~fA!OQBxF@QACyϛ:$> -9tLhNDD'_@׬\AѨ_F e-fk&*q #?9@ xiZX@A}܁$9+ p܅@ 3o*y,0[EGC)=yd#ǀ-SϢ{y%6@q!dQs2F[u=B&\?`U@9YڢM4ڌ7IAcj5Mrgkm搲@}7th0pCP[p7q1giؽ>,M|ƬgM7ѫ3.$Ȓ^kDUijE/d 0TSk'LY͉]X E]$ဋ`{Vl=Pݯt}0m|vtYL+pB]Hlb%@LD7#1 Qݐ!MWנO̡C|'˪G=a6"枅/¢,{c<ϗ*/h5f˥iN o̍BlMzLL%>mhW tֆn`8h~Z#; -m^fAcɮC_~ZP;<a,~u,NFjvk^EYsDJ YN4`y#9oOMtEUohuYCh ۴K{;xxhKz[$ocTRލ(c7F,;z8g,XV*N]{fuzMcxqq)ȱ/fcU"xxshP($3ٺ]AmN|E A_\o_CF).ޝlJo8iRȅSzO[k M"~O7-E8 j mfCn%ӌ@Ńcur?i U/^׆~NauUnƊ~Q2"Y*4p:<'h͆h 92`/ݞӖbÃk{jf &@2UTOJ-NnhepS]j񦩇~[rHQkJ5R U=%e۽ P꯷TZBHhmT6LBhG*3_wp6]̀Ua_vCJޙ ,H;Ar`*~HmBө0 jE_$3x^=|#EUT jљgL+H}*WyCZL?,,U.V-=4O# |Vw-](D(_}L䖋qrjA:R&ymI_ȓoQK?GsשNyMbS)ZҨM) sN1M0Sʲ? uN.&ϒn7d 4f ,ɀ*k0 +{cσwNGZ:Z(b0NmR }®gz%Z\9 h]t?mXI& 0 g~x(or~n]vl!xDj/5mnXnQZ<]\4X)<6iܡS0Ȓ !a;g,.}Cn$Y5~`>hUW4X0RqI1K;ۭ |{ti&0 g3*{IUɜ<~1gM!uA][UPKw3W U%ȉ] 2ѡەy7G\$< <_lxso'_!]So Do :wd] $fw엪~J;Y0[Ī* <܋\#Ơ ~WS4NO`(hs*p[OgȖ`\$zU װ>q7w- N#S\ӛ+X)(0sw,.7-9tcB.? U:JcXnGT͚QKԗ3l2]U!Qdy׊tm̙zEzW´}!""rAsEJE2ۄi$ m.#P=6L br.ךP TdIpr)hOLQa-ݥR6젔Mɣ~פ̺龝R1i)G}E H!p-Xty/jLck_1#W>/FV+Xx9ٯ5Těh.wZ$Gٔx>ZB{4$5$ZjqsKuhHԄakķt }D`֓%vʅ> FLB1ODI0mD"-Zc'ޗ~}j#RlTP/yoћfˣnS- Ģ|{VEs +ijfbUH2%b>TR\[7. 8I-U3 ̔NIxVQ>Pb6FIkihL xMT04R OaL-F^ת(O[gZ)ՠ\ e y-v,p]-Iq hZ% e$# =?L ;H?hy1lGFC`o-{EiW{n؈g֜ e<œ3!y< М,!lH vOdI%5Mڦ5A$^lLڡ =⧨=?n^V}8TBӼX)]PJ"_YC?yF5:3*u,MZ6 p }@/4Δg2l1ƞDIdU1.GL`COk]B۟STkg]ћO ;bce'kbO#F4DIhHA4m^pVpC[TAKHΗ$mv Jw0 2:T][B ^j7|NMN'v0hL=j gL>KzU>چ!Sa!Q8N~KoJ $K}[.'3W;w|< H0LU&<5[0!R}sxk6l-eDX,7˝*c)xg>g^'{آ Qq༞(G}ٞmf:\d0&m$iѫ x$a1"۹U4ǹ-FoI5(6Ct.rM؍m(Օ}>֡<4Ӈ6Mm՘] J ?]88g{?󸻐GڋТӏ^j;|} .g~V+Dw֌Or`/цijtgkFy i{:Rj'7MbR ѿ+5!yvŒA~<vM !v$ЅoxE\9J}\! F VjCnbBEne76&ӱ|W5UsV;. "ײ=>Xx^_Uc8MSb.z襨EElf'_;_.9FdsTͩU`Bս_fg7(wNLf M-YWL+"wnvάI!B(A+deCSs nO">\8aJ>g3r:̻&!&l˘}Mȱ߁vUyr]jx-}&\JGeLj 7U[ i%Is1f$ٚ4J$BaySA?9b?vd8O}=),8e}EHI(3 UߝNK Y&iM5 1phC܉GKٯJӐ&49!b[ k%[|EJsO: WibI ݒ %xL%4ؔgT,~/ᙨRZI !@vNZ`YO*7\]R@r:q֬ -/ /pG) BF|P˻S~L^7YHR&)b{-Zދx |3iq~FP+8p#cc 3E2w@JþD(GD[՘!қsg@Fk.=p2̑\a(,#F:.AM ]}Er6J`PZg]lѻ< .?~JڗJjheN[o 7PmV'j1{;!G,̢vtxrߙgXOE6B( *: 诣 8Y8}d`9O@Bz7q1vCjXQ0:9#!z:QӋ>.W+MF>_([~|0W;L: ȟnJ4De|H>[?R sG)Yr cD#kFy&"|yskYÍ6w4_:X}32>nLD;R΃5O& f61reSp2X|1U-)>|̳mh1Sֶ׍Cj 륰{G-D"X9PD=*k7)-ydl~WUKxo^`72C"CNax6b9!2;$<F˛b2%} G n͛Wܺ1Qj=:=, <np;NܷI}}W _}?W[ͭ&M3_S A$F1]zT v*Kϒ$NS'R8}J!6eg8 w]_8"22\ClJFH|> Ĝ77w r_Te;PA!iЈJD6}?DS36Yewd)+2 _sB_7M:ݙ  XiI3 d#6I+8F/rXv3oC. %uMY)ZZO ~-;!Qiw_UT/}]yf~2]sns7VEiKC@("N/F5(z!gah;]M8>{Gf: SF0Йϫ9Y/Dž%o{Xu *LLGGj{NzCfк]lq5͋5{ID `,z&[[h+rQc~78;;HS w0GU u\Q?yπz2/fϽ$6L wh-c#$y3RY/`&Ō³;JT+\hsCEDa! Q(61u i'6HZgYxV̸Ę26ricj.5sW  ]P4>xu.N0X!YNsU(4vGrzKi :+ll( ȴώ:ÐҏZwwpt2 >1bYTA ֻY%0*tHl YR= <+}e}{S/+HuGZ^[s/Wt1$o*UŅP3bw2@-jFmZ{~T,(?=+3-7{fR_ŝu2:4Ll`i[ap" Q;wjM YAK@BzN=oxz$7j g]r\ :DaŤm:0%!9펔jvnw _ VS;0QUW6_ݯQ=`/T7+1`#Q>pC ɖujVtW?¨~q70fш։7t{U^1ά*о l:`$,c 9|MIsau_ q~_S]LV#ʱqZeȄt?dC'ĵ!N'ccbMTti'|=!pm*K[&#+dq"ڙ&!ح")1h`vJ +MxСR)nG]}׷Or`v7 p2O,`@'^tbqZBrY. 9nGk1Q!P~᮰X~Q8 h`f&-ϩs2m-h͎fWYy1~ߥ vZ9h01?zSICdUV4"S[zҁspX B5j DL/(ҰR:zYTo'1$pf(r;ROB⟂n(@|gπB7BƮd>, D4~8+C9ཛWz;mXhusU2@[h%mHnRk0}F ;'DPpGu[c~xb68M5ሙk0nq,([s ':ۭ_6-ѤGs ĦޮTȇPV,wG!ie4iHd/<Ӽ' ygل;3kw!u6%u͵ʦzaFe #4:Sd:@ZEwg&~6̕3U+uVL.)8P!tΑ άqӅעR~-mMc*`IvSrvD?_)ks&7xﱨLd[G\#kcDJ] oAOG"dMA>WV_nfW9KQ2+pl3p~*+Ftߐ,+mą6WO$26MγWD܈葜NT)Xu/eE ׳jv>ذ3 hk8"AxAI>fRJT5l-T륩4(µyy FawST@;qE$Cq 1QCNq\Jd؈8d nF樮8O ,Εg栃ޠK'8;Pdnё`tPjcwץnL Q:Ir%j0NtPN?+/8ev+e0VfO0*^v2#Vj0|#rfObe]p *.C)9j=ʎsylu1DIީ/P؀<њq}p%DFG1=g}bV2n "E7U51 TK ] v4ŝa*ZH`Y8 c10zT dF /6)WWLSS)ZU +ᬛkRO>Ԓb{fQE<=mI5í> ƨ{@MI9x6tlhBy~65lePk!a)gC-+./(oeK1}[^;ڀ;F`~1( JAh0v?:gi`EƩoS g1-LwFGN X'*kZl +|$8K*;o+O8c\NE~{ %ex~Q&G>ٗazɣrZ/`)=PyQd3<&O0dMHa x Q5a彪,v>._- .\ 5~ڴgN;̥-+ZsќIN[:r )*{!ĢaQwul (>ʾH̭HHw+}ښ3%vj ?Ckqm_N+o]n TotEհ&)WUى$fKy+uM!:TmDCeWkoj?# ۯm|PGzTגnz`%NH9)t<MXN7n"ηv8$tl@:Ҽi cP5|&>Bw`?0)ֶYז]sG1loKݲƎB]n#<z}EI }z38t%M VaI5" IƝ/Ąʡq#G}h/۞i:ʂ;p {@tlY: ї2_ݍ'DLxKoyG {{eG~ڇ}@m'l H1A#뷀i$od;Iޏ ܄/|vx,OS,m(#un$;s@*uj[`(UDd }ʢ^jA(vyWׇ_>PXi4Oɏ7':9_/2,= J?c3?}}؟l_ś`aB*x΄(2NS#J +QEQP5Cb2Aaz觲q7;?-yaPҨJX-헢4A) =l|1LDAhY ǡYx3ilKPDBH9/ifd$hR˔:s@d(zM>;0@eF鲽!a?З$s.K8{3߂{q[Yև8@Rݝ:Hӄ!iPRaA my#Q"xo] ul.G =^'D]4yTyVВ7;{޳*{&W B5w89F"7O=kHR\,Nh37N+KvsZʠ 5N>B-tVATg}!T ";'$~Sp5/U_uOz~O)/z49yޥ+VRGmW&T6=eZh8E! \:RKgM] c+5^G/ėƄF?E*LS]_̰Y{x!dl"!P1 ӯ /uzLPK^Bxyylϡ3H%!t iQx=ٹ *ntLqWCj}œ_nSC0;#!\>7fG6 | I+%PD"%w_l0t%ZKF*=oT.تs"&ӖW5P=_ cxjIʭ^=t0P]&``WGט~idI1=@m& 3qT// ?:!.wVW n?Z W<0OSTz'mtwֹhHz(0 OeVj Q,ꁰfmSUTjĚhy8eXqQ˴ɃcIR,: ga54_:{\jtd{ɦL!n<@޲b 47!'0P1Sw|uFo5|I 󆑕 jxzAn&VxVQ{SI >Չ m4o9yzYH<; K*K1L.jH\]}F_."ǜ `_"hE}2F JSVY ~6H kZI(Q3ea0tcu]A.rhi8Z'L,<ӁxS O$P]#n,sOAuQ!w Uizn_~+E> (]yc͔PpW[T[g>JlB1S`16s a@Jo`?bj,(L"x0CmeoDO'i¶!UD"2qpCI ncmkv M$|MY-vy8_*;a|NcEeYv9"7IEb= [a2gY[Ԏ3F|GT[to_łlgtӑF؎kXO"W2Rj,%-q`L3g- )6iw~MkdeٲvM7Q,y 0+g$?}(ht`)olJa0}vp l G7=/0m@F b;7 ᾨ ?ٽFcb{Kw8p[SǙ GBA@}LPYaNߌqb$jcl"WK~FE!"HI蝛 IpUiWAg> op M.a ʿt>rׯr:h1O0sYVƌAʚwRCӬAg{s{%ZbO{Bp@~+ }9OØ' ñ=cK}#"eN^|αXn,98 \lYFb-uRDl}cJR.)IJ=qQ㫳1.#j_l~_m.Z@%^g/e@)w⢤HG44 l0tm^P Vgq;kYܨBݚ g8ljfNXWȻbл2$`ӓX*IN6xeA=8N^=‡Y mi~{8ԑLZYLӻN+ xZ(m:llf$VIiAMBS=|W=8;*> VE+%j\N#3U4px|EwYW-aoL공:Fu1.&Ttk_/N&4㢫As7r&/J{0A@fjJЉFuəAELv v9WPtE peӢ2{GYV)23vpEthlBL$^?^&n ^߱ lz",I]|5Vn@iXH"cm8֍\$g4XtÒǝB4?\j!$7h\v[D6 Yn|xG8boPJ,úӊI>kX6M|iE1,ya?<9M͓ؗל~OΊK!zHGOэz冩eb;uЩ"i5N(ݒH%ygmpqÄС}9< a/Xls0z!3q^ ]ڬȚ[~V$Z?IrC;ǸnWV`#A7Yx#x68sFjgo}!6N`y>.K?ڗI?\qJ L>ڽΠ`4r"M'TOȺ k*00r!~3(Lf\BRA)S$ de2z 11G'W^tAa~tD}gg}_Xx禹/2Gi+,)-?z2ȼu'b%WBbHE I ᛼J?~ yD4[aR`:1Msh u=%z[Xs3X}zU] kPa^vl#~a=r$Vȴ7DžG72SX%۸`wV@ o;DahQ1ra=.Ïn4pO(CC,^Lgb+'C|$x%}4l74?RK'"雖+HJ+ 7&vp.9Ͻ3JdSB=+. d,ȇx۰| SȬ v kNV[& E{)&9K'|K)`J<愈}Tud? s5W)(1K~W{xZHx#MLq6p0@layph)=ϷbܲMmU~X6afոUGpץ/a:uLI0;kPoP] 7(1 _s; %n '^"̑o5=AO.>I˹7j{PςW5NybN&\<{5$[D|}ǸO"ԄX[ 6T[5v [x:r~M.e˂U_XTc ~qG(9:q(. ?Y BM~KRû$jVfYϊ;S_| |3İ.\5. 1JJ Z3{oa`+ żeL=^mQy6UV/>|~k]SY:6mZ ʒF Vk-7 (]5LxjH ~M@[sb,%3Z3e5- .FsIpX`uRԕ<ǃ@T(T0a B?A[BނK3>.ew*u3P6crcZaKgg9|^W B.˝]{EQ[(~QZ7Kny1m3]ۊQ(Ļ5H,=逼L~ANg>B=D*iܬ$ND0 .PDViU(4E9eEjqC&K3/';;X>ެ6-:>}2ܫFQ&JHŽ*,#lvt@Ighi/ ޴*WaTᬟx%x*:IkvJ|PIX\Ƙo٥6\ڂA6hjG9 kD]n¦ gq up=U =-3sNLFsԐF09RLB_4l}\Q<RU-i\uN'Ϸ'W*39.uZ ONgkuq!*]VoJ\o'}%`pwszbKOMըr0ũ#褱Q`rC?YOt \Y@팴!FaSR| /Jvj5<*=OYn.> }5*Š;YQBK9YPWmҝ`u8R^{|"y/vu-xxL mN)h,<EhpaȝGӸf̗ 3<44 B_d"kgwU0DvY{䗐dhh70Vl 8R&7zg ͅeob /nbȱ?ΥZPtk-V!xN[fƔOV ~^4tirhUo?rxqip4Oj+;ƷH͌OZ%;EPYF/~D͡ 6-22 tpsa^=|qn POPrjeXӸK=-$`{IC^iĤ˿%$'A#oW0/O+b7@낅{.C|ߗ "P!<,5wSpkJ5 Э䃷0\pW "9խ57~R}7 Cˢrf*(Nz8jjBמ0@+rR#ʂz_BbavVu,6%GO.w;l`HgqAfd>'Qf~hEy~[,ޫvO[5tZ:d/^$p#z^}M&ajeՃ3.4- )# Q!bz iv$ d1 ==>0Ύ%U?wB\Mܶ[OH߽܊- Y~`;MGEPhHZTȥ`.+"~rpĬBΫ4(k{Q[v/:5'Ɋ4dYnrZ3;v@`! [>i JZ,ǙRCGMi<,_}Όȃ+6.,=QڤXOR?(ZܬR*s 5;ѯWc4hVQNEu^%,<??;[g!|Qgo`z\푠P[1I56FX]}D|Ɯ- ?#L:|xpOy- ¦;,ȇy#H(.=IxX{ ".Q,YnPK'xIdz*_[h^\4sIQ Tf=XkhǖMڝ(ϻ6l=-#tV:Oaj΀&Kk P?>Zfe @]N!L]fj('&dx"BoCxoq 1U46Ŗ۽Mr"d=id2)ܞ;iOA_a7P8G`,!&oF`Ángo0.FJĦ +t/{G|WsE6QQWzC:j^s3nKj+_?@aת; ο\ҢCjƚ*16"z7ѹb D?{ݫΦխ FHoPaAn:ޠşc[l(MZVZ* :k%K(K!?\9鿰%8 *g6,{aX`aflL'frZ1nQt|ay=.yGP/X[{1<\_zpd/dC~Aϗxw=FehI&%fKB21g %6nG<:<0Hg̍E ,l;Qw0T;pI–46n{"D5ar3c_/ /lzk1rӣݎ8Q;ŵm]S)!wDΞw(~7ҫjpY?Ϸ*5BnX#&ANq5ضc)d{&Eau]ձ0"YFu ޛI=ҐBS}h&̮ǰٌ ].wSkH'cl.ђ26)EaA,5d9︼)~|͝Vkxlf'xXp=It2+m;*2Ae#.#X0PA c5[,;Uu>u =C>e9߲h\d! moRF?DVcS=,4:ݪS 4;RΔ QOׁG'5nr~NN٦B+O-VUyg@:[b+Zޥ梱txg.&*iKD$ok|Xx<RQ5_C9̞T}28Bts>E:ĊqAqyVmsTk?@h.G ϸMYMC^%B?DOB^@%|pA{4b0]Sc.O8~j`b'vRST%^@'IUs, Lsjj&VTi}]>g ~_[AUH|wE&^22[j;:H/&.PxVdD~}dtcW%'M9SF}z Vq GY+Ó .mLz-I+bY$Z4gTK1ΜgmT{y[%c9y=U^iĿ>Uo+w#7IÙ&/fk@Q&MmWslem(v<_L9.{ t7<)8Al&A{}|#ȗa|yR1 kp);Q=\7ʭx+r_%q'c|_ԇBnK:f(;>! AaUk%&(\ӆV,?1큭`8_r,[4B5~86)~q?rО<@isG07 B}Bж1gT{?ߤ{x:b^Rۮ w>Z6?siD w艀{۾sל8^B?$XFu"{v\ Hk\VΟ\3%[[ǼŽ-X#)ea@ǀUVQQg4}R=L <^PCEB(zwp0'P4 Ga>;3Q~߄R If@0Yʣy6G|T7rd}(As BX~-jNV6_:88 __WSZw/HU/5Qy!&w[DSXI,}Gqf |UtztKBeT !\EڿԪ=ƦCPl{2V:0'tU-*%0FցGw\_gqfbbjzߔ*gj=E6#L̷iZ|+B mam#ʤnebH# ;f1,w}"z ^fI}ܚl$,ءi>/EXD7"hE=sJ'T*;\lVUetu%3!{) P} ib%̍Ga>呭c%uhqIZw3{ze܈tx-LClҷO17U]:#m$f|z"L_z>:mLL^"@ 컆 (h tBDꌠs2?Mr-tIE{LJ~O _ꓽ:="kF TÙiTe_<*/&1H;i,Ҙg/=Ƀϒd™e@>AA}hhi,fq&te)vj9'CgKĎraK)޺᠅(Vfmdʢ9Q-δR1g*1mTxiD^BL~6dO[q7AGw .!EhI2 b&B蚧U o*ty]r*WxPY_"ǽBo ItKhmC-P;u *.)\k,;X~XVlH=p 8.&pF"$̨2*MFBxSD~P^\9TY_S 4@P@#Pͭd-4Ri;u!F9_w=BN{An#ۏmw8i^(4fph&%kW4mc6[XJH$} # MAG pXK^DKbMmUI89>rW/OBk4ݫo*p[ X;n[VKR,^M}3 LO1Xnus)$TV%D6ځ'6v=$qÒ^,FX^$=|xHd!FxܦYuHA5֓]:*S*j1oXESI0[!u<YF :m4Y79: ^3 ?ߢ'blP5NZoڏC,PtZ+v(lv2!o[3™3lG*u&|2(8^Y9hTf2g8.jl*nG k @jOCKʝ(*kL+{ щ[|膼" E(z3B+'Yp,w #W-Ӕ@Vp6WG;}i@%M޼J9#] ٪M#T x.Z  7S G^ n.Q,HR)LPy. ݓgtҔ^6,I?Qkv1|, ^|ԟj>;[e7AEn@mE'`N)|FJ &kg;XkyN/g8ZSxx䎊4׋gf<$, СsŁ|. ya}ݪ_>OXAo,o۬{Kh)qru/a#Нzw92 v6SuiQW$<̋][EG\Rd:?}lf_q{ ?B(3z5 GĶߖV4S^K>qƦS{iu۸թNP2[u 34zDuM/-!r:閗%}`!/_ﳞWVtFXR;a3qPGTP2@H#BT,V88V=,Fgоoeo8!p?8  @+Yhԙ- gۗ<'p@QU±F4c5Br J<&蛔)#>?^]< ;|:`"yg@ wc%Ex uq>5򤺨$eϴjƺrꇋnt\Śű,9@sODQ!vvJX0LFNA% ̈́֩sۂn,*LԮ\F,a"0}߮W'OFNc? %fORoԂ+G؟D$_gqJ dW^ͅ5yVb=,P*HJV뷞xFSԁWHJG[)S 8<\ HnY)c .Mz%{m2I.sc=sߵB~>XzMz.ikb*W5㯜[iXF#5M/V{1̾k+gn^sv y :(*/JlU]MyS9 (bG%yUrrD)@nAGCw=dF qU8UM F42^P&S-,蝙܀XʵT|9 5{cAUKG~g#9o265" NfO S[JRCb3XXYj^aNZ{8{8j0RInd]\nU;`5uoaj +{O܉v McڰɬvA5؜yjU|G%cn:\aUr#LX@ZsGZ/NKɒp<4w+21f̓2DX&w}^g2>hkxENa&˃OIE5Aq !!{"!}V cludd7eT}H!` U$W8Q"̺xb7;WyU;d6oW~C2C(ڭ|>6A @`#~Ƴt_T19FYq0>luIʚn%hzi '|fھfr~BHkk=s+"N%9RGTT}S'AېwN wv͸14 OlZ(8G 6gZ09:55( HާڌqF;}Hm!nrA(RuA'?NM}=mIEb9 cbWHF>|gŚ%,/RF.rIɔ"tPve]*sc~)R%f$弢TOpV_|]kDŽu3 ^s'ɖWoO\Jzp5íYW榻 WeBϨT]=Q _)w0oLi<1-2_5U"Tog1M?ۯt.JR䃀P!YsG[ǥKmb$Yn +W+BnZ6W42sDetL(õ>oCߋMKṠp3@%bdG4{EgM˴eӾLljhe9O>xz{Dlw1DAdW\@Z/wˠ}Dݟ g%s캐+q%5'j7 9W.&k/ [Ow"3~dTKTI '-C_/ʓ4n/j8m^'&"O5F5|&S6rvZ v l*_d##r܅OMi*W5z+(^;͍a4ii2 wz+<Y۬ګR8ʯ{[{*3?khy׆>&MQ \. V]}* EZJS~o ]ihh1;įcp :yĖg^%M:0-vοkW(4\Vt-jXcI{Ś;q]P|#O)¶ bʲteB9+Ɣ|)6L5*,%.W$Bm0oA؇o`,F# 9zVy+y= a(qImmí12G|+Q{s{GMG3:>`WmDK:: 2vq D3~yr{G_}\^0\0bW+;wݟ/ˏW̓FRJvŃI(vn4: vò^rۿ)*4ɶٴm9NaN\-" 1ks"% I.,H'9W $uKa<($${51 6cC]_A7F5 ?<"ڠc=Iyf~wݤbɱ~&5b~p#[׭yfË=crNH)?nΞx qvX<7^mizz. CN)UI<Y\ $F`s[Oyw4_SNJex RL*^Y%~PrS^ɵkܖнk3"\UvQERA&Jx6Y՞ςEd5Meǘ,`(~}}}P#Ўџl1Tb: ݦ?1kjyjNIOO DZ0(M@Z! vn=LVZ_I:M*eQOqں0TPr՜M}ga(ĬB,:`);6'hAL:Y GK],>K(8!!HG =0>ܰ2qJ3G;:I,l ˓_|ݻ?C{3|47GW u7 k[?4kp(P9ZUGn_;fPF |M&z`(}^8YG1BE^,^w)TFhRPRGV$=7"$]/iwv0 0(f#a +&ӭ1ꎄ=!`$e5RS_;y=fP _Tk5eԆrC+`V|[ GֺBh$W ^=AYgif0 {ҬeVݷBwrg ?J|eѷGNnV,fG:"3#}*$q^TPNic@lz,  XDLv%\K=JeF]v(=xX'[,V $I y)KyܜlW0/ y4I(g1Oy}``, yqV4xǨŴT7^uAJ81c)-;M&@RF#d}5}.zb3 ;®S].9]N˕,,>^VtT1GB}UqRv%:lܯ/&q۪)v=twf+< }U^ُK&ܜf>u3V\ɚK;fٔK,qm4`pyd1wI t_7hZjnSIa#DrO*_ΊQj8Q #8- ~a̤iX=6m e{Zki:g"j5ǂSXSKdCfHh&Cޤ, . ׊c5[>B}Tw{ώ"ֵ|Wk_oKq{֫ꈷʬNwTV!P_|̜b='wg:|$״oz"4PlNj΂`-[,BŜs 򰀡2Rvoc숸/PbAK a 3Dk̾e}˨;)*bog:kdŢX+'y>Rw%vQC$۴0mIw`-]+~eo{s8AR͏$c8bFN.}<ZQezn Z sPWE>:C V%0+֪1*ߥ-^5spZ!"_ x.K `ky/lO KNNOD5- gf@Wreˣ":=ߌ5n_fka@?4RdjwHw:2 ܯ MqIy%f<و(Wx"R"x[IMV!kYWIPj2$> CL="ѨYVɔ =be#oC4"K?ĽI$^E1؆Ϭ:Vʯqo"xbq wWoбb %`3UoYx9_O]>ZL)%F88W %_T:f7f׷z_iUfX (.V-H9[xKGǹT1 # *W]S/r{~4VXI {s+h~0yX&~>, *4{).(:Ld%VK̒&c}1=N*?EoVuբ *넞F{\? ֚JSIGI}s{A&Y:yV j |P܋u d1hbMr|P2Of{Ik?J_G $j@ۆij/2I_V$̙óS)UYL{|x⩄)HSSXނeb-+9ط /3Uۭ?*F-؅=\MIVfTh3Kc܋iB_`=C0rHT8uySQmH0MH\噯hU9Z\$d"w+w}k U7 egn}LV\}.3 9p>WNU``Iq3۶,vZ"E_4,28@ɤušjD =NS~!ѥ_M jy$ r!<K |mXQ+HbJUzuHe[ًㅏ< d$m)[#&eEKTNDj1pHJrHRd~3/{HƖi7A ~cB=7hm!5 KUYUf  Sei!F6şR %rbI#~$̾Hed9W@HQ>mWw^1ړxGh8Wàq%> Ub f+99> h o!%+zQaXo4Bq‹ߗr l*voT?̇H#x342ns3oѶ gjvj#(7sr;_m=U2y&R J2<#F"] 5Zr$Gd#,ӱСǀj]*#>o"SǖA*S]6 M#~ѠAg\kxY7A0oy3? $x 9("ƎY38BOx=G!Lx^x؀8- vMnACw~ Q s Jg*HNR+}Zjillӵn2$X\5eA-h O',~X I 8L DIS>18n.Hq,t,0QE3zqe4E-HWc*;C\ jw^Q]}9*|3RA'b,"|VӎQs%m4լBF2БOQ8bԽ:G ~ZXDBEzFN9Rw,,%|?mnNn;QSSPjR2LyޠrW7s:9˴veo].>DWafKJ,sL+KQ!,j5:d[~Y\<;(|/}>^lOSv1,əSb{ DZty€S#_{d S:92K#.B:BceߴN(ᥢ:T96HN Qy|:Ì@s>xC{06*v_ V.< FZ`rb6 _˫.n|zD.,)3Ģ\||^xqxE1PSoN=^T/SS/MjG6֘A 7PǍ'h.jj{ooئHQڊo4D@_g!:pÜ0Ou.$ZL$7-VWJIޝ$9Ey*} aa-=}``A?0CSzq}Ǿ_+Ru2&`aB18ܣ_ hjoͧlFt&#,^оy6+N?*j_'֫A{ʵQXHQMfo D0&v[X 3CVhHbP[ЉUk*j6>ܼ#F\:Mk 3:IgEƠWmlcZ5 zٔh83԰b9%,?c9r~3Z8N!N"DݭN)ވd># rqSϦ#\`O(ũ47& mC2loJCUߎ'੣ (Psރ驞2hGR7QR5Sb m#Me1elKu{N+W7"n(%>8m,5eXX;>R ix-f&54?=Ԙ4am|]fۼ!k؂nJiY'*:N dM]LhPq 74`1ٲrгå`m*N⵼ Q%W+YkAEv5Ps3t#Ц7Kcp_{rRZWig!Jʘj{õu˒l߭jKχDTذJ)9Uaz\Lv"<6&$MWLB8mh|>aT#jx˳Ėas<Ut2❙l}F_ǯC$[1< YnWM\jkJ+~'ODogȼGP"wUhY=#W 㘨/eԨh*lCV`,FK:Lϩ;!vﲚ܄AnjOImI,4[Fcs·o9SXblhBse YWtl7H$K4<>?"Ї{BhY+Cz yM|q;R0lg@J2dfmD#yXژ+rE _@J85e"x݉(bCNNЊa=id^ys~ CY8̌Cֿ2BX5U; +_ˣ#Y"b}$=gS"iP|bu:$vi'ϟOr, ޲3Wjet %i*zߡn9 R%Kb÷EDsNrzc5U(g "].hWYS C\k6Tivs2+cuj4WdPonZ!>PjR7T`Ϡ|*O&&`u͔WߨL>_q|UudG=$(+L ZpѨ+ˬˡ)cxF2=Ɠ3풳2tofׂ.6h?TIFr ̘@}E~af˯Jȑz?tE~jD_:ymf΁>dnpVyb `tMP8>_/XzjC3hfj\*oʩajk?;Tn"[iNj9gV6 2sP+~f`gS𝱖QهfZ_D bM&n &YIqϷȭdmNWT =Y/g @IsiT˧; W$, p¬ƓU4u61Kbtu-;‹q a 2Y6|-9>2xĢ!i@t܊F ׻+-?J>8BC+{PzGpp(9OUںgck/,sN7e 8K}jD4pgy{֛OBYjmIfo20^"pk tF=K.pδR)KX{$8#5Zi=Uܔ`ov} rLؼ%Rq (K˸v, ˤi1Ƥe̳ϐGtrS4|Dl4GjRt 3h[>bG;cBʖXc0ܤ%R'sb-݇*?ԓ~݄=lk5N/= ٫ \oX!%B@͝5R 4{ڮrR%jC?cx6FnSs'rBO}9D-@*dY>%2c( G>PKVA 3|--ZF& :\KGvԍE6EOh@I/3*BVlz2rf*#](u/du `H,D_=g u2O]4&8-? ӑyC+]?Zqs Rb%>3٨޵I|6׌nڄRh/ 3I5_}zu̜ !a8+#N@:; HW9ƽ6 ,&(U?j DuD1zJJTH)udKdao..ֺSu\ԭȹk_iLz( ,=ؕ.,:4;eبYH#QtF=}guH='z=/C 'ӁوIzfR{1FUv Wmp;ƽ!:=޺eDJA:H $d@IwpzaaȇbYrB--?OЭ_-3:ʑVcN=PYʴI t֦ALdLTB=NW^1*V`Vn#Mƕ{gcVId|uR:IdХf =F\F7OT 2 YhT8St_-v03Yt!V(D0~|Dq1¢e6Ќ@Gbm04>*@Λh>۠.4JM5&h*1~8|L$>}@@0CT490{jw/^c['#|7*^|VȐX8d=&4+d0)/=Eľ r=KHn[. _7q PXQ,z|Q$>)!eOrk ͹Er#g{;={1BXe Jߢ󓧨!:a~ɗ^u-,Beca9l"!HIE[T3/se|޶RJ^de2`*gW_-9icjZs <(hYvC*Re@_`c^5:i 1V@Y]|bd8GǐpVG#A|5OݾSFuخ<]>=:Tm%ʼ#=,c $ع(/8UVw'ӋU*M8pۋGUҰ7+l˔cNOz( A9n0lhc^j;U;?S<[ݳ gSd>ǴykN5/Wݥ-ˡG{򧁬e/.]B`G:>^ʷ/™o)9Eg,ukB x۫R(1wck$.";`1(@]GЋŃg$_pl1&ӵDu 3+i 21aV,6ۧA8 $%vGeIdMb} r"%!Ӯ:P 8UA_JjԿS 4cg=laj>7ٽr G}Kj[[ނ@, C #o5љoS+~-G!u`7ǔKm'OvO,.[H] TeMI}1咔](u`+-If̓i+o?\bu#-=T`4N  GJMTmptΛ`EA5&C ic˂(i·1' 9 sjkV !d:4Yг~:%U&D@>a 5hr"EyojlΨ1a\1>8a!y蒺RMüi]C60X&4nL2yawx`q$T.8, k+5I!`0ۓcxXCA_N?ԞQ|PI^wU_lw(,>S,µUs&4@Z!b¥;1\OhN(( /BNZ N;Q [-iqKlVV}S+LKD622JpR m=O;~OnF!_؎E) Kx+(OY d.Q)2+FlaoR3]ޑ#I0~Uؐx?9(*Zxlu#UH#֭OlQvƱT_1|4bUt)zP+6w2~/|D-GjYrNd:;ax]l@D\zct_.ٜ63B (ix sfZ~q,,ڠs F7z}~?!G_e|X r?CG0ϗ\[3j۰Qc8ɜŪeҺF{鳋:<[x}d_2m8T3hÁr(wZvIpOrhL;t̫SvLgl6@*iܲA^Rq8M0Oo,qM kMss Ts&#Qs)cqΠckφFdrxxJ@'JYv-j2u4S*»&iSYJAE}!IExLu6[Nl &gvc6Ern֦x9>0ߋq>=l|V8LQ¦@K@.CPocH_Qh7F'R|ÔR:}_ %BlP[{f.!pxo+??5`؏ DFHĖ]N|XNW]F)ۄ6=&o+, JT$S)n Tρ\xo#PGXk9si\' T3(ܛ!aY ߭Z4.xriқÁ!anrzsډ&1cPM9^N%B$wP4P1h6`L?־S5Wbl SFgPlEjW;h7cKV|s?EDs2Y]FgV##pǨzc \ N]8~~ώF `;(c+)2XݙqA+s_Վ|ʀp Ȓ/X#&h(3 9`+c- }I±Ɩ+sHDUDi5HV`1dیƉF>R&S>LJ T:?wi׉׻ܻL^mh@W\6żM/I0Yљ~D1H-3wHkL(Nc坱o= \{~/iÉlJ/b-esJvL^82/oY P$Cc}6anB}K BjCс5=z~^}3{5%PodTTk99 $G Hx0y4O!)Ttf6xjV[a)u<&4}Q3 [vXBv;`PVA! zc 4'%̽Bk Hs%ǁ9z &$J(ˠ C+uroKv% ',5iw=FkA֣=FhhPq,OƢF>:%$T:M#>*uc,;YZ%Ol5\jc]eoֺQaoN u=s졳MdՃ'H@hy'tW~.mÊy止 8]%Ɋ[2pM< eq5WMjtk^?5g$0vorޏ4 o8 `S:Zβ18Z9Ơ$gb ܺ8D;l}*ڇ9R7eaPqYX^㭀Yє^$I;uGoflYBemkYʹv-kl;rLARw&䮳.oW+0J:i]0>crar DikS S?EFr챠0^ȗ2I2:M}aKx}E\UY.l]WA-/J(|~*iFsJ[\D b4ґd_)}64>UuC1SJP!z,?kւ¶F&I5HG f%&t3r1 9N\@֌ CLM z'?74 < NA=P;mr !a"iI0HgCIք/ˆwdj̺ëIIa N_ A%2! n٨B QQF˼dTV-o"CwfIgO TRs⻈\$.`}hGdwIR;m(7ϓ> (5uUnWaF+Hճr\mF}Ŀ RNO(\.kĆNKW)O({'Z9gU6ҷ-7eRګњ!ŗ&l[&SM~ŷx,&iq#aub%(T Jwĵϑܶ n=UocjM6Ԓ:D䘇.C{A)&<z~F.!٦W:uxdA0T~&  >?FJ'YmJՓ TNVAB>WNSS1VAQz݁ߋ 5J5d:N]_nnc|;<آRvxQb>`/p zy2CE^(<]BϷbHA_CB7$9󯩂O 1孹A=?lϡij9H5*'/HYE[#\ ҂";-p2~>C/q+ǽwگj oR|C  q;-Iy¼ހOnc Hw\C-K6D1VX傆i h'YsCho׬ έu2Z1:zW@D[p#Jwb:߀iN VQЌ'OE'ռ㍯p[ȟVvQƲӞ?x5t'6{)dp}7f#`(UڂJdvTT|Z:@[B,! :_;rHnY/ՒrK SF-SI$ishgBd*\_O@77/WMnVuKu!@Ja jy9pQ񺞹}''dn HBHO!!y>` Q$.³A^CK6Ht*wG}*flȊۓr+۽Rf~혝WR655TyLqDW`=b&²r?vkS*W6q81. 2%_y<,E+VP:'18ЙXD]ƒS6<嚬cgOM9fa(/bѶ.#+'*1 SQ%[Y]X4i=mϦ#2Wo8corvrjMZ4l#rP By}xGĿ[wǟ>gu^{+JVݬٔ .] .ѻp;; >T(JEo!vK;?`%l gw Ce,0:W)`V -&zyG+45rG5J <:~MȘDY2羅P̿ϯӲE].0HC,-h~%!1;84()욝D(%Q)9/1$$Rks\m"7)PTL_P5k&MK]YR@ >=o)$p`\ Eg[`wB=XHJ(k-4E|j~d^u3 0gt@.\+ :fֻpEi7ԍ8iʤcdĘE.$Ҕ3K$%3y *t66Y0`; ?M@eStrC[?PiMgm AWAj^J2p z mիK7~MBVqhlgt%ZD?t T/ wo?u}c|*6:-yRuN4Wţ)ܓ 0R9ŋ&|֫ҥW̝ @$x+"kxB'O1p P2g PآmU75Ҝ=_B_ݗ@hRW?ݖw|qhHA[fZlP8K^+@T @ڭRZuR'$-Ԟ; 7TbrRdCwu_w9)Gu1zidevXߠY&̋'؈^}" 6W 38S* A[p]~$⿞/*fύtDS.TS% YTSFS uo~n;N7NHJ/<6TVmJ śzZt oleHK0Z2L1p|gc sַ]ka7SI+d> pP>NfGǵN_Pߧ6XHg4J\vLuG.˟@—XآNSH6:Cn/01p1ObW4acPiqk<3971wbF0sѤ}mo,:22N.mUW=l0shYHR)" ػߛN*t 5L!(M1ޮz nӸL,O0D;.ªYt "5N )b YU;kpe=!0HS6?b;Tdu>8_?=ѹK*.;`Zb se%%Jgr>w3mNNmO UB[ڃ0 M0\ *`!зȘ8uc<.x`l}~xkE0cqKIYɂ cSL4VȧD~\>#x`9Q4'۲gG8}2/Ȃ*A;SČu6Tgӌ!E#;3Jh!ǘ+TĦLP:zI[_&g՘/q?};yZRxpW=yRijػzHD4pf?} FXݿZutu%JaFf'L BK q¾._-5]^g "⺅&h!u"m2.SepߟCKd%eiC˕~%*ItZS7k?e8.;<ʚC ?r >oAcbڈ$jK׹0Ϟha| PNC%ݩ=5WZ}r$ `\ " >:YzPh]ы>4Ƶk_z)J)c"bYHi[]Vr `29Co$鏰r12`CUvLU dԼ7)۸ӝY(uvcDHYۣdZݰ_ݏ1sF0]}[4w`ED>)S\3ի`if41CԦXcVBLs9Sb!ɖ8Y #˲m鰽,|ݑmey{)}Ԭ0 YB#BxC QO&Lz_œf!nְ0fSnTqQFFvȨ?HiVa4MhZPGhM؉yAU.ƍ02$ @iLǣVt'9 MA-Y }7 7߷]Ǯux5 4Vk-CgNCL,V-Ew/w(猊T'K>>11KIcG_Bz<ɮ`s|w1儳e^کi{e=&,@0bn׫q.K*ϯ`.k0>ȕCgP'sp͐ E}~Kfj<^'!ub\*e >#*~1t'9~[s@A]G9w+Si/k7ۆ)c OY9vI@AmQ"U7,WC@J (e+iN:([Ɲ;ٓx!6Ҕx)T0LMFHiJY!9;;,[~=oحPt姏;T&r((b'NeB6 4RQ7NQٱOO,<ԩh]-L #y';GIzƎdSw~e%O:ϝ]C[1 qc zoWwmթ!NdNGtgsٲJkH.d+w[]Z 0]{(X0ڠ 8׀,qNHqE2?kݦqnRli_1{xGԫ:/:)*noF5Z8 88}{P,-.YJԵ|R M"ke!6OWyJD.M++^lJ %+{RzZ,M6EVnm-wuSKtI&ng,,i_Xy.PMWҭ%!6:9 Bsسj6-@7DR ^:+yk%YKJqP|R"sWiގKt$f?3orb3QQ!@P5>ǣ1:n`(A`On5E` S Z\# V%|Bw@D(hAU%M;@zdM_^Bʁ&r]yȂ%+cJy%ɠSJ~e%:h8XAC'Xf3E!:WZԗu&<:jC]nMI\<;mkSۮaZtYdpq1>~zӿa-ˆB7D3E59)'B0- J$4R0!aXȼyzm|cG6]g^0 om, 9F HDxc3R\eg/j‚|Y*iIib{Bw>]ڲ&>ŧ݈F Uߊ]|q+hd$ť=Y0?ZxUM0Yg;, B1~`88SQ05g2>H=xTčÀB}tp(‘džzRqr"gTM3)5jbf[wy'bJ*f8"5U TLHvw`DZpgfycsA7٩ k_j#!!NUQ>ѫržg^ݛ"o hƪ&po pz*`*Z.{+K-߬=p]B@\ә8MϏBt;#n,XE֩L:5ܔa(2kY//~E ;fBo+ ȇ 4WRt!, ;yoRf||Vkk0L;-^Ñz%)g}Yj>PLt18ۘYap|mzB:M*|s Tj̇=P6CwP鯎ho*̵mL~HU(t;dm:%"f"P„Sp9n)\/f4OR첨O0̇EOXg)=S%1$!U|s/i=ĽTyIpex0:b(qedo z0VPF݃o*N@Zϴ&D6n]9,Zυ -=M@Z(Ch[xgDre2'z/'n-bUғXn>"~CkoEp5) R4RL}tvtBԦS*.<8masSfT lK&E1W9e2aS ,Mo;$O|eWgrw:N{3"L-'Gow{d`Bm n |g$;HԸ ElhʭAVk I>j4+G $ćW?)_/Hir2pZ(YDm2f7RékWk8f*ÍX}jG=se\q''MCZgٴWoܗӎ6 H đxloP|2ɽ?9wQ1g|=5# uixlqt/kH缿ӲKZQ0Yg'p)\')sE /`^LfZ+v*!FA^q$MH@Pl^4ɤX "5}DM\2bg䣛?pIt16oe;2PF׉Jk*zEe&GhٖfZ? 㦕eKp Z`b˪ ߘff$4nw}F[@ ]Fү'lѓ#FYT`5yte'͏{&ԾMmޝÝ!ǟR g X7gO.$/9ۙjn~w 4X`Y/mɄ<(/Sz/QZ-m.ϮSV/,Gxh\lU ; ݶg ax^Kڿ-YT.13|inGUG~1!UFg(E17 ِUI @n ±~$js\_~X}v5+[ku/+9֕iI-PZhQ#о DڙY:Pey̍GrPo\!4haioQ.7hdE !i-lQ^$ʳa4{"["M_%LKr*bzygeua Wz|R@#3N :yТh]4%Tj%Y|"1w8[ЛO= (2!V{0A~}ᔳI /Bk?_R endstream endobj 90 0 obj 143671 endobj 91 0 obj << /Type /FontDescriptor /FontName /NimbusRomNo9L-Medi /Flags 4 /FontBBox [ -168 -341 1092 1158 ] /ItalicAngle 0 /Ascent 1158 /Descent -341 /CapHeight 1158 /StemV 80 /FontFile 89 0 R >> endobj 92 0 obj << /Length 881 /Filter /FlateDecode >> stream x]n8߃"$1` e b~0i/@#ݏJ1M#2Va8]_px苧4,U]OguY.Voax>rQn]ǏK:؏ygע\.?O5_ܿJ+N׏\5_Tv8Џ_.6e-6]].hUL{z>؏Lv c 5Vp ^A!B]Vk{FF!)dBVhŽFw -#BG8y'qx<qH x<q8> endobj 94 0 obj << /Length 95 0 R /Filter /FlateDecode /Length1 5310 /Length2 35770 /Length3 0 >> stream xxe\[6HHKݠ 9ݝ! Hw7JwJ3 z ?k{(Ll6NL,/o@6¶V&FV {g Rh5tl]l6V$JhiZAf@+[W@1fqtrp6(v뇪JLY `4 1C!ecj `e[nl5#X!!1rMl@@ ?=2?-;[YZ lddnRm5)'C+(r(`WUmLV #%s O:3_{ A6N*v@5hux2XYܜbeca}N 76 $tP#fclk1qr  H,`l`}7 .f&['7;g'o R\f!o`~@f`}@f!nb0K< 6b0K= sy@`.os{@`.C<`. E(= 0\TsQ@`.EEU!je 6#hehLt:܅ d` ]^ MIfcBrz1 s2$K6p2xaQ>%v@l`*Y9!xH< Ě<`<QA!=4Z<`N #fe!z%$ #feY9<`VZҭN #fY>@H5#$E C 6 :XژY=&6^5?kE6mE? |26NcIR & 7R` S/1Пz^68I?mq}?lq}W[1=8` ?}NKf J?oravi[UzN d|27lB_=PXv@$="!ã!ebb .Gc hh@\zrd:fG,Y!wpp G pe?=LdNc[GEWYY~dCBG5華!il>ʿ[Y9~]12t|H_݌ t.Ll]A2;x>H Ǚ9G;~ /Ȓ#0t2qgѐۙ?.O1M.VZ&wˬ#CcKAndZ|4FݍB5xpBpJ'5}d[gS`S7YqrMwgͲ!;6?7{tAH "-k6T r WJ >^U "R6~KBk\ mfvx*L:AH@V;F,炤~<%;Fby.qM`SbzZ(pPQ*͔\#zf;VգXu=%1Cygިg!mVUf6 8-K-3r0?s:9EfB܇L{\ᣏDԑ}+xwa2:l^_E׽4IrW(X{U1@b_sJ^1ǜ@H}յgV@@j QV~SSZ y :J" jF_ tq`R \Ṅa\PT d 'P=BҨ!\Gh /X6C0L5bz2&{NH !8_+#|ܯU,l(ߧVt-!Ȕ$̥.j }>g<&Gs5:L/)f,ZmW|D}a@ֆCQ$7_fw.b 8gljYWC+tTntxwqBt3vqѿk^p3tT@j5r+P+Y{eg$ #F.emO̫j?(\&rTXꯤs VȻgK݈\y}o?wIq w*9]i6>jpKy숃wm1X6i 8j)+AHFJֱHz\ @I;)]=9??ؿ^iCnW"t:)V|ٰ ݧ {[HO^  DlY{0,xE&Xv?utǫɄDJ3l> [ZbϚGx5wqenڌD@mA3"3E~%80aȠ}RrJ;Ug4gx8Tey̲oFtGg$ip3& _ÕOD]زV) 8n=Kp40bJ2, (JJ5Ye4O;Jʥy^ sB %zvk0aA:S"!EF˔qߴ'+C0>,]mH E;}z'(3LEIa 2TUi/`[RϵH@(^3ٰk?{'ScfH7>qVT߫.\t(V|8“79؉IKI*Zd[=P5GS;CP[0YK;᭗$;ڴ,Q"Dxv*[i_s1_/*#:ۯ|&2F:/OI|zz Yv2*g'`5e`Ǭ|ޓn5VX(ǨeI."g o^yeϠJ.dV1,Khcsye(~]xAEO -Bbюj\xtpOV`ryΒϟPjGߥX,k -o~kYqLjĘ?hfGYg;W{P {#5D6F^±'[.^wаI`kJ44Omdu;UW9R.5guMm1ٓE(V^==}7֑6~45&m]RzK ~AL>"Ǩ^_cYwպ Npsz|a,s~|:bquFs7T2ܑn[hTM^{hjubYPe^Cj peR~ 8n&M.{sy&!VF ØKuO.e7nmc5HdN秝oW^0ш=2 9QUŸ<\*XL+ GP_DN4-&A#bZtX">IFAHŭ"#,qu]uE]gǕ0:T3A?mℜP՝2pOԟoº7*#D"wjFNal-WîՎ{|_}#FGSyٛvn)ؓ>SpEOHjhdF#}i*`"wv lTS'A]ӪzƗ|ѹjHv)=#<<~%K f4ՌЅ AoMCoNYq> f;Mn?Q",6@Ҽ72]DJf\⣀ KӗfKAnnvQho[|g0>;BSM ˈjn@AsQc3)P#)!rd(U9<9N}!Әyj*NeiF^(XܥUl^#ɘ%*)~KĭlxҗqB~iZ%{ ;5;J-/s+Ld;ĩFLe< @ (ϩ4X :k#/sU xwpfZvSS%1>]>Rr4&c2vU=ig eTI.fɷ~?7)(@IV a-tW9y-77U6V r,D~e]YqY%E xg%_C*+FYۭB05I&TP}ߧtRx1颬# Wj$BP(B5ޑ>rI.Use`V&!Yx„f3(dfgpዳH[HvE! d 8PdZ'AzÓ: _;O_* ?2{@ ·i=\{Z OAa#:s/jcWGQ/crL{3-ܪ+\z2- _`n$dUoK*fu#y~\AX1ͻHTssFsԒ͡Lz@|~Hd _8~5fg\=E}1v5 KP;6N"PV O~Em=hDK#Sn+ W\|p؉jxptwM%`^{ղ XtD[)n\p d3=\:y\'Oӗ}7c+n9UxdJ~ NEXF"O@::==G@4)Cew"?a׻q'B[_7:Zc-0ٜLHVˆjQP)[ &Cp{v~I!O%o;Roێrٮ#cĪ}jţ W/:f-xbgSgىb HɈHUkxEPzB%%c녲ƏEгLXuNzFC#R?:w05-j#)zf|o2oxL+Xz|J=v("F&,zyz~[L|ɊVaAnd!ClC%+F>3 mbL@H&]$RsG G+( S'`oC XƯW|֖ߒ6*kPnaDQ8vLᨆbAQM&6 {\Ew9GZK73%GЉ-`|J/~Ҁd+8[f-^|x2 >17*VLD&WPȯmzǩjtS*ƍuVMg|_F¾TPut/_3%5lI Xr3YAwv(L;ʅW! {/!O604A Ș|3S;7gJ$?~q`wPCz<0*6$rdض-x0ʲΥ=N-_e^ei6A%oǩ◑$yo®;xk#_@,xͶKk!CSZ EhR-4Kl}=!_mM.χ97]wˆ 9r]toITjSl$%9]4h#4I"Z2U1>~w!ͮ9]cf`DZ'ܙW!^U" sHj|RĝX#k~%ׅLsQ,L¤Ly/KY^|4mٳo]:#p&񉶻d ʼn;T ީi|a8/ s]榍[PmG^L:55o)CG(^]!Vݑl/e̢vrc I3vE*QKagVտ/:m␽ƶ *gĿ\VHO&j$HIAYs[{ J ;6]~{:g&KSyKBn{oPu?C1gBFdVsb3vCzrk.-7É-~GQl)fs&❎yH{HqaU n)vV >?ў|a徭U’GƄ𵝲znL\K knc@86>kDMW(1P{.t94rnSp!-H]5=936>za^\*X1*pDOZV~d&K v[&Vj63!&sCFЗb'=H:в݈KYx}53('Ry*y$K Z,'&N' l| !Kxxg;tnr2+J<54#OLsocf guԢvNGcTGMå=UگD~j]^(HBWCex=YꧣTSγWzAP?Cyl1ԣ9<9>O~2)OvbseͯY,\q 7-X? }27GIJ {wD[ZȖvhY2; 0:|/T zNC8՛ၢwwefO<33uJ`|'Fu|u^ZB^sW+[!@]Dtg..$g#pʂy!>/!ژz)hK1Ԩ_x5n RQu _-&vQ;WC?iYFIgN-Բu$&q2`ը)2 :4^le*- E:7k'eN%矯ȘnNeژ*5 GㅉijQ{mx]3QN"*;.zeLV˗*P,O+.cZv] Vqz 9+2cZ$a= f%(=WgK&3ϗ>WΩ^ukH&D}eaJҦlը`*C34:"ct%jf䣐$Ҿ!rKôf!_Z&Ø gIj?u8_K&y6%nX݁w4~T5& DL6DѺ#{0VK[[&CYLq饖GQ/|YQGIpWXn\IHxDf:Ae=Wiv0Z*4ږ5TyFN&{򂋟+)kӴn$V"zru#X܌]ZI>y2ޅw}ˊҾ1SտtU"Ƈw%g/N=_\X$&~v;{s_>pOnW 8)" vҴ/ikJN$Q20`&J=&Ȋ*ǹ2w2,zțт;.kEŒi͈ Z&4G]{`3`~ 'ENA߷S!&hRF*A7κ25,9WvdQ/w6rD/&)9ԔVOQr{.ͰϺ-}2s}Ei霝PRSzbWg%N63MBa[z9uB𬉁>Wi'eKϮ}Kys[nmkÂ_ū]r쩩 T$g XΑif x3V)&,4"c8 >} ,a"(s&Jtvd/SsZ{#!Lpj^*`Мt|ުg[dT"][1!(F7h7?*vk`xzƦ| s;Y5%^%L3Dޥfmx=nfQ HY sͣrkTCgHt{<Qk)J6}n܏i͢XdsY*Vrzv-Lܿzq-I sUa2_ׄuA% 7â*S@n.&.xBwa>_fgC$^gQa9-F 50w^'Ox @HB/kΆf~^e*fSYE׹]:Bb__#ԥ~t&X XFKBhe4~N}O1 8ɰ=Y{WoR["sְ^uJO JkgZS&#1MqSP;Vj}LAFALS(]hH eFwj[h=Q 5 Kys״%a#;Շ4S/-J'?=󕤸C(3-oIדlqXq0eq=IdhkHU:JgayjG -J1q%E(O^X 2S( frSKI5 u^ƑY* 25yժgQƉM\aRo&P3LC! j)5V҈]*oy}|מh̽J@]*j P*-"E6 bA(3D2*{楟8Amٝ>l_0sQjCz0b \]dCUz*>" OK!3d"H s|WG114/G[q&3;"qt.o1OQ4М'OXU|P/'|okǾM|Q%vHZ}O"Wr^6+++ݺwSKڎ\bhSnqS yrMD )xH?>~!bg|[*KEW_p[ e`(x~s͜GXf.mo45q AD=u ژ=#!H)XZM"k32W;9:9{:L}K/''I?Z~ Fс;wi׽-ˊgTwVX[|$HPkb:Z.=)|i$FS֥؋ϬCVbpMB)/& TE R~<DSHn-$Y*\t>}<}qsb:Op$]PRxuXlոjx]%yQۉWl XԖ-"C$uKu KI)_ϼ'^MU|#~}A+B5CE=Wu?|K [.WT^2fzn$â2p<i8QbqoYwsG슋yXV uB\? HUUo+ T7~='OG`1lGe~2b/7o{%3qo";C7Uz xoNol(靦' H.7(v ~XsV1&'Mv݅T&/PFuә֗Pe~NY jQ_96#Lz2֖6A<\A^ur&]]rE(:3jҳwk!TߌfM3Nhɀg/ݑbɕG%8b1܇0_z5~|K3l5jKx^Âɘ`zp |P۰3cL gsYsá.$ %&y ^o!S 0C d0t'I0z~mAqٳGմw*$:YDyZ*eNՌs \pVqE^OPB\JF]c}tsZ^x)sVn;%]S֍F[qoTJr0Ӝ~Xp3y6|`XQ" D`'%-3kl? xr|J5XGǞ Ӹ^~4q>6ՠڅÍ`.V D>kĝp9n0= 맔vDsEľ$ [_8OQ!d=,9|wv^o+w}p2L?f}DM2dW'g:W>|xb@',DQpY}n$P}&{Fyґ>;.`u,DPxt%+g \.γGR% zGH m (jA=G555=^q5=%TY~ߏEme]\=x/E ~?6 cnδuPvn,3b= SN[ד".T EQD};բDO8f9w&V]uqT2,?cɜyis*-m|Mq섐~[  ^K4{ Yk[2mF}GN$a ]ܻv0B.xZq wVrҹDbd&گ&hf֍Ysx44 QAbџѦc}/{FX[Kgx@BaP_OTt&|gvٯIGy_+%47tqݹ1lby΅|nvo"$DBdG2%LLIʞi0H:pܾR|pq6cuJl'Q@#<>ߣrsF W1sbO "AZ~ryϓK| j\EJM7WD8]^4eoU[hk>GTB)+e3)gy-)T ~+b[h jg`q73D5[߂4`!\Hƍ H)ZtS7=YiFl=+4 cŒv+'QݻDia7,#C.=m'N\ S9/ Z%²]bъz W گ**j I`@j'}NjK!UҌU0d"W V{|l#fLRds´Iw$Ftef}=BDd)]Is)\r bKYݍן&~*M H#r}hАUD?|=i}W_"`킭j:]4J/QWqO<ِ?_p"E =w/}ճ붡5Lw`G8[8k}c\w[RԪFBb(xU(kLuMcUGuJgfPJ!xׇVz9ݥ% w=#eqok&2.Sbœ Sn-phK]BfWS\X`~eتR 1w1$`_8-ld(:m1%<qS~5M I*IB`:SNQj[Zu 评"][=V%'%l[*}dQ?v/$כ47.UdleXNXƱu/bz:%L0&ERl +[W}lp/ 7oCVnh&,4 }W|_Ok[fD:P7~k@C?z%<\TIVP Mn?matnW?Ҭ).{nݧKjwĽΉB(1 wwF}T֜ ̩ !V!:ex!gȍ/~6FY7l.,PoM9=/M:nKNIv͞K'yY$紶Cs5d3-87gNpKoFӠ ]0W MG!TqAÓ&m.;W3pGqƩ4}n&HB7;W֘Wį9ɿ'rI!Wm%pOl~-U`#Z󜼲SY)@\"\N%/6>Q]t}i5[߄7pzIz/OWj2{O.ReMӔ痑(C(CkOoś;,x~xڨ..HX+"YIDg5 1R7w ($GH\#O*j\S٠?R.\W/=UO"-I-NV%L;6,_U ;7ģv4 _b?c}>6+^_,#ϘOGAi)dVU+IzB$l[#_X=ٌ%m@ѫ>w|yB8q;-qL~~&@ Iӱ |3 -Em#Ù=U,\Lnx)uGdV|pC>/GeO\-hr=[K9jw$sۮ?1&N<kӋr"]|Gj.+WZYV&YgЩv؈iw4ap5X) Ucd5>Ưgp9zMڕtBR}3ڰǟID/* kA*!f^l47Wnֵ0leu>ng(G'>U7$8c9~g1Z9H=Tfh;IJym&I'Qܫ]u-1HM~PL_LxPnrQ=J4#:/s#cC!A'1ʿn8U1#18Ⓖ7##FtLNh2TDVh MO5eCr։zUcvR6 S"pi%JC*>qAId3 Skp6@fp&7Dj̆*>C/GH2o>ӁdLm>VmR bٟ.n-]1ɦtt 3(wAg-^MVW]wPz6SH3mZX`ufEV_ gs:fK' ;D3y*\>O=>.gr-T=)I9˜A`b9_Fu˪Tg\ꔦ8{rE`Փѵy 󣥑0'A\Fs@<-r\ͣABi~H#\;<.)Z{g,@G63tS}-x?FoI63Q d)}(‡=1h-eDcÿWNͺ92D0tREŌTU-AGzv-adT|c}h MFXi3sśL ">Kϊ ,*eK@GS=:DJͭg/llT6AE mlV:,Y׶J)Rjw²YTkgu>A*--Qi Jcz|1[˚Hf$CsU3)w^L2qT+n5jLĦz7a bȜj>;, P[Ў wpaYsxk>!x7Bs:Ѐd揃x"<H!tb.X"יR&Y/]Kg'M,ޱhC9^gqSTvN sW4!)]u ?>s 12PoQ3]UXr(0@5`5{0:[?B/w ખK5QHj-AeB#_z { 1SeId|Iʮ .>y,`rfB^Q7-ՆG$:${E^Nd)~dgAlȟ>m]օi'E (f̍3>?#oiѓ -qPE00ATx̭1fj`U~GLmd"|-W/ 6vPt=jn r~P~ȁzcLzPZ WrnZt:8~LO5Tt [IA4?r pw"?;~HVl*sN\~oRM>``|ݪ{$>MJ =}#Ilaǣu.)p2Ȑmw ^>Ra?\T똮[p!BT]ou=TueVjhr|Z`D#_H;^}m.ڹ&-~:Yuv&]֕c9 n ltI rn+c_:15`ږb,)@B1oo5ciĨ>|0g`d}dQnNO vH7s'oq]eZt7wKKطpd{F1X TZӦ{,(LV Y t<\C#%^mXfIxC T=6;²$Th`sJ/61 0}Iw4L" :%:MYXQ8&g*::'`Zn12C6y? k7V7[ \yPr-@XںIFlב&nDJ-Vol&dMqK!𸎬&@Ѹka 4IB1dwK3bxq44!ףk8ޕ/ t]hsi'/"*֋O#uI:+TxRe_Q%&AS@EKdXybi+-f | \78 EԈJ w*COF@SQ߈5m!|@opsyA$A~ z6sRN#ʘpo|&&]IŊEtkiͬZ~õPٜ3zv TIZ uQ}2EiO wDJpa4J[BmK] g{,=c}Q ߈|Qy*ļ,pECGeiF/~إUŒB)h+|vVsIx{Oi K.WR1be38JdCesamؼQ:k+ ra@GDYƢqBK^IZAϟD*SP}N\F+cM:tNe(8*kn3tXaISi-}m)yI.Ђht&;6?{_r_;.}on>P2  ba!aAjIW {wpYcr\ɛh87Ϩq^A(rge,=*I2+ò-KU #QQ塚!8[/Q$^G愠`nZ.*M93/P|NĞ`ˬatE.)4He=4s[FTR%a\E [^j-w-) \ \ }L}HN4̫ hr+Q(}?#)B/A9FV(3ڮ$I5ӡJ 񠘖>m0+PMЬ5 3%<|:ќŤ9Y O5~1ٙ*p(`L;|77 䜅4(4a4GZ&3B ZjWGB]R:B%H>1&,fҡs&/ܕdLuts2( EbcSUa #,Yew9 !e4,DxV1j!fcC=`2ԫ)>~؞^ė a, ^V=PGX{J ?n"=e`Of2#ŃMWr=BB `d͏Y7]9W՟RC⊔K G,PZcww0tU9CR8D+E5ή%h[yh kWȿݍRW{96__wתҺexlJ=:bB+;tql-R!bjիWsb䒿,!{?i: A{:-S]qBuh54QnKhV vSHOn;O9Dz|xoY6KirԒ_A"'swoT,E@\pu2H4> za[~e.<˳^$MKH.vpެ61z [8ӏ]q]*)/UǼOJ41Ygϖe o1aEeDm;dtqξg"jM[nOt!QH,*^zb9yF\.hW{<ܡz9c O%EgT)R>5~, BH3m;ʲ#W{ȴS!̣`.<>M+A:P.D9 a˰ -SrzEGzM@1 ]Iֈ`_O2F4lQV-j؁"y6HdX,M M{>Fݭv: J( "8vJ4IO*] &OƀF-va e*z,F&Pֽ;p5f@&1C{VN4@1FW_<2˟wW5 I`T0;[աd[w#.P]s'z|wNJGK!N˹NX42C v6p_ltTBEF~okww]phJ5Lݑd| A*\X;ѿghV:6'8A҆hҵH^a.YƠ?$piV`-!>t2mi+qZs/AQ@ M p}ԅL$c#+Y3+ wU||\P$tCt>ᯝ=@U5 . G% -]lMb'3pfБ#(4+0l6o*4{>_Qve4:4Vc>{h"\GHk Ű89i)@IJEf+JNPɋn\P~Dt7Lk>7|ː^3u]õ[%1*ht[[m4{]!XNDl8p|ې8Wi^kBahø4A#OEObm0;*a*ր2u϶k[>3k_?-_ -?》ف &/?VKM{z>:e Z~|Й*2^-RrHdg.B(҃"p<ؙq 8I3Gnb0n@fCXF4$6"[l3oGp_D6{+A(ճ޴{oTnf."O_jրjj0 }.Ivee54gIW`/G7wICiuP/X,9˭8 dzl:,&!_ٌQՇ^xOċ=[M`40 ׎dy=>_aĔ=8o-ݗ6ۓ8:$ 9cͥ?%ױm)ИwҞͲ)oO5dAD{b56M G4"C}Yt_4Bkc,Y972! KWJwgflلB-B-v9!d=$6 ' ĦͧAƄҝ)ܸacJiƀ54+r~I]"K]O&Tu=F=ܑ͜Poi;Qڌm{ԛ1\f@ &}w~H7ǃjwW4:<7yT4Y@UhWN':>{!bt ݖhe;ޖSogJdw:Ʈ* W]!.^%\rPOgZoR?>Lvߍ >j0I:Ek:Gw;<՝y5u/X =>PEcDg(@hdUVPevvDDHg5 ?H<_:Gų!wIݥLx0-ɭ=ɢ!`#YOiZWW۫N;ky~LGr5Uv};Z*B 4|-|sO;t&c{]`Y̶mpu`xᢅ1~I3u-dlڠŽr9 H6mRAiPUero=1 $u E{DG'[a aZB}7TݚKBe*Рs+8_М BRW[j۹k~)bS-g$Ƃ% W6\ݹ R?Fp¶1m+溛ˮ_epڏ);Ξ!cjLMF$Y|i>yƴjkagȁCчbp>7T,T&j=Zsε3')@,eY6Ͻy!X-> )w[Z?:5M Ւ^|ZP|+:@Z{"S)-/]J=Fm ˜+s}yw>1.1՚rR^I=moKYkknѣ]Sn{Ǽ B`qW]!éǿmHY(oQ$ @ "+Nseh:!B&c$=ġƸ2>{:XbYFC'mv>0(6,ds$!5= 2OACoސj&  7nj%[8~龑$lS /Lg]Yl_2|W/˹js+(,pBE.9]Q=ɓr3JK4ssL(WIf"_G*̡9b CKiܰZ*Dlv[LSӁV..NtSM=9 @wh3o$@/'ZQ+ےSgqκY$)Zm(G# 9W@Xl}iقJԄVUjgi)gB"ctbZau\b MRZsF橩LR*A yec#`J!i|2Ckk7/rҀk5!c_ ʖ&/oN-v]! '!pd`yO#gjSrju@s ^ϾJajjc8j(0nۆ:"I7{nU=4\cZ)w c{{һcc+-jeՅNk҂\BPC=a{`|(MTesđ[}mM'[;,uwY}܆sx!'cqeoy_R/V׾ giW6/l[< f׶R̢ۺ+ɫѭ>PJZ[ JBؒz9 a qM%O; T*dcs ,{yQ'{JmpLXFyMԉj$1 ڝ(KS] ERtn n TF -iϧ~zpf:ŕJ8f1alr5VSrM{*P|Q1-YzT`'=CC6]t5TZd& t!y5l9/Db(W<~ $?2`>lUpaP7`=&ԅƫYؐ=i!9^; 5(/}Rz[DIB,&rsDvsϸ\Róic $JbȻ̲Қ,h¿d(BM򤕼"d6Ϲ`h7d2mz8r2a"}Io_vw! am~'g TXEkIP]Kh74)Ȕ̀Q &ɟ,=y`o^B]XBW 0:YHnm:.n$ͮܳ_Ezfh VjGP6;jC[N+K{s99Wv}#EXX)[<\ZL:TQfA%va)9D/˃y5wLFh).U2~S4.sqUFG2ۤO[!drbfc"ql{}}?Y %ŁF<*iO*(rוh}5ۤϷͬ L%XR7v /BqB(sd띋mT>t@JbI'3% ِ= /KR@0WBքYW6^1X/eP~<A[h|hʚAVBLXLnjwHH$Ojn *#(mR)`N߂M1YEPM9QV.\Sc{0jR,m]pKܰAδ{׷L2O.?wEbėFtMEzCLaV1 vߺ\]CE, Ά+ҏpSR6Ve;0)b~D]э]{2>s=/ GGn pγ֎msOkּ<߫e9 4sx)nFD?'7^kz?SJa, p[G ⋘f[a*\x $j+/B) )!Q*yFJHؔ5id3b ;/W{8MY ,Ђ+Ai\Yʄ*ţE1.ȫ[~>𭌑3$f5G1;8ڼ|v.EB۾1]H BOZEaG׶4x5RG&(0 >:LrU+G22 _mꅅQyΈIx5<s ۓ&~cɻA\][n/.(t‡g a!ˁޠU͉jZ W.IlcX}]wիS6jA^ !PCV TCcCjA{i.nӖOU+BOR8oQ\5xLjЦܝ/J2"i(P9w;N̙'2vSy䳅hpJQN`>t,-2by8*?]y7JhbQuXcWp+wa}G:p&jES"1Taa|Zm냺9PH"k!t[H>q 7n7#N'g_T xy aN+ Z{+ielؤ6wlV< lD؃/YtɰAkݜZGb9Tc ].o%$#h"yomTSwudo*VO0حSd!1v\ނ^~:+\G0hnK,/a{Jz^hH`%rR;8^d}]w0Fu\X90lM5*fgqG5"I \|Ct`y+J<|޹?Qj) +v"9ɽě-}vL&N2g)7}|RX}RdJxʟG!B{&Y[bsYl}k$ʟüp4bLgC e+a(pi~:?-i \ ":HMxo`!ѤM=KDvI㡞ݐOp&䒇nhqWգydC#m} 5NAͼ;4gT7^/; \-&8+D(q&Yah߳JԵ|Ud "kMG'*–H8ÀطMbHH5'R„{N3/Lvq eL}9Y 7^c-}2wL6d"5qUї 4^JΆ,E&jq]j`,)^z݁хJ3ޯZ*Ԁ}14OF6G/"\S$st&\b@6J6fYc %ϰ%DcHy954Zziqܿ{eqt,u uz?]A0 jk-.! lN.ɬίZ 3 #5/|pd{$ ߏ\F貜915cPE`/"M: U*n4G5v"aL^lfJOgJU|oĂbUwKe1}?cg1ά6ǩ=-M%ޣm ~U=7xgB/ΥW(ż{:s5L,h@}`VٽSw?~o7g=}ArF#pgl%ɝBW9 w[;Ѩ8 iKrޭuАh[do_{y^45cMs3?'!A,R4K\fx<;@ƃ!?{Tv{LV>"%K#Qeб͹( 9uF'4|6)pC,J,rLY\wK{!fp9O @<~3Ǯډn>T!?Ѭw QNXL3b|,{Jx@A3.ɴrQeWL4+î%{JHIjFhtᤸN443H#Uؿ&LD1 N!ly-VkH{x 7g q: nhɊU9v'I,x wU!=BZNOjo#%ךPPui -ͤ~Sв!z8vϟ}(k$5bP+8x .H} :OPCUX& */sL];q}̣?urPuh/zh"ƂA>v{ͤ\kx3 [1EC=!୎'e,уG#N9"5 MECCRM@೜W&$@o#1Q { a&xcc"-c9pVa{:1֖u=H=F>GN%\bv,ÍΘ5T73vGAl^XAɝ⋘0w "I"q7 *ȶjb f$tN vLUh P09&Co^EN1$"2uϱj^ ymry>q]lj,[4x BYS?E2VJ3VV UCU҄*'(B7?q:_X]0ݵXڒ3PNKv ;t\?pW+ -BBn{CZ>z4o;~R*9V`蛰E U=쾿}P2!فTs;yں<ìi}:,CJ ZI$%h-;8[!~tjR$ W58.o,Wf[6SS*yZFOg#"i.nLM_ɫ; -sW0@ʼ(7h~1Hׄ$7lCh R3oBE`+u FBkagʐW0 Љ{";Ԑ诽R?ie4{9zi>"t? ,}y]Hi(:qbɲ{c~Q1;5Wx]_46 3M}$υ7Ǻȩ](@-Kl0AV5Ѻثe^iO&^?lFW a;o6drcb h#F N8/d/+0}D#q:' X4c/jb' }k}j~C&RHNtde*))L r{'TpIx#3ٴ`iM46+ 4l%@樃3}YI+nʵhl&<KZ<MΉz)۞(+Oíx~ËZ?OU! @c%-b? @i_6*Zbf#Sf^eeXW8#)almO^W H:32a [y@ZaΨh  C-j(}+*l( 4Ȉ 괂j( |vWp.fb E^b!_s ];a@Z֨uI QMw%E2҆RpmQHxct֋Y +.K!x{aX>`uAKXțB]e6R/PrX,^Arx-WqD:M^>B sې(ڜ$Df2ͫu*b4_”ln?;ν>{߼0;jKLL C,uS#R\g%S|4ƙ `ZcQ+w`-PYʈƕiOUy>> C6L@jm"Օj%?5]QSMB\kkg`C-J Rr~3;>/m7^bӤsQR>HQ };57qg7 CO¾.^L6xT`KCjwUh|:D޲A_W- |$+ohtnf" f`jaJ)[ \Eu W8cӴy{Lkˀ>+żfƌ>1%TN($XG9'gٴ|v[m.@u4zi;hD oŬ LmlyM?QNMCݬHh5n$и"K E-`Z@Rk6"QYA"6SŸYQGӋhy(cMd5*Q`fyd U#46W p^VC' 8`-r2>1~LE{֑}2s\>-C6+h⺅gD/< -#bq #++)ZRQow(hl4'ӥ4,cg}vu.-'Ա(M󙧇$:&N:m[ Bo9*cmt٘Zܜ`{?roLrIݠe>z-$&'h!ț<8}Ui64%D &B)c@/dGjE!ƎAP 幨:K. 'rM 7IXzԈ|̎ <LiKϭA|5 z~kHGXiNʐ2[gDfB.Bۈ,k-%;Wmq;Ҳ\P~}w#"O/"=VbIIJ@I[ûGׇTJ$)FxI[BѬÂ:>#^`˯fQv] 0<p<صhP-2#)4>'vdI;K[4蓮W5,e*1pM.;L74zj$+I35'~үJ8hzI``Ed (`f3_%7Q#M Q Y{+t'5olrQ4wџDD͉'E|oQ'ԃ }=KAdD.dNhfH3/wYCZ\-j}|yS^Iy瓮08*oYל$#Lyυwo>N:l~e:p2[*6iI/[ NqbNjdL: nҎ&GmFͺ]F2 ~-dCΜ"_Y>ěޡExf4SI_@L/H]'Iǹzs%T~X` +Zh݀U#Sg5B㐴a&O͞zgm0 wS؉8.J#qkxLuHÅ,l_Z .< E lfc:ـ!X宦&,LJy7hL|ZiѦQ 71IH+$T@)%~:fƒf<dŋߥwd*#^gjWcOꘖ,A|a8環mWqѝ~gE^Әo`jwǾ(cn3A=vXyf@([XHsx=' angzI|.Lw0i Ef1eaϯ1:{ђ] 75~aiLQ}f>4"'HFMEa fѽG|Ǡ k,4`!l8K\Xu\m d{^ 0C H#fy)dyMKOT%/x-v8ܨs$=ps#@Aԁ(* B^O6γSӨlV&~ ԩ 1Qk~JzrV$ pXnUhr3aJڒPBz&E&,Xup4v&cI}ŭgbkJۙoqDFLe3t>\ck)"<X7UЇv /Z!*^ hhXjx;[B܆V05UMdxm-3m`~q-1sƟyN_yƙ,rϙ\+kUtqnT2&P'Kث_x K/=o[܌$YPTt>m ͳYf]R Y5XAG³R`0&=3<;Bvn^;涩^a'4 -XVJLR(_И֔2"Uۙ+H8OO]^=@mAk(}Dz׾*ڬ#[QCڗ7>|;g^Ѣi#en  [OH(~XݜH:p =/tPJ͝0۝Hzg"%9BbY,5FT.tlfm\9k2JŞ)ZLz Ԟ]cAB6x56O X!z|ѭŔ/CS#EƲ8tBBc9 4J˺ 8NLi9d GEͼA}ΦC؎Ub)hMSD!rj d^3yJ!G41MD HLNlp1zy4TM9'h]YeVL)r))Oyv!^E lN_]v.4b9ȔYk"nI?jQ،:$gSD%hD 8DbKS hDv5f^EŜ-#i+_*)_Y;N359T8N'DR8ᰕ޵)ί["1kS@9ߙ23 g)^Z.m|oS{'.aUzem#0ti.D-mQAV[J[aTTsb_̨-b*Z @75}_&M: 7APPͦGy$")s}HmMكBD=(;B^*0lD6Sۿ6 X,LDz\|wC0ru0'>g)i&xŸ2m@SZ`ԜIthZB>fɵmk9BYk)Uarʦ0F endstream endobj 95 0 obj 38059 endobj 96 0 obj << /Type /FontDescriptor /FontName /LuxiMono-BoldOblique /Flags 69 /FontBBox [ -29 -211 754 1012 ] /ItalicAngle -30 /Ascent 1012 /Descent -211 /CapHeight 1012 /StemV 80 /FontFile 94 0 R >> endobj 97 0 obj << /Length 1126 /Filter /FlateDecode >> stream xen*G9Ói-!Ku~|L@*Wi5w뺻?/Χ[_t_oG>z|?^[gvzu42bw~!}n=mLeV}j~>ۯWłiOϛ֧ubqy+, KC0 `)xW00*DBTH YB%TFW18zy?.wn?q<561 endstream endobj 98 0 obj << /Type /Font /Subtype /Type1 /BaseFont /LuxiMono-BoldOblique /ToUnicode 97 0 R /FirstChar 0 /LastChar 255 /Widths [ 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 0 600 600 600 600 600 0 600 0 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 600 ] /FontDescriptor 96 0 R >> endobj 99 0 obj << /F1 62 0 R /F2 93 0 R /F3 88 0 R /F4 75 0 R /F5 57 0 R /F6 70 0 R /F7 98 0 R /F8 83 0 R /F9 65 0 R /F10 52 0 R /F11 78 0 R >> endobj 100 0 obj << /Font 99 0 R /ProcSet [ /PDF /Text ] >> endobj 1 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Annots [ 43 0 R 46 0 R ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 2 0 R >> endobj 4 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 5 0 R >> endobj 7 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 8 0 R >> endobj 10 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 11 0 R >> endobj 13 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 14 0 R >> endobj 16 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 17 0 R >> endobj 19 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 20 0 R >> endobj 22 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 23 0 R >> endobj 25 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 26 0 R >> endobj 28 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 29 0 R >> endobj 31 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 32 0 R >> endobj 34 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Annots [ 44 0 R 45 0 R ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 35 0 R >> endobj 37 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 38 0 R >> endobj 40 0 obj << /Type /Page /Parent 47 0 R /Resources 100 0 R /MediaBox [ 0 0 842 595 ] /Group << /S /Transparency /CS /DeviceRGB /I true >> /Contents 41 0 R >> endobj 47 0 obj << /Type /Pages /Resources 100 0 R /MediaBox [ 0 0 595 842 ] /Kids [ 1 0 R 4 0 R 7 0 R 10 0 R 13 0 R 16 0 R 19 0 R 22 0 R 25 0 R 28 0 R 31 0 R 34 0 R 37 0 R 40 0 R ] /Count 14 >> endobj 43 0 obj << /Type /Annot /Subtype /Link /Border [0 0 0] /Rect [56.7 169.5 170.2 180.9] /A << /Type /Action /S /URI /URI (http://www.sunsite.dk/) >> >> endobj 44 0 obj << /Type /Annot /Subtype /Link /Border [0 0 0] /Rect [177.2 213.4 225.9 225.8] /A << /Type /Action /S /URI /URI (mailto:user@host) >> >> endobj 45 0 obj << /Type /Annot /Subtype /Link /Border [0 0 0] /Rect [177.2 225.8 225.9 238.2] /A << /Type /Action /S /URI /URI (mailto:user@host) >> >> endobj 46 0 obj << /Type /Annot /Subtype /Link /Border [0 0 0] /Rect [95.2 124.1 219.5 135.5] /A << /Type /Action /S /URI /URI (http://www.zshwiki.org/) >> >> endobj 101 0 obj << /Type /Catalog /Pages 47 0 R >> endobj 102 0 obj << /Creator /Producer /CreationDate (D:20060212215956Z') >> endobj xref 0 103 0000000000 65535 f 0000726701 00000 n 0000000021 00000 n 0000002694 00000 n 0000726919 00000 n 0000002721 00000 n 0000007868 00000 n 0000727107 00000 n 0000007895 00000 n 0000012835 00000 n 0000727295 00000 n 0000012862 00000 n 0000018505 00000 n 0000727485 00000 n 0000018533 00000 n 0000023203 00000 n 0000727675 00000 n 0000023231 00000 n 0000029216 00000 n 0000727865 00000 n 0000029244 00000 n 0000035015 00000 n 0000728055 00000 n 0000035043 00000 n 0000040664 00000 n 0000728245 00000 n 0000040692 00000 n 0000046467 00000 n 0000728435 00000 n 0000046495 00000 n 0000050815 00000 n 0000728625 00000 n 0000050843 00000 n 0000056007 00000 n 0000728815 00000 n 0000056035 00000 n 0000061373 00000 n 0000729035 00000 n 0000061401 00000 n 0000065744 00000 n 0000729225 00000 n 0000065772 00000 n 0000069944 00000 n 0000729800 00000 n 0000730007 00000 n 0000730209 00000 n 0000730411 00000 n 0000729415 00000 n 0000069972 00000 n 0000070671 00000 n 0000070696 00000 n 0000070937 00000 n 0000071251 00000 n 0000071453 00000 n 0000109381 00000 n 0000109408 00000 n 0000109648 00000 n 0000110860 00000 n 0000112133 00000 n 0000258429 00000 n 0000258457 00000 n 0000258703 00000 n 0000259669 00000 n 0000260871 00000 n 0000260965 00000 n 0000261285 00000 n 0000261509 00000 n 0000299197 00000 n 0000299224 00000 n 0000299451 00000 n 0000300663 00000 n 0000301928 00000 n 0000339928 00000 n 0000339955 00000 n 0000340190 00000 n 0000341402 00000 n 0000342672 00000 n 0000342752 00000 n 0000343066 00000 n 0000343279 00000 n 0000386110 00000 n 0000386137 00000 n 0000386365 00000 n 0000387423 00000 n 0000388689 00000 n 0000536767 00000 n 0000536795 00000 n 0000537046 00000 n 0000538012 00000 n 0000539214 00000 n 0000683027 00000 n 0000683055 00000 n 0000683299 00000 n 0000684265 00000 n 0000685469 00000 n 0000723669 00000 n 0000723696 00000 n 0000723943 00000 n 0000725155 00000 n 0000726432 00000 n 0000726627 00000 n 0000730619 00000 n 0000730681 00000 n trailer << /Size 103 /Root 101 0 R /Info 102 0 R /ID [ ] >> startxref 730876 %%EOF zsh-lovers-0.8.3/zsh_people/0000755000175000017500000000000011103635725015671 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/strcat/0000755000175000017500000000000011103635725017171 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/strcat/zshoptions0000644000175000017500000002601511103635725021340 0ustar alessioalessio# These names are case insensitive and underscores are ignored. For # example, `allexport' is equivalent to `A__lleXP_ort'. # Initialisation for new style completion. if [[ "$ZSH_VERSION" == (3.1|4)* ]]; then autoload -U compinit compinit -C else print "Advanced completion system not found; ignoring zstyle settings." function zstyle { } fi #-------------------------------------------------- # if [[ "$ZSH_VERSION" == 4.2.<0->* ]]; then # # If you now paste a url it will be magically quoted! # # But it only works on 4.2.0 and later. # autoload -U url-quote-magic # zle -N self-insert url-quote-magic # fi #-------------------------------------------------- # This tries to find wordcode files and automatically re-compile them if # at least one of the original files is newer than the wordcode file. autoload zrecompile # This is a multiple move based on zsh pattern matching (like "mmv"). # Read ``less ${^fpath}/zmv(N)'' for more details autoload zmv # Edit small files with the command line editor. autoload -U zed # Like xargs, but instead of reading lines of arguments from standard input, # it takes them from the command line. This is possible/useful because, # especially with recursive glob operators, zsh often can construct a command # line for a shell function that is longer than can be accepted by an external # command. This is what's often referred to as the "shitty Linux exec limit" ;) # The limitation is on the number of characters or arguments. # $ =echo {1..30000} # zsh: argument list too long: /bin/echo # $ autoload -U zargs # $ zargs -- =echo {1..30000} # [ long list ;) ] autoload -U zargs # This autoloadable function checks the folders specified as arguments # for new mails. # autoload -U checkmail # Edit the command line using your usual editor. # autoload -U edit-command-line # This module should be automatically loaded if u use menu selection but # to be sure we do it here zmodload -i zsh/complist # Autoload zsh modules when they are referenced # A builtin command interface to the stat system call zmodload -a zsh/stat stat # A builtin that can clone a running shell onto another terminal. zmodload -e zsh/clone # Watch for logins watch=(notme) # allow me to cd directly into a dir in $PORTS_DIR from anywhere # $ cd shells && pwd # /usr/ports/shells if [ "${OS}" = OpenBSD ]; then cdpath=( ${PORTS_DIR} ) fi # When listing options (by `setopt', `unsetopt', `set -o' or `set +o'), # those turned on by default appear in the list prefixed with `no'. # Hence (unless KSH_OPTION_PRINT is set), `setopt' shows all options # whose settings are changed from the default. # # Report the status of background jobs immediately, rather than # waiting until just before printing a prompt. setopt notify # Allow comments even in interactive shells i. e. # $ uname # This command prints system informations # zsh: bad pattern: # # $ setopt interactivecomments # $ uname # This command prints system informations # OpenBSD setopt interactivecomments # Send *not* a HUP signal to running jobs when the shell exits. setopt nohup # Print a carriage return just before printing a prompt in the line # editor. For example: # $ echo foo # foo # $ echo -n foo # $ setopt nopromptcr # $ echo -n foo # foo$ #-------------------------------------------------- # setopt nopromptcr #-------------------------------------------------- # Perform =filename access # $ setopt EQUALS # $ echo =ls # /bin/ls # $ unsetopt EQUALS # $ echo =ls # =ls setopt equals # Beep on an ambiguous completion. More accurately, this forces the # completion widgets to return status 1 on an ambiguous completion, which # causes the shell to beep if the option BEEP is also set; this may # be modified if completion is called from a user-defined widget. setopt nolistbeep # Try to make the completion list smaller (occupying less lines) by # printing the matches in columns with different widths. setopt list_packed # Do not exit on end-of-file. Require the use of exit or logout instead. # However, ten consecutive EOFs will cause the shell to exit anyway, to # avoid the shell hanging if its tty goes away. Also, if this option is # set and the Zsh Line Editor is used, widgets implemented by shell # functions can be bound to EOF (normally Control-D) without printing # the normal warning message. This works only for normal widgets, not # for completion widgets. #setopt ignore_eof # if the braces aren't in either of the above forms, expands single # letters and ranges of letters, i. e.: # $ print 1{abw-z}2 # $ 1a2 1b2 1w2 1x2 1y2 1z2 setopt braceccl # Make the echo builtin compatible with the BSD man page echo(1) # command. # $ echo "foo\bar\baz" # foaaz # $ unsetopt bsdecho # $ echo "foo\bar\baz" # foo\bar\baz unsetopt bsdecho # If the argument to a cd command (or an implied cd with the # AUTO_CD option set) is not a directory, and does not begin with a # slash, try to expand the expression as if it were preceded by a # '~' (see section Filename Expansion). setopt cdablevars # Report the status of background and suspended jobs before exiting a shell # with job control; a second attempt to exit the shell will succeed. setopt checkjobs # Make cd push the old directory onto the directory stack. setopt autopushd # change to directory without "cd" setopt autocd # Exchanges the meanings of `+' and `-' when used with a number to # specify a directory in the stack. setopt pushdminus # If set, parameter expansion, command substitution and arithmetic # expansion are performed in prompts. setopt pushdsilent # Treat the '#', '~' and '^' characters as part of patterns # for filename generation, etc. (An initial unquoted '~' # always produces named directory expansion.) # | $ grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z) # searches for word not in compressed files setopt extendedglob # Do query the user before executing 'rm *' or 'rm path/*' # $ rm -rf * # zsh: sure you want to delete all the files in /home/dope/foo [yn]? setopt normstarsilent # If querying the user before executing `rm *' or `rm path/*', # first wait ten seconds and ignore anything typed in that time. # This avoids the problem of reflexively answering `yes' to the query # when one didn't really mean it. The wait and query can always be # avoided by expanding the `*' in ZLE (with tab). setopt no_rm_star_wait # Shut up ;) setopt nobeep # Beep when an attempt is made to access a history entry which # isn't there. setopt histbeep # When writing out the history file, older commands that duplicate newer ones # are omitted. setopt HISTSAVENODUPS # When searching for history entries in the line editor, do not display # duplicates of a line previously found, even if the duplicates are not # contiguous. setopt HISTFINDNODUPS # If the internal history needs to be trimmed to add the current command line, # setting this option will cause the oldest history event that has a duplicate # to be lost before losing a unique event from the list. # You should be sure to set the value of HISTSIZE to a larger number # than SAVEHIST in order to give you some room for the duplicated # events, otherwise this option will behave just like HIST_IGNORE_ALL_DUPS # once the history fills up with unique events. setopt hist_expire_dups_first # If a new command line being added to the history list duplicates an # older one, the older command is removed from the list (even if it is # not the previous event). setopt hist_ignore_all_dups # Do not enter command lines into the history list # if they are duplicates of the previous event. setopt hist_ignore_dups # Remove command lines from the history list when the first character on # the line is a space, or when one of the expanded aliases contains a # leading space. # Note that the command lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the line. If you want to make it vanish right away without # entering another command, type a space and press return. setopt hist_ignore_space # HIST_REDUCE_BLANKS # Remove superfluous blanks from each command line # being added to the history list. setopt hist_reduce_blanks # Whenever the user enters a line with history expansion, # don't execute the line directly; instead, perform # history expansion and reload the line into the editing buffer. setopt hist_verify # Remove function definitions from the history list. # Note that the function lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the definition. #setopt hist_no_functions # Remove the history (fc -l) command from the history list # when invoked. # Note that the command lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the line. setopt hist_no_store # If this is set, zsh sessions will append their history list to # the history file, rather than overwrite it. Thus, multiple parallel # zsh sessions will all have their history lists added to the # history file, in the order they are killed setopt appendhistory # If unset, the cursor is set to the end of the word if completion is # started. Otherwise it stays there and completion is done from both ends. setopt completeinword # When listing files that are possible completions, show the # type of each file with a trailing identifying mark. setopt list_types # Do not require a leading '.' in a filename to be matched explicitly. setopt globdots # Try to correct the spelling of all arguments in a line. setopt correctall # List jobs in the long format by default. setopt longlistjobs # Print eight bit characters literally in completion lists, etc. # This option is not necessary if your system correctly returns the # printability of eight bit characters (see man page ctype(3)). setopt printeightbit # Don't push multiple copies of the same directory onto the directory # stack setopt pushdignoredups # This option both imports new commands from the history file, and also # causes your typed commands to be appended to the history file (the # latter is like specifying INC_APPEND_HISTORY). # The history lines are also output with timestamps ala # EXTENDED_HISTORY (which makes it easier to find the spot where # we left off reading the file after it gets re-written). setopt sharehistory # Try to correct the spelling of all arguments in a line. # No .. not really .. it's make me crazy *g* # setopt correctall # Save each command's beginning timestamp (in seconds since the epoch) # and the duration (in seconds) to the history file. The format of # this prefixed data is: # '::;'. # i. e.: # : 1054961691:0;/usr/games/fortune -f setopt EXTENDEDHISTORY # Allow the short forms of for, select, if, and function constructs, i. # e.: ``for i (*.o) rm $i'' instead of ``for i in *.o; do rm $i; done'' setopt shortloops # Do *not* run all background jobs at a lower priority unsetopt bgnice # If this option is unset, output flow control via start/stop characters # (usually assigned to ^S/^Q) disabled in the shell's editor. unsetopt flow_control zsh-lovers-0.8.3/zsh_people/strcat/zshzle0000644000175000017500000000112411103635725020431 0ustar alessioalessio# Edit the command line using your usual editor. zle -N edit-command-line # Setting abbreviation like 'iab' with Vim zle -N my-expand-abbrev # Needed for my "Vim-like statusline". See ~/.zsh/zshstatusbar for # details. # zle -N redisplay # zle -N redisplay2 # zle -N screenclear # zle -N screenclearx # zle -N vi-add-eol # zle -N vi-add-next # zle -N vi-change # zle -N vi-change-eol # zle -N vi-change-whole-line # zle -N vi-insert # zle -N vi-insert-bol # zle -N vi-open-line-above # zle -N vi-open-line-below # zle -N vi-substitute # zle -N vi-replace # zle -N vi-cmd-mode zsh-lovers-0.8.3/zsh_people/strcat/zshdevel0000644000175000017500000000551611103635725020747 0ustar alessioalessio# *Heavy* under construction! Use it with cautions! # # 030515 get latest source of slrn via CVS # http://sourceforge.net/cvs/?group_id=7768 function mkslrn() { cd /backups/Source/slrn && \ cvs -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/ login ; \ cvs -z3 update ; \ cd /backups/Source/slrn/ && autopoint -f && aclocal-1.8 && autoconf && \ autoheader && automake-1.8 --foreign --add-missing && autoconf && \ patch -p1 < ../patches/slrn-0.9.8.0-useragent-patch ; \ ./configure --enable-setgid-code --enable-spool --enable-inews \ --enable-force-inews --with-slrnpull --with-ssl=/usr/bin/openssl \ --enable-largefile --enable-mime --prefix=/home/dope/dev-bin && \ =make && mmake && =make install clean } # 030613 get latest source of mutt via CVS # notice: CVS-password for mutt-server = "anonymous" # http://www.cs.hmc.edu/~me/mutt/ function mkmutt() { cd /backups/Source/mutt && \ cvs -d :pserver:anonymous@cvs.mutt.org:/home/roessler/cvs login ; \ cvs -z3 update ;\ ./prepare && patch -p1 < ../patches/patch-1.5.6.rr.compressed ; \ patch -p1 < ../patches/patch-1.5.6.vvv.initials ;\ patch -p1 < ../patches/patch-1.5.6.vvv.nntp ;\ patch -p1 < ../patches/patch-1.5.6.vvv.quote ;\ patch -p1 < ../patches/patch-1.5.6.vvv.slang ;\ ./configure --enable-compressed --enable-buffy-size --enable-iconv \ --enable-imap --enable-nntp --enable-pgp --enable-pop --enable-smime \ --with-ssl=/usr/sbin/openssl --with-regex --enable-nls --with-exec-shell=/bin/sh \ --with-nss --prefix=/home/dope/dev-bin && \ =make && mmake && =make install clean } # 030614 get latest source of vim via CVS # http://vim.sourceforge.net/cvsdocs/ function mkvim() { cd /backups/Source/vim && \ cvs -z3 -d:pserver:anonymous@cvs.sf.net:/cvsroot/vim checkout vim ;\ ./configure --without-x --with-compiledby='Christan Schneider ' \ --with-features=huge --prefix=/home/dope/dev-bin && =make && mmake && =make install clean } # 030830 get latest source of dietlibc alias getdietlibc="cd /backups/Source/dietlibc/ && (rmdir dietlibc-cvs-`date +%y%m%d` | mkdir dietlibc-cvs-`date +%y%m%d`) && \ cd dietlibc-cvs-`date +%y%m%d` && \ cvs -d :pserver:cvs@cvs.fefe.de:/cvs -z9 co dietlibc" alias zsh-confmake="./configure --enable-pcre --enable-cap --enable-maildir-support \ --enable-max-jobtable-size=256 --enable-function-subdirs \ --with-curses-terminfo --enable-dynamic --enable-locale && \ make && mmake ; sudo make install clean" # OpenBSD Specific Functions if [ "${OS}" = openbsd ]; then function mkernel() { config $1; cd ../compile/$1; make dep && make; } function src-compile() { cd /usr/src rm -rf /usr/obj make obj && make build && mergemaster } fi zsh-lovers-0.8.3/zsh_people/strcat/zshstyle0000644000175000017500000001043711103635725021006 0ustar alessioalessio# 'zstyle' (Defines the given style for the pattern) # Normally, the completion code will not produce the directory names # '.' and '..' as possible completions. If this style is set to # 'true', it will add both '.' and '..' as possible completions; if it # is set to '..', only '..' will be added. # zstyle ':completion:*' special-dirs .. # Fnord zstyle -e ':completion:*' special-dirs '[[ $PREFIX = (../)#(|.|..) ]] && reply=(..)' # add colors to completions # general completion zstyle ':completion:*:descriptions' format $'%{\e[0;33m%}%d:%{\e[0m%}' zstyle ':completion:*' select-prompt %SScrolling active: current selection at %P Lines: %m zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}' zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # hosts (background = red, foreground = black) zstyle ':completion:*:*:*:*:hosts' list-colors '=*=30;41' # usernames (background = white, foreground = blue) zstyle ':completion:*:*:*:*:users' list-colors '=*=34;47' # If the zsh/complist module is loaded, this style can be used to set # color specifications. This mechanism replaces the use of the # ZLS_COLORS and ZLS_COLOURS parameters. # PIDs (bold red) zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always # I'm bonelazy ;) Complete the hosts and - last but not least - the remote # directories. Try it: # $ scp file username@:/ zstyle ':completion:*:(ssh|scp|ftp):*' hosts $hosts zstyle ':completion:*:(ssh|scp|ftp):*' users $users # Not realy needed. # $ cd # Komplettiere local directory # # zstyle ':completion:*' format 'Komplettiere %d' # Don't complete backup files as executables zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # determine in which order the names (files) should be # listed and completed when using menu completion. # `size' to sort them by the size of the file # `links' to sort them by the number of links to the file # `modification' or `time' or `date' to sort them by the last modification time # `access' to sort them by the last access time # `inode' or `change' to sort them by the last inode change time # `reverse' to sort in decreasing order # If the style is set to any other value, or is unset, files will be # sorted alphabetically by name. zstyle ':completion:*' file-sort name # how many completions switch on menu selection # use 'long' to start menu compl. if list is bigger than screen # or some number to start menu compl. if list has that number # of completions (or more). zstyle ':completion:*' menu select=long # If there are more than 5 options, allow selecting from a menu with # arrows (case insensitive completion!). zstyle ':completion:*-case' menu select=5 # don't complete backup files as executables zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # filename suffixes to ignore during completion (except after rm # command) zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.(o|c~|old|pro|zwc)' '*~' # Messages/warnings format zstyle ':completion:*:messages' format $'%{\e[0;31m%}%d%{\e[0m%}' zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for: %d%{\e[0m%}' zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}' zstyle ':completion:*' group-name '' # completions for some progs. not in default completion system zstyle ':completion:*:*:mpg123:*' file-patterns '*.(mp3|MP3):mp3\ files *(-/):directories' zstyle ':completion:*:*:ogg123:*' file-patterns '*.(ogg|OGG):ogg\ files *(-/):directories' # Prevent CVS files/directories from being completed zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' # Ignore completion functions for commands you don't have: zstyle ':completion:*:functions' ignored-patterns '_*' # allow one error for every three characters typed in approximate # completer zstyle -e ':completion:*:approximate:*' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )' # offer indexes before parameters in subscripts zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # insert all expansions for expand completer zstyle ':completion:*:expand:*' tag-order all-expansions zsh-lovers-0.8.3/zsh_people/strcat/zshstatusbar0000644000175000017500000000507111103635725021654 0ustar alessioalessio# Posted by Thomas Khler on the Zsh-Mailinglist (since ~1999) # # vi mode extensions redisplay() { builtin zle .redisplay ( true ; show_mode "INSERT") &! } redisplay2() { builtin zle .redisplay (true ; show_mode "COMMAND") &! } screenclear () { echo -n "\033[2J\033[400H" builtin zle .redisplay (true ; show_mode "INSERT") &! } screenclearx () { repeat 2 print local MYLINE="$LBUFFER$RBUFFER" highlight $MYLINE repeat 4 print builtin zle redisplay } show_mode() { local COL local x COL=$[COLUMNS-3] COL=$[COL-$#1] x=$(echo $PREBUFFER | wc -l ) # x=$[x+1] x=$[x+0] echo -n "7[$x;A" echo -n "" echo -n "--$1--" echo -n "8" } # vi-add-eol # Move to the end of the line and enter insert mode. vi-add-eol() { show_mode "INSERT" builtin zle .vi-add-eol } # vi-add-next # Enter insert mode after the current cursor position, without changing lines. vi-add-next() { show_mode "INSERT" builtin zle .vi-add-next } # vi-change # Read a movement command from the keyboard, and kill from the # cursor position to the endpoint of the movement. Then enter # insert mode. If the command is vi-change. vi-change() { show_mode "INSERT" builtin zle .vi-change } # vi-change-eol # Kill to the end of the line and enter insert mode. vi-change-eol() { show_mode "INSERT" builtin zle .vi-change-eol } # vi-change-whole-line # Kill the current line and enter insert mode. vi-change-whole-line() { show_mode "INSERT" builtin zle .vi-change-whole-line } # vi-insert # Enter insert mode. vi-insert() { show_mode "INSERT" builtin zle .vi-insert } # vi-insert-bol # Move to the first non-blank character on the line and enter insert mode. vi-insert-bol() { show_mode "INSERT" builtin zle .vi-insert-bol } # vi-open-line-above # Open a line above the cursor and enter insert mode. vi-open-line-above() { show_mode "INSERT" builtin zle .vi-open-line-above } # vi-open-line-below # Open a line below the cursor and enter insert mode. vi-open-line-below() { show_mode "INSERT" builtin zle .vi-open-line-below } # vi-substitute # Substitute the next character(s). vi-substitute() { show_mode "INSERT" builtin zle .vi-substitute } #vi-replace # Enter overwrite mode. vi-replace() { show_mode "REPLACE" builtin zle .vi-replace } # vi-cmd-mode # Enter command mode; that is, select the `vicmd' keymap. Yes, # this is bound by default in emacs mode. vi-cmd-mode() { show_mode "COMMAND" builtin zle .vi-cmd-mode } zsh-lovers-0.8.3/zsh_people/strcat/zlogout0000644000175000017500000000151411103635725020620 0ustar alessioalessio# $Id: .zlogout,v 1.1 2004/06/10 10:01:29 dope Exp dope $ # # .zlogin is sourced in login shells. It should contain commands that # should be executed only in login shells. It should be used to run a # series of external commands (fortune, msgs, etc). FORTUNE="/usr/games/fortune" FORTUNE_OPTS="-s" COWSAY="/usr/local/bin/cowsay" # Only reset and clear if it's at the physical console. if [ ! $DISPLAY ]; then if [ ! $SSH_CLIENT ]; then reset fi fi # Clear the screen so next person can't see anything from the session. clear # Only for a normal user in the console, make the cow say a fortune *g* if [ "$UID" != 0 ] && [ ! "${DISPLAY}" ]; then if [ -x ${COWSAY} ]; then if [ -x ${FORTUNE} ]; then ${FORTUNE} ${FORTUNE_OPTS} | ${COWSAY} -nW80; echo fi elif [ -x ${FORTUNE} ]; then ${FORTUNE} ${FORTUNE_OPTS}; echo fi fi zsh-lovers-0.8.3/zsh_people/strcat/zshcompctl0000644000175000017500000001004211103635725021277 0ustar alessioalessio# Tab host completion for programs compctl -k ping telnet ncftp host nslookup irssi rlogin ftp # Make completion (yeah im getting fucking lazy) compile=(install clean remove uninstall deinstall) compctl -k compile make # some (useful) completions compctl -j -P '%' fg jobs disown compctl -g '*.(gz|z|Z|t[agp]z|tarZ|tz)' + -g '*(-/)' gunzip gzcat zcat compctl -g '*.tar.Z *.tar.gz *.tgz *.zip *.ZIP *.tar.bz2 *.tar' + -g '*' show-archive simple-extract compctl -g '*.(mp3|MP3|ogg|OGG|temp|TEMP)' + -g '*(-/)' mpg123 xmms compctl -g "*.html *.htm" + -g "*(-/) .*(-/)" + -H 0 '' w3m lynx links wget opera compctl -g '*.(pdf|PDF)' + -g '*(-/)' xpdf compctl -g '*(-/)' + -g '.*(/)' cd chdir dirs pushd rmdir dircmp cl tree compctl -g '*.(jpg|JPG|jpeg|JPEG|gif|GIF|png|PNG|bmp)' + -g '*(-/)' gimp xv pornview compctl -g '*.(e|E|)(ps|PS)' + -g '*(-/)' gs ghostview nup psps pstops psmulti psnup psselect gv compctl -g '*.tex*' + -g '*(-/)' {,la,gla,ams{la,},{g,}sli}tex texi2dvi compctl -g '*.dvi' + -g '*(-/)' dvips compctl -g '/var/db/pkg/*(/:t)' pkg_delete pkg_info compctl -g '[^.]*(-/) *.(c|C|cc|c++|cxx|cpp)' + -f cc CC c++ gcc g++ compctl -g '[^.]*(-/) *(*)' + -f strip ldd gdb compctl -s '$(<~/.vim/tags)' vimhelp compctl -s '/var/log/packages/*(.:t:r)' slapt-get # 'compctl' with regex # kill takes signal names as the first argument after -, but job names after % compctl -j -P % -x 's[-] p[1]' -k signals -- kill # gzip files, but gzip -d only gzipped or compressed files compctl -x 'R[-*[dt],^*]' -g '*.(gz|z|Z|t[agp]z|tarZ|tz)(D)' + -g '*(-/D)' + -f - 's[]' -g '^*(.(tz|gz|t[agp]z|tarZ|zip|ZIP|jpg|JPG|gif|GIF|[zZ])|[~#])' + -f -- gzip # read '/etc/shells' to complete 'chsh -s' compctl -u -x 'c[-1,-s]' -s '$( 980827 # This is damn funky. I'm going to do something similar for pinfo, # hopefully. #-------------------------------------------------- compctl -f -x 'S[1][2][3][4][5][6][7][8][9]' -k '(1 2 3 4 5 6 7 8 9)' \ - 'R[[1-9nlo]|[1-9](|[a-z]),^*]' -K 'match-man' \ - 's[-M],c[-1,-M]' -g '*(-/)' \ - 's[-P],c[-1,-P]' -c \ - 's[-S],s[-1,-S]' -k '( )' \ - 's[-]' -k '(a d f h k t M P)' \ - 'p[1,-1]' -c + -K 'match-man' \ -- vman pinfo #-------------------------------------------------- # setopt SH_WORD_SPLIT function man_var () { # man_pages=( $^manpath/man*/*(N:t:r:r) ) # compctl -k man_pages man # reply=( $man_pages ) # } # compctl -K man_var vman pinfo; man_pages=() #-------------------------------------------------- zsh-lovers-0.8.3/zsh_people/strcat/zlogin0000644000175000017500000000146611103635725020425 0ustar alessioalessio# $Id: .zlogin,v 1.1 2004/06/10 09:59:46 dope Exp dope $ # # .zlogin is sourced in login shells. It should contain commands that # should be executed only in login shells. It should be used to run a # series of external commands (fortune, msgs, etc). # # Check incoming ftp files. if [[ $(uname -n) = painless ]] then INCOMING=/home/ftp/pub/incoming if [[ -d ${INCOMING} ]] then pushd ${INCOMING} newfiles=( ) [[ -a .timestamp ]] || touch .timestamp setopt nullglob for file in ^.timestamp [[ $file -nt .timestamp ]] && newfiles=( $newfiles $file ) if [[ -n $newfiles ]] then echo "New files in ${INCOMING}:" echo " "$newfiles echo "" fi touch .timestamp popd fi fi # Check for TODO-entry if [[ -e ~/TODO ]] then echo "Note: New TODO - entry!" echo cat ~/TODO echo fi zsh-lovers-0.8.3/zsh_people/strcat/zshmisc0000644000175000017500000001105211103635725020573 0ustar alessioalessio# ,---- # | [dope@painless:~]% ulimit -a # | -t: cpu time (seconds) 2000 # | -f: file size (blocks) 500000 # | -d: data seg size (kbytes) 100000 # | -s: stack size (kbytes) 8192 # | -c: core file size (blocks) 0 # | -m: resident set size (kbytes) unlimited # | -u: processes 1791 # | -n: file descriptors 1024 # | -l: locked-in-memory size (kb) 50000 # | -v: address space (kb) unlimited # | -N 10: file locks unlimited # | [dope@painless:~]% # `---- # # Note: This settings protect *not* against 'fork'-bombs like # $ (){ :|:&};: # $ perl -e 'while(1){ fork();}' # but i don't care a pap for it. Trust me. I know what I'm doing. See # zshbuiltins(1) /ulimit for details. ulimit -c 0 # prevent core files from being written at al ulimit -d 100000 # 100 MB data segment ulimit -f 500000 # 500 MB file size ulimit -l unlimited #ulimit -l 50000 # 50 MB locked memory ulimit -n 1024 # 1024 open files ulimit -s 8192 # 8 kb stack size ulimit -t 2000 # 200 sec CPU time # An array (colon separated list) containing the suffixes of files to # be ignored during filename completion. However, if completion only # generates files with suffixes in this list, then these files are # completed anyway. # Note: U can use ``ls **/*~*(${~${(j/|/)fignore}})(.)'' to list all # plain files that do not have extensions listed in `fignore' fignore=( ,v .aux .toc .lot .lof .blg .bbl .bak .BAK .sav .old .o .trace .swp \~) # Setting abbreviation like 'iab' with Vim.. YES! Zsh _IS_ evil *hr*. I # use this instead of "global aliases". # $ Igr # will be expanded to # $ groff -s -p -t -e -Tlatin1 -mandoc typeset -A myiabs myiabs=( "Im" "| more" "Ig" "| grep" "Ieg" "| egrep" "Iag" "| agrep" "Igr" "groff -s -p -t -e -Tlatin1 -mandoc" "Ip" "| $PAGER" "Ih" "| head" "It" "| tail" "Is" "| sort" "Iv" "| $EDITOR" "Iw" "| wc" "Ix" "| xargs" ) my-expand-abbrev() { local MATCH LBUFFER=${LBUFFER%%(#m)[_a-zA-Z0-9]#} LBUFFER+=${myiabs[$MATCH]:-$MATCH} zle self-insert } #-------------------------------------------------- # Now in ~/.zsh/zshbindings # bindkey " " my-expand-abbrev #-------------------------------------------------- # Set the "umask" (see "man umask"): # ie read and write for the owner only. # umask 002 # relaxed -rwxrwxr-x # umask 022 # cautious -rwxr-xr-x # umask 027 # uptight -rwxr-x--- # umask 077 # paranoid -rwx------ # umask 066 # bofh-like -rw------- umask 066 # If root set unmask to 022 to prevent new files being created group and world writable if (( EUID == 0 )); then umask 022 fi # fucking "dead.letter" *narf* if [ -e ~/dead.letter ]; then mv ~/dead.letter ~/.dead_letter.`date +%Y%m%d-%R` fi # >painless< is a "what happend if< - box (OpenBSD -current) and *.core - # files is a matter of course :> if [ "$HOSTNAME" = painless ]; then if [ -e ${HOME}/{mutt,xmms,zsh,irssi,perl,fvwm,opera}.core ]; then zmv -M '(*).core' ~/.Core-Files/'$1.core-`date +%Y%m%d-%S`' && echo "Checkout ~/.Core-Files" fi fi # 'hash' often visited directorys # Note: That's *not* variables or aliase! # ,---- # | $ hash -d M=~/.mutt # | $ M # | ~/.mutt # | $ echo $M # | # | $ pwd # | /home/dope/.mutt # | $ # `---- hash -d D=~/download/ # there are my downloads hash -d F=/usr/local/share/zsh/$ZSH_VERSION/functions # ZSH functions (OpenBSD) hash -d F=/usr/share/zsh/$ZSH_VERSION/functions/ # ZSH functions (Slackware) hash -d FD=/backups/Documentations # usefull documentations hash -d FDD=/backups/Downloads # /new/ software an own make packages/ports hash -d FF=/backups/Files # Pics, movies, .. hash -d FS=/backups/System # my local backups hash -d H=/backups/ # Backups from this host hash -d HJ=~/.jed # $JED_ROOT (${HOME}) hash -d I=~/.irssi/ # Files for Irssi hash -d J=/usr/local/jed/ # $JED_ROOT (Change it!) hash -d L=~/.slang/ # Files for Slrn hash -d M=~/.mutt/ # Files for Mutt hash -d P=~/homepage/ # My personal webpage hash -d RC=/etc/rc.d/ # executed files from init (Slackware) hash -d S=~/scripts/ # (Un)tested local hacks hash -d SO=/backups/Source # Mutt, Slrn, Vim, .. hash -d U=/usr/src/linux/ # Linux-Kernel hash -d V=~/.vim/ # Files for Vim hash -d VL=/var/log # often visited ;) hash -d Z=~/.zsh/ # "setupfiles" for ZSH hash -d _S=~/.sigs/ # My signature collection zsh-lovers-0.8.3/zsh_people/strcat/zshaliases0000644000175000017500000003660611103635725021275 0ustar alessioalessio# *I* *HATE* *OpenGL*!!!11! alias gl="gcc -L/usr/X11R6/lib -L/usr/X11/lib -lglut -lGL -lGLU -lXi -lXmu -lXt -lXext -lSM -lm -lX11" alias ogl="g++ -L/usr/X11R6/lib -lglut -lGLU -lGL -lXi -lXmu" # needed for some sources from CVS alias autofuck='aclocal && autoheader && libtoolize --copy --automake && automake --copy --add-missing && autoconf' # See ;-) if [ -x ~/bin/rand-useragent.pl ] && [ -x $(which w3m) ]; then alias w3m='w3m -o user_agent="`rand-useragent.pl`" $1' fi # Edit my sigquotes ;-) alias esig="$EDITOR ~/.sigs/own-stuff" # I like this player ;-) if [ -x $(which mp3blaster) ]; then alias mp3blaster="mp3blaster -a .xmms/xmms.m3u -f .now_playing" fi # Quick edit often used setup file alias z='$EDITOR ~/.zshrc' alias s='$EDITOR ~/.slrnrc' alias v='$EDITOR ~/.vimrc' # history mechanism alias h='history' # VIM related aliases ;o) btw. ``$SHELL:t'' is a modifiers from the Z # Shell. In other shells you can use ``${SHELL##*/}'' instead. Valid # Modifiers can be found in ``info -f zsh -n Modifiers''. alias :w='echo "Dude.. thats $SHELL:t and *not* VI(M)!"' alias :q='echo "Dude.. thats $SHELL:t and *not* VI(M)!"' alias :wq='echo "Dude.. thats $SHELL:t and *not* VI(M)!"' alias vi="${EDITOR}" alias view="${EDITOR} -R" alias ex="${EDITOR} -e" alias pltags="${VIMRUNTIME}/tools/pltags.pl" # highlight the current day in ``cal'' alias _cal='var=$(cal); echo "${var/$(date +%-d)/$(echo -e "\033[1;31m$(date +%-d)\033[0m")}"' # quick&dirty mirror alias mirror="noglob wget --mirror --no-parent --convert-links --recursive --timestamping --continue$1" # access the database of ${HOME} (Note: This is for *OpenBSD*! Not for # Linux! if [ "${OS}" = openbsd ]; then alias hupdatedb="updatedb --searchpaths="$HOME" --prunepaths="/" --fcodes=$HOME/.locatedb" alias hlocate="locate -d ${HOME}/.locatedb" else # That's for Linux (strictly speaking slocate under Slackware). # See for details. if [ "${OS}" = linux-gnu ] && [ -x $(which slocate) ]; then alias hupdatedb="updatedb -U ${HOME} --output=${HOME}/.locatedb -e /home/dope/tmp,/home/dope/MuttMail,/home/dope/.cpan" alias hlocate="slocate --database=${HOME}/.locatedb $1" else # That's for GNU updatedb alias hupdatedb="updatedb --localpaths="$HOME" --output=$HOME/.locatedb --prunefs="/"" alias hlocate="locate -d ${HOME}/.locatedb" fi fi # some stuff for gentoo (i compelled to use it sometimes *narf*) if [ -e "/etc/gentoo-release" ]; then alias emerge="sudo emerge" alias eupdatedb="sudo eupdatedb" alias etc-update="sudo /usr/sbin/etc-update" alias env-update="sudo /usr/sbin/env-update" fi # See and for details if [ -e "/etc/slackware-version" ]; then alias slapt-get="sudo slapt-get" alias swaret="sudo swaret" alias installpkg="sudo /sbin/installpkg" alias upgradepkg="sudo /sbin/upgradepkg" alias removepkg="sudo /sbin/removepkg" alias pkgtool="sudo /sbin/pkgtool" alias makepkg="sudo /sbin/makepkg" fi # settings for NetBSD if [[ "${OSTYPE}" == netbsd* ]]; then export CVSROOT=":pserver:anoncvs@anoncvs.NetBSD.org:/cvsroot" alias upsrc="cvs -d $CVSROOT update -PAd src" alias uppkgsrc="cvs -d $CVSROOT update -PAd pkgsrc" fi # setting for OpenBSD if [[ "{$OSTYPE}" == openbsd* ]]; then export CVSROOT='anoncvs@anoncvs1.usa.openbsd.org:/cvs' alias pkg_add='sudo pkg_add' alias pkg_delete='sudo pkg_delete' alias upsrc="cd /usr/src && cvs -q up -Pd" alias upports="cd /usr && cvs -q get -P ports" fi # takes snapshot from /dev/ttyN alias snapscreenshot="sudo snapscreenshot" alias mkscreeny="cd ~/shots/ ; sleep 5; snapscreenshot -c1 -x1 > snap.tga ; convert snap.tga snap.png" # grep wrapper with search highlighting () # Only for non-linux systems needed (see below) if [ ! "${OSTYPE}" = linux-gnu ] && [ -x $(which hgrep) ]; then alias grep='hgrep' else # fi # FIXME: ``${(MS)$(grep --version 2>/dev/null)#GNU}'' shows me ``GNU'' # and export the variables correctly. But why (BY ZEUS FAT ASS) # become ``GREP_{COLOR,OPTIONS}'' exported if the string ``GNU'' # unavailable? # Note: ``--color'' is a feature from GNU grep >=2.5 and i do *not* # check for the available version, but only for ``GNU''! if [ ${OS} = "linux-gnu" -n ${(MS)$(grep --version 2>/dev/null)#GNU} ]; then export GREP_COLOR='0;31' export GREP_OPTIONS='--color=auto' alias hgrep='grep $GREP_OPTIONS $*' fi fi # ``choad'' is a small perlscript to ripp audio-cds if [ -x $(which choad) ]; then alias choad="sudo choad" fi # VimTip 121: Using vim as a syntax-highlighting pager # if [ -e ~/.vimrc.more ] && [ -x $(which vim) ]; then alias vmore='vim -u ~/.vimrc.more' fi # I use ``gls'' instead of ls because the standard 'ls' from OpenBSD # doesn't not support colors :/ GNU ls is part of fileutils-4.1 and # component of the portcollection ($PORTSDIR/misc/fileutils) # [[ ${OS} = "linux" && -n ${(MS)$(ls --version 2>/dev/null)#GNU} ]] && ls_flags="--color" # (ls --help 2>/dev/null |grep -- --color=) >/dev/null && alias ls='ls -b -CF --color=auto' if [ -x $(which gls) ]; then alias ls='gls --color=always' elif [ ${OS} = "linux-gnu" -n ${(MS)$(ls --version 2>/dev/null)#GNU} ]; then export TIMESTYLE=$'--time-style="+\e[1;37m[\e[1;35m%D %H:%M\e[1;37m]\e[0m"' alias ls="ls -b -CF --color=always ${TIMESTYLE}" else alias ls='ls -F' fi # call mailfilter and start getmail after a positive return value # && alias gmail='mailfilter -r || getmail -v --rcfile ~/.getmail/getmailrc --rcfile ~/.getmail/getmail-hardening' # X11? Yes! A open port? Nope! # alias sx='startx -- -nolisten tcp 2>&1 ~/.startx-errors' # alias sx='startx -- -nolisten tcp >& $HOME/.startx-errors' alias sx='startx -- -deferglyphs 16 -dpi 100 -nolisten tcp >& $HOME/.startx-errors' # SSH to some hosts :> alias router="ssh dope@192.168.13.2" alias hellfire="ssh dope@192.168.13.3" alias dreckskind="ssh dope@192.168.13.4" alias firewall="ssh bofh@192.168.13.5" alias blitzkrieg="ssh dope@192.168.13.6" alias diehard="ssh lart@192.168.13.7" # "-" is the same as the -l option (deprecated). alias su="su -" # format a floppy (OpenBSD) alias format="fdformat /dev/rfc0a" # Quick chmod ;-) alias rw-='chmod 600' alias rwx='chmod 700' alias r--='chmod 644' alias r-x='chmod 755' # stolen from a ~/.bashrc (IIRC RedHat(?)) alias ..='cd ..' alias ...='cd ../..' alias ....="cd ../../.." # Make/Create/Convert Pics/Thumbnails alias _GIF='convert -verbose -interlace LINE' alias _thumb='convert -geometry 100x100 -interlace LINE -verbose' alias _thumb150='convert -geometry 150x150 -interlace LINE -verbose' alias _thumb200='convert -geometry 200x200 -interlace LINE -verbose' # Use colors, do not check for new groups, specific my killfile an use # spool (needed for slrnpull) alias news='slrn -C -n --kill-log /home/dope/.slang/KILL --spool' alias gnews='slrnpull -d /home/dope/nslrn/slrnpull -h news.individual.net' # start mutt/vim/zsh/jed without any setup alias null-mutt='mutt -n -f /dev/null -F /dev/null' alias null-zsh='zsh -f' alias null-vim='vim -u NONE' alias null-jed='jed -n' # *Very* often used! alias lsd='ls -ld *(/)' # only show directories alias lad='ls -ld .*(/)' # only show dot-directories alias lsa='ls -a .*(.)' # only show dot-files alias lsbig='ls -lSh *(.) | head' # display the biggest files alias lssmall='ls -Sl *(.) | tail' # display the smallest files alias lsnew='ls -rtl *(.) | tail' # display the newest files alias lsold='ls -rtl *(.) | head' # display the oldest files # check out/in RCS revisions alias lci='ci -l' alias lco='co -zLT' # convert from UPPER to lower (or back) alias UP2low='for i in *(.); mv $i ${i:l}' alias low2UP='for i in *(.); mv $i ${i:u}' # ctags are *very* useful! alias mktags='for i in **/*(/); do (cd $i; eval '\''ctags-exuberant *'\''); done; ctags-exuberant --file-scope=no -R' # Make the source to be with you!!!11! alias C='./configure' alias CH='./configure --help | $PAGER' # zmv -- see ``less ${^fpath}/zmv(N)'' for more details. alias zcp='zmv -C' alias zln='zmv -L' # r00t commands if [ -x =sudo ]; then alias ifconfig="sudo ifconfig" alias shutdown="sudo shutdown" alias tcpdump="sudo tcpdump" alias nmap="sudo nmap" fi # simple replacement for nmap (anywise .. :>) alias pscan="nc -vz $1 1-1024" # Yup. I mount my CDROM manually! if [ "${OS}" = openbsd ]; then alias _mcd='sudo mount /dev/cd0a /mnt && cd /mnt && ls' alias _ucd='cd ~ && sudo umount /mnt' else alias _mcd='sudo mount /mnt/cdrom && cd /mnt/cdrom && ls' alias _ucd='cd ~ && sudo umount /mnt/cdrom' fi # Yup. i use Gnus.. sometimes.. if [ -x /usr/bin/emacs-21.3-with-x11 ]; then alias emacs='emacs -nw -f server-start' alias gnus='emacs -f gnus' alias emacsnox='/usr/bin/emacs -nw' fi # GPG *sigh* alias get.pgpkey='gpg --keyserver pgp.mit.edu --recv-key 0x"$@"' alias mail.gpgkey='mail -s "GET keyid $@" pgp-public-keys@keys.pgp.net' alias encrypt.gpg='echo "WARNING: plaintext is not deleted!"; gpg --quiet -ear 0x47E322CE' alias sign.gpg='gpg --sign $*' # internet radio alias p5='http://64.236.34.97:5190/stream/1006' alias p4='mpg123 http://linux10.cs.uaf.edu:8000/kuac24mono' alias p3='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-petre-128' alias p2='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-p2-128' alias p1='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-p1-128' alias relax='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-alltid-klassisk-128' alias mpetre='mpg123 -b 1024 http://radio.hiof.no:8000/nrk-mpetre-128' alias c64='xmms http://radio.c64.org:8000/ &' alias classical='xmms http://64.236.34.97:5190/stream/1006 &' # Some aliases for the OpenBSD - Portcollection if [ "${OS}" = openbsd ]; then alias Svar='make show=FLAVORS' alias Spversion='make show=VERSION' alias Scomm='make show=COMMENT' alias Swth='make show=DESCRIPTION' fi # Ask stupid questions? In Boards/NGs? Yeah .. sure "Killing time.. the # end of .." --Metallica :> # I read this fuckings manuals *very* often *narf* alias H-Slrn='less /backups/Documentations/Manuals/slrn-manual.txt' alias H-Mutt='less /backups/Documentations/Manuals/mutt-manual.txt' alias H-Irssi='less /backups/Documentations/Manuals/irssi-manual.txt' alias H-Getmail='less /backups/Documentations/Manuals/getmail-manual.txt' # The Open Group Base Specifications Issue 6 (IEEE Std 1003.1, 2003 # Edition) alias H-Susv3='${BROWSER:-lynx} /backups/Documentations/susv3/index.html' # YES! Zsh _is_ evil :> alias H-Zsh='${BROWSER:-lynx} /backups/Documentations/Zsh/Doc/zsh_toc.html' alias H-ZshGuide='${BROWSER:-lynx} /backups/Documentations/Zsh/guide/zshguide.html' alias H-ZshFAQ='${BROWSER:-lynx} /backups/Documentations/Zsh/guide/faqs.orgfaqsunix-faqshellzsh.html' # The Linuxfibel (German). See for details. alias H-Linux='${BROWSER:-lynx} /backups/Documentations/Linux/linux/index.html' # Yup. I'm fucking lazy :> alias H-OpenBSD='${BROWSER:-lynx} /backups/Documentations/OpenBSD/index.html' alias H-FreeBSD='${BROWSER:-lynx} /backups/Documentations/FreeBSD/index.html' alias H-NetBSD='${BROWSER:-lynx} /backups/Documentations/NetBSD/index.html' # de.comp.os.unix.linux - FAQ alias H-Dcoul='${BROWSER:-lynx} /backups/Documentations/dcoul/html/index.html' # The editor of my choice! The one and only! J-E-H-O-V-A!!!11! alias H-Vim='${BROWSER:-lynx} /backups/Documentations/Vim/usr_toc.html' # THE SED FAQ () alias H-Sed="${BROWSER:-lynx} /backups/Documentations/Sed/sedfaq.html" # HTML .. *sigh* alias H-HTML='${BROWSER:-lynx} /backups/Documentations/Self-HTML/index.htm' # The Jargon File (version 4.4.7) alias H-Jargon='${BROWSER:-lynx} /backups/Documentations/Jargon/html/index.html' # CSS .. Fuck me gently with a chainsaw alias H-CSS='${BROWSER:-lynx} /backups/Documentations/CSS/index.html' # Fucking FHS *gnarf* alias H-FHS='${BROWSER:-lynx} /backups/Documentations/Linux/fhs-2.3.html' # Extensible Markup Language alias H-XML='${BROWSER:-lynx} /backups/Documentations/XML/index.html' # German Manpages. # - alias de-man="man -M /backups/Documentations/manpages.de '$1'" # fucking devices *narf* if [ "${OS}" = linux-gnu ]; then alias H-Devices='${PAGER:-less} /usr/src/linux/Documentation/devices.txt' fi # See http://svnbook.red-bean.com/ alias H-Svn="{BROWSER:-lynx} /backups/Documentations/svnbook-1.1/index.html" # RFC-Index. Not really needed. See # for details. # alias H-RFC='${BROWSER:-lynx} /backups/Documentations/RFCs/rfc-index.txt.gz' # Xterm specific stuff alias mxterm-default='echo -e "\033]50;fixed\007"' alias mxterm-normal=default alias mxterm-hide='echo -en "\033]50;nil2\007"' alias mxterm-tiny='echo -en "\033]50;5x7\007"' alias mxterm-small='echo -en "\033]50;6x10\007"' alias mxterm-medium='echo -en "\033]50;7x13\007"' alias mxterm-large='echo -en "\033]50;9x15\007"' alias mxterm-huge='echo -en "\033]50;10x20\007"' if [ "$TERM" = "xterm" ] && [ "$LINES" -ge 50 ] && [ "$COLUMNS" -ge 100 ]; then mxterm-large fi # Postscript, LaTeX and printing alias pnm2ps='pnmtops -width 8.26 -height 11.69' alias gif2ps='(giftopnm | pnm2ps)' alias jpeg2ps='(djpeg | pnm2ps)' alias png2ps='(pngtopnm | pnm2ps)' alias ps2psbook="(psbook | psnup -2 | tumble)" alias ps2A5-haefte="(psbook -s8 | psnup -4 )" alias sho='xdvi -s 2 -expert -geometry 1010x900+30+1030' alias _dvishow='xdvi -s 3 -expert -geometry 990x990' # Change keyboard mapping on the fly (nice for programming) if [ -x $(which xmodmap) ]; then alias US-e="xmodmap ~/.keys-emacs-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'" alias US-v="xmodmap ~/.keys-vi-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'" alias US="xmodmap ~/.keys-vi-us; xmodmap -e 'keysym Alt_L = Meta_L Alt_L'" fi # some global aliases for redirection alias -g N="&>/dev/null" alias -g 1N="1>/dev/null" alias -g 2N="2>/dev/null" alias -g DN="/dev/null" alias -g PI="|" # suffix aliases (needs Zsh >= 4.2.0). Suffix aliases allow the shell # to run a command on a file by suffix, e.g 'alias -s ps=gv' makes # 'foo.ps' execute 'gv foo.ps'. if [[ $ZSH_VERSION == 4.2.<0->* ]]; then alias -s dvi=xdvi alias -s pdf=xpdf alias -s ps=gv alias -s ogg=ogg123 alias -s wmv=mplayer alias -s mp3=mplayer alias -s html=${BROWSER:-lynx} alias -s htm=${BROWSER:-lynx} alias -s tex=${EDITOR:-vi} alias -s txt=${PAGER:-less} alias -s jpg=display alias -s jpeg=display alias -s xpm=display alias -s xbm=display alias -s png=display alias -s gif=display alias -s gz=show-archive alias -s tar=show-archive alias -s bz2=show-archive alias -s zip=show-archive fi zsh-lovers-0.8.3/zsh_people/strcat/zshfunctions0000644000175000017500000007046111103635725021661 0ustar alessioalessio# Globbing is simple? Sure .. See zshexpn(1) /Glob Qualifiers for details and # come back ;) function H-Glob() { echo -e " / directories . plain files @ symbolic links = sockets p named pipes (FIFOs) * executable plain files (0100) % device files (character or block special) %b block special files %c character special files r owner-readable files (0400) w owner-writable files (0200) x owner-executable files (0100) A group-readable files (0040) I group-writable files (0020) E group-executable files (0010) R world-readable files (0004) W world-writable files (0002) X world-executable files (0001) s setuid files (04000) S setgid files (02000) t files with the sticky bit (01000) print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden. print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde. print *(@) # Nur Links print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind print **/*.c # Alle *.c - Dateien unterhalb von \$PWD print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c' print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang print *~*.* # Nur Dateien ohne '.' in Namen chmod 644 *(.^x) # make all non-executable files publically readable print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h' print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users< echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<" } # colorizing the output of make if [[ -x ~/bin/makefilter ]] then make() { command make "$@" |& makefilter } fi # check if ~/.errorlogs/ exist (otherwise create it) and create a # ``logfile'' e. g. ``makelog-vim-6.3'' function mmake() { [[ ! -d ~/.errorlogs ]] && mkdir ~/.errorlogs =make -n install > ~/.errorlogs/${PWD##*/}-makelog } # Search for the argument in the system libraries function lcheck() { nm -go /usr/lib/lib*.a /usr/lobal/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1" } # clean directory function purge() { FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N)) NBFILES=${#FILES} if [[ $NBFILES > 0 ]]; then print $FILES local ans echo -n "Remove this files? [y/n] " read -q ans if [[ $ans == "y" ]] then rm ${FILES} echo ">> $PWD purged, $NBFILES files removed" else echo "Ok. .. than not.." fi fi } # display a of possible passwords. function makepasswords() { perl <$%&()*^})); for (1..10) { print join "", map { \$a[rand @a] } (1..rand(3)+7); print qq{\n} } EOPERL } # AUTOMATIC ls on chpwd *if* directly isn't too big. # Not really needed ;o) #function chpwd #{ # integer ls_lines="$(ls -C | wc -l)" # if [ $ls_lines -eq 0 ]; then # echo No files found: Empty Directory # elif [ $ls_lines -le 18 ]; then # ls # echo "\e[1;32m --[ Items: `ls -l | wc -l` \e[1;32m]--" # else # echo Directory Exceeds Limits. # fi #} # ssh-add -- wrap ssh-add to default to adding all identities in # ${HOME}/.ssh function ssh-add() { local files if [[ $# -eq 0 ]] ; then for i in id_dsa id_rsa identity ; do if [[ -f $HOME/.ssh/$i ]] ; then files=($files $HOME/.ssh/$i) fi done else files=( "$@" ) fi command ssh-add $files } # Name (``hash -d'') all the subdirectories in given directory # $ mkdir -p foo/{bar,foo,fnord,recursion} # $ quick-hash foo # $ hash -d # bar=foo/bar # fnord=foo/fnord # foo=foo/foo # recursion=foo/recursion function quick-hash() { for i in $1/*(/) do hash -d ${i##*/}=$i done } # print current settings of LC_* function plocale() { print LC_ALL=$LC_ALL print LANG=$LANG print LC_CTYPE=$LC_CTYPE print LC_NUMERIC=$LC_NUMERIC print LC_TIME=$LC_TIME print LC_COLLATE=$LC_COLLATE print LC_MONETARY=$LC_MONETARY print LC_MESSAGES=$LC_MESSAGES print LC_PAPER=$LC_PAPER print LC_NAME=$LC_NAME print LC_ADDRESS=$LC_ADDRESS print LC_TELEPHONE=$LC_TELEPHONE print LC_MEASUREMENT=$LC_MEASUREMENT print LC_IDENTIFICATION=$LC_IDENTIFICATION } # a clock in the prompt. #trap CRON ALRM #TMOUT=1 #CRON() { # local STRING # local COL # local x # STRING=$(date) # COL=$[COLUMNS-5] # COL=$[COL-$#STRING] # x=$(echo $PREBUFFER | wc -l ) # x=$[x+1] # echo -n "7[$x;A[$COL;G-- $STRING --8" #} # invoke this every time when u change .zshrc to recompile it. function src() { autoload -U zrecompile [ -f ~/.zshrc ] && zrecompile -p ~/.zshrc [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump [ -f ~/.zshrc.zwc.old ] && rm -f ~/.zshrc.zwc.old [ -f ~/.zcompdump.zwc.old ] && rm -f ~/.zcompdump.zwc.old source ~/.zshrc } # Search for links in a directory and format the output # Note: '~/.fnord.awk' is a *very* simple script based on >awk<. # ,---- # | $ cat ~/bin/fnord.awk # | BEGIN { # | regexp = "" # | regexp = regexp "((http|ftp)://)" # | regexp = regexp "[-0-9A-Za-z#%&+./:;?_~]" # | regexp = regexp "*[-0-9A-Za-z#%&+/:;?_~]" # | } # | NF { # | while (match($0, regexp)) # | { # | print substr($0, RSTART, RLENGTH) # | $0 = substr($0, RSTART + RLENGTH) # | } # | } # | END {} # `---- function URL-search() { if [[ $# = 0 ]] then echo "Usage : $0 directory" echo "Example : $0 ~/Mail" echo "Example : $0 directory | \$PAGER" echo "Example : $0 directory > logfile" else egrep -r -h -i '((ftp|https|http|www):.*)' $1 | awk -f ~/bin/fnord.awk | sort | uniq fi } # Happy CVS'ing function cvsd() { cvs diff -N $* |& $PAGER } function cvsl() { cvs log $* |& $PAGER } function cvsr() { rcs2log $* | $PAGER } function cvss() { cvs status -v $* } function cvsq() { cvs -nq update } function cvsa() { cvs add $* && cvs com -m 'initial checkin' $* } # Display the permissions in octal from given file. Not really needed. # Use http://www.strcat.de/hacks/perm-oktal.pl instead # function perm-oktal() #{ # echo $1 | perl -e 'chomp($s=<>);$p=(stat($s))[2] & 07777;printf "$s -> %04o\n",$p' #} # Translate DE<=>EN # *narf* .. 'translate' looks up fot a word in a file with language-to-language # translations (field separator should be " : "). A typical wordlist looks # like at follows: # | english-word : german-transmission # It's also only possible to translate english to german but not reciprocal. # Use the following oneliner to turn back the sort order: # $ awk -F ':' '{ print $2" : "$1" "$3 }' \ # /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok function trans() { case "$1" in -[dD]*) translate -l de-en $2 ;; -[eE]*) translate -l en-de $2 ;; *) echo "Usage: $0 { -D | -E }" echo " -D == German to English" echo " -E == English to German" esac } # Some quick Perl-hacks aka /useful/ oneliner function bew() { perl -e 'print unpack "B*","'$1'"' ; perl -e 'print "\n"' } function web() { perl -e 'print pack "B*","'$1'"' ; perl -e 'print "\n"' } function hew() { perl -e 'print unpack "H*","'$1'"' ; perl -e 'print "\n"' } function weh() { perl -e 'print pack "H*","'$1'"' ; perl -e 'print "\n"' } function pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79" function getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* } function gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* } function getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* } function getforms () { perl -ne 'while ( m:(\):gic ) { print $1, "\n"; }' $* } function getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*} function getanchors () { perl -ne 'while ( m/([^\n]+)/gc ) { print $1, "\n"; }' $* } function showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' } function vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` } function vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" } # set the DISPLAY to where i'm logged from or - if an argument is specified - # to the value of the argument function disp() { if [[ $# == 0 ]] then DISPLAY=$(who am i | awk '{print $6}' | tr -d '()'):0 else DISPLAY="${*}:0" fi export DISPLAY } # adds a directory to the PATH, without making duplicate entries function add_to_path() { if [[ "$1" == "" ]] then echo "Usage: $0 directory" else unset SPACEPATH local SPACEPATH for i in ${(s.:.)PATH} do SPACEPATH=( $SPACEPATH $i ) done typeset -U SPACEPATH if [[ -d "$1" ]]; then; SPACEPATH=( $SPACEPATH "$1" ); fi PATH="`echo $SPACEPATH`" PATH=${PATH:gs/ /:/} export PATH rehash fi } # Shameless stolen from Sven Guckes () # _lap foo -- list all programs with prefix "foo": function _lap() { if [[ $# = 0 ]] then echo "Usage: $0 program" echo "Example: $0 zsh" echo "Lists all occurrences of program in the current PATH." else ls -l ${^path}/*$1*(*N) fi } # A life without 'diff'? Unimaginably!!!!11! function mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" } function udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " } function cdiff() { diff -crd $* | egrep -v "^Only in |^Binary files " } # List / Search / Browse in a archive without unpack function lynxbzgrep() { lynx -force_html -dump =(bzip2 -cd $1) | grep -i $2 } function browse-archive() { lynx -force_html <( gzip -cd $1 ) } # show/search signatures ;-) # random-signature.pl can be found at # function sig() { if [[ $# = 0 ]]; then random-signature.pl; < ~/.signature else agrep -d "^-- $" $@ ~/.sigs/own-stuff fi } # mkdir && cd function mcd() { mkdir "$1"; cd "$1" } # $ ls -l =ls # $ -r-xr-xr-x 1 root bin 167936 Oct 4 2002 /bin/ls # $ pls ls # $ -r-xr-xr-x 1 root bin 167936 Oct 4 2002 /bin/ls function pls() { ls -l =$1 } # cd && ls function cl() { cd $1 && ls -a } # Use vim to convert plaintext to HTML function 2html() { vim -n -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null } # Often needed (if i rape '$LS_COLORS' again *g*) function _cols() { esc="\033[" echo -e "\t 40\t 41\t 42\t 43\t 44\t 45\t 46\t 47" for fore in 30 31 32 33 34 35 36 37; do line1="$fore " line2=" " for back in 40 41 42 43 44 45 46 47; do line1="${line1}${esc}${back};${fore}m Normal ${esc}0m" line2="${line2}${esc}${back};${fore};1m Bold ${esc}0m" done echo -e "$line1\n$line2" done } # Usage: simple-extract # Description: extracts archived files (maybe) simple-extract () { if [[ -f $1 ]] then case $1 in *.tar.bz2) bzip2 -v -d $1 ;; *.tar.gz) tar -xvzf $1 ;; *.rar) unrar $1 ;; *.deb) ar -x $1 ;; *.bz2) bzip2 -d $1 ;; *.lzh) lha x $1 ;; *.gz) gunzip -d $1 ;; *.tar) tar -xvf $1 ;; *.tgz) gunzip -d $1 ;; *.tbz2) tar -jxvf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' Error. Please go away" ;; esac else echo "'$1' is not a valid file" fi } # Usage: smartcompress () # Description: compresses files or a directory. Defaults to tar.gz smartcompress() { if [ $2 ]; then case $2 in tgz | tar.gz) tar -zcvf$1.$2 $1 ;; tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;; tar.Z) tar -Zcvf$1.$2 $1 ;; tar) tar -cvf$1.$2 $1 ;; gz | gzip) gzip $1 ;; bz2 | bzip2) bzip2 $1 ;; *) echo "Error: $2 is not a valid compression type" ;; esac else smartcompress $1 tar.gz fi } # Usage: show-archive # Description: view archive without unpack show-archive() { if [[ -f $1 ]] then case $1 in *.tar.gz) gunzip -c $1 | tar -tf - -- ;; *.tar) tar -tf $1 ;; *.tgz) tar -ztf $1 ;; *.zip) unzip -l $1 ;; *.bz2) bzless $1 ;; *) echo "'$1' Error. Please go away" ;; esac else echo "'$1' is not a valid archive" fi } # find process and kill it morons() { reply=(`ps ax | grep -v COMMAND |perl -nle '@a=split(" ",$_,9);$_=$a[4];s/[()]//g;s/.*\///g;print'`) } compctl -K morons pskill pkill pskill() { local signal="HUP" if [[ $1 == "" || $3 != "" ]]; then print "Usage: $0 processname [signal]" && return 1 fi [[ $2 != "" ]] && signal=$2 set -A pids $(command ps wwaux | grep $1 | grep -v "grep $1" | awk '{ print $2 }') if [[ ${#pids} -lt 1 ]]; then print "No matching processes for $1" && return 1 fi if [[ ${#pids} -gt 1 ]]; then print "${#pids} processes matched: $pids" read -q "?Kill all? [y/n] " || return 0 fi if kill -$signal $pids; then echo "Killed $1 pid $pids with SIG$signal" fi } # Use 'view' to read manpages, if u want colors, regex - search, ... # like vi(m). # It's shameless stolen from function vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - } # J-E-H-O-V-A!!!11!! # ,---- # | $ (cd $PORTS_DIR && make print-index ~/.ports) # | $ grep -i "^Port.*xchat-" -B1 -A8 .ports # | # | Port: xchat-1.8.11 # | Path: net/xchat # | Info: X-Chat is an X11 IRC client # | Maint: Damien Couderc # | Index: net x11 # | L-deps: gdk_pixbuf::graphics/gdk-pixbuf iconv.2::converters/libiconv intl.1:gettext->=0.10.38:devel/gettext # | B-deps: :devel/gmake bzip2-*:archivers/bzip2 gettext->=0.10.38:devel/gettext # | R-deps: gettext->=0.10.38:devel/gettext libiconv-*:converters/libiconv # | # `---- if [ "${OS}" = openbsd ]; then function port() { case "$1" in -p) =grep -i "^Port.*$2" -B1 -A8 ~/.ports ;; -i) =grep -i "^Info.*$2" -B1 -A5 ~/.ports ;; *) echo "Usage: $0 {-i | -p } string }" echo " -i (Info) Search parse Info:" echo " -p (Port) Search parse Port:" esac } fi # Exchange ' ' for '_' in filenames. unspaceit() { for _spaced in "${@:+"$@"}"; do if [ ! -f "${_spaced}" ]; then continue; fi _underscored=$(echo ${_spaced} | tr ' ' '_'); if [ "${_underscored}" != "${_spaced}" ]; then mv "${_spaced}" "${_underscored}"; fi done } # summarized google, ggogle, mggogle, agoogle and fm function search() { case "$1" in -g) ${BROWSER:-lynx} "http://www.google.com/search?q="$2"" ;; -u) ${BROWSER:-lynx} "http://groups.google.com/groups?q="$2"" ;; -m) ${BROWSER:-lynx} "http://groups.google.com/groups?selm="$2"" ;; -a) ${BROWSER:-lynx} "http://groups.google.com/groups?as_uauthors="$2"" ;; -c) ${BROWSER:-lynx} "http://search.cpan.org/search?query="$2"&mode=module" ;; -f) ${BROWSER:-lynx} "http://freshmeat.net/search/?q=$2§ion=projects" ;; -F) ${BROWSER:-lynx} "http://www.filewatcher.com/?q="$2"" ;; -s) ${BROWSER:-lynx} "http://sourceforge.net/search/?type=soft&q="$2"" ;; *) echo "Usage: $0 {-g | -u | -m | -a | -f | -c | -F}" echo " -g: Searching for keyword in google.com" echo " -u: Searching for keyword in groups.google.com" echo " -m: Searching for message-id in groups.google.com" echo " -a: Searching for Authors in groups.google.com" echo " -c: Searching for Modules on cpan.org." echo " -f: Searching for projects on Freshmeat." echo " -F: Searching for packages on FileWatcher." echo " -s: Searching for software on Sourceforge." esac } # Quick&dirty hack to read heise-news ( function heise() { CURDIR=${pwd}; cd /tmp; if [[ -s tmp/heise.rdf ]] then rm heise.rdf fi wget -q -O - http://heise.de/newsticker/heise.rdf |\ sed -e '/title/!d;s, \(.*\),\1,' -e '/heise online/d' ; cd $CURDIR } # make screenshot of current desktop (use 'import' from ImageMagic) # See man date(1) and man import(1) for details. # Note: If you don't have 'import', install ImageMagick and stop # crying. function sshot() { [[ ! -d ~/shots ]] && mkdir ~/shots cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d%--%H:%M:%S"`.png # cd ~/shots && sleep 5; import -window root `date "+%Y-%m-%d%--%H:%M:%S"`.jpg } # Needs ImageMagick function gif2png() { if [[ $# = 0 ]] then echo "Usage: $0 foo.gif" echo "Purpose: change a GIF file to a PNG file" else output=`basename $1 .gif`.png convert $1 $output touch -r $1 $output ls -l $1 $output fi } # search for various types or README file in dir and display them in $PAGER # function readme() { $PAGER -- (#ia3)readme* } function readme() { local files files=(./(#i)*(read*me|lue*m(in|)ut)*(ND)) if (($#files)) then $PAGER $files else print 'No README files. Please lart \$MAINTAINER!' fi } # find all suid files in $PATH function suidfind() { ls -latg ${(s.:.)PATH} | grep '^...s' } # See above but this is /better/ ... anywise .. # Note: Add $USER and 'find' with "NOPASSWD" in your /etc/sudoers or run it # as root (UID == 0) function findsuid() { sudo find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/.suid/suidfiles.`date "+%Y-%m-%d"`.out 2>&1 sudo find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/.suid/suiddirs.`date "+%Y-%m-%d"`.out 2>&1 sudo find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/.suid/writefiles.`date "+%Y-%m-%d"`.out 2>&1 sudo find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/.suid/writedirs.`date "+%Y-%m-%d"`.out 2>&1 } # csh compatibility setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" } # if [ Now-Playing == "relaxmusic" ];then .. ;-) beer() { echo " _.._..,_,_" echo " ( )" echo " ]~,\"-.-~~[" echo " .=])' (; ([ PANTS OFF!" echo " | ]:: ' [" echo " '=]): .) ([" echo " |:: ' |" echo " ~~----~~" } # Add directory to a bookmark-list # % bmadd # add directory to bookmark list # % bmls # show list of bookmark list # % bmvi # edit bookmark list # % bm $NUMBER # change directory to $NUMBER bookmark BMRC=~/.bmrc /usr/bin/touch $BMRC bmls() { cat $BMRC | sort -n} bmvi() { vi $BMRC } bmadd() { local bmdir=`pwd` local newid=$1 local bmname='' for bmname in `bm_path_list` do if [ "$bmname" = "$bmdir" ]; then echo "$bmdir is already in bm list" return fi done if [ -z $newid ]; then maxid=`cat $BMRC | cut -f 1 | sort -n -r | head -1` if [ "$maxid" -ge 1 ]; then newid=`expr 0$maxid + 1` else newid=1 fi fi echo "$newid\t$bmdir" >> $BMRC } bm() { local num=$1 local bmdir=`bm_get $num` if [ -z "$bmdir" ]; then bmls [ -z "$num" ] || echo "$num is not in bm list" return fi cd "$bmdir" } bm_get() { local bmdir=`cat $BMRC | egrep "^${1}[[:space:]]" | cut -f 2` echo $bmdir } bm_path_list() { cut -f 2 < $BMRC } # Temporary (interactive) removes. Alternative to this u can use # http://www.strcat.de/hacks/rm-replacements.shar function rf() { [[ -z ${SHITDIR} ]] && print "No ${SHITDIR} defined." && return 1 [[ ! -d ${SHITDIR} ]] && mkdir ${SHITDIR} mv $* ${SHITDIR} } # Reload functions. function refunc() { for func in $argv do unfunction $func autoload $func done } # a small check to see which DIR is located on which server/partition. # stolen and modified from Sven's zshrc.forall function dirspace() { for dir in ${(s.:.)PATH}; do (cd $dir; echo "-<$dir>"; du -shx .; echo); done } # Create a archive for my homepage () function mkz() { cd ~/homepage/dotfiles/zsh cp ~/.zlogin ~/homepage/dotfiles/zsh/zlogin cp ~/.zlogout ~/homepage/dotfiles/zsh/zlogout cp ~/.zshrc ~/homepage/dotfiles/zsh/zshrc cp ~/.zsh/z* ~/homepage/dotfiles/zsh/ cd ~/homepage/dotfiles/zsh/ rm ~/homepage/dotfiles/zsh/zshdevel.old tar cf dot-zsh.tar * gzip --best ~/homepage/dotfiles/zsh/dot-zsh.tar cd ~1 } # FIXME: works not so as i like #-------------------------------------------------- # function verify() { # for i in "$1" # do # if [ -r "$1" ] # then # #cd `dirname $1` # cd =$1(:h) # shortname=`basename $1` # md5 "$shortname" > "~/.checksums/$shortname.md5sum" # echo "Verified $shortname to $shortname.md5sum" # else # echo "Can not find $1" # fi # done # } #-------------------------------------------------- # Find (and print) all symbolic links without a target within the # current directorytree (i. e. ll symlinks that dont point to files, # directories, sockets, devices, or named pipes). # Note: all three functions works but the last is nicer # function brlinks() { for i in **/*(D@); [[ -f $i || -d $i ]] || echo $i } # function brlinks() { print -l **/*(@-^./=%p) } function brlinks() { print -l **/*(-@) } # *fg* # function show_print () { # for argument in "${@}" # do #for ((i = 1; i <= ${#1} ;i++)) { # print -n "${argument[i]}" # sleep 0.005 #} #print -n " " # done # print "" #} # display some informations function status() { print "" print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")"" print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)" print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars" print "Login.: $LOGNAME (UID = $EUID) on $HOST" print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)" print "Uptime:$(uptime)" print "" } # a fucking lazy poor man clock.. # check time every minute # PERIOD=60 # show time every 15 minutes #function periodic() #{ # if [ `date +'%M'` = '00' ] || # [ `date +'%M'` = '15' ] || # [ `date +'%M'` = '30' ] || # [ `date +'%M'` = '45' ] # then # echo Time: `date +'%H:%M'` # fi #} # For my Linux boxes if [ ${OS} = linux-gnu ]; then function mkernel() { make clean && make dep && make modules && make modules_install && make bzImage cd arch/i386/boot } function getkernel() { if [ $# -ne 3 ] ; then echo "Usage:" echo "$0 MAJOR MINOR SUBMINOR" echo "" echo "eg:" echo " $0 2 6 7" latest=`echo -e "GET /kdist/finger_banner HTTP/1.0\n" | netcat www.kernel.org 80 | sed -ne "/^ $/,//p"` echo "" echo "current versions: $latest" echo "" echo -n 'Used release is: ' uname -r else cd /Source SERVER=http://www.de.kernel.org/pub/linux/kernel/ KERNEL=$SERVER/v$1.$2/linux-$1.$2.$3.tar.bz2 SIGN=$SERVER/v$1.$2/linux-$1.$2.$3.tar.bz2.sign echo 'starting download' wget -c $KERNEL && wget -c $SIGN && echo 'done' echo 'checking signature:' gpg --verify `basename $SIGN $KERNEL` && echo 'done' fi } function audiorip() { mkdir -p ~/ripps cd ~/ripps cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc echo " * Would you like to burn the cd now? (yes/no)" read input if [ "$input" = "yes" ]; then echo " ! Burning Audio CD" audioburn echo " * done." else echo " ! Invalid response." fi } function audioburn() { cd ~/ripps cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc echo " * Should I remove the temporary files? (yes/no)" read input if [ "$input" = "yes" ]; then echo " ! Removing Temporary Files." cd ~ rm -rf ~/ripps echo " * done." else echo " ! Invalid response." fi } function mkaudiocd() { cd ~/ripps for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done normalize -m *.wav for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done } function mkiso() { echo " * Volume name " read volume echo " * ISO Name (ie. tmp.iso)" read iso echo " * Directory or File" read files mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files } # rmmodcomplete() looks for modules in memory, for use with "rmmod". rmmodcomplete () { reply=(`/sbin/lsmod|cut -f1 -d" "|grep -v Module`) } compctl -K rmmodcomplete rmmod # insmodcomplete() looks for modules to use with "insmod" or # "modprobe". function insmodcomplete() { reply=(`find /lib/modules/$(uname -r)/* ! -type d -printf "%f\n"|sed "s/\.o$//"`) } compctl -K insmodcomplete insmod modprobe fi # Complete a howto-filename or FAQ-name (see howto script below). # Use like "howto zsh[TAB]". function howtocomplete() { reply=(`howto --find "$1"`) } compctl -U -K howtocomplete howto p0rncomplete() { reply=(`p0rn --find "$1"`) } compctl -U -K p0rncomplete p0rn # a quick hack for GNU Emacs && emacsclient function e() { if [ "$1" = "" ]; then echo "No file specified you have, think before you must." else if emacsclient -n "$1" >/dev/null 2>&1; then echo "Alrite, opened $1 in the Holy Emacs." else echo "There's no Holy Emacs running here.. starting.." exec emacs "$1" & fi fi } # Show days since given birthday function days () { if [ "$*" = "" ]; then echo "Use $0 day month year" echo "Example: $0 "12 aug 1999"" else BIRTHDAY="$*" print $(( (`date +%s -d ${2:="now"}` - `date +%s -d ${1:=$BIRTHDAY}` )/60/60/24 )) fi } # generate thumbnails ;) function genthumbs () { rm -rf thumb-* index.html echo " Images " > index.html for f in *.(gif|jpeg|jpg|png) do convert -size 100x200 "$f" -resize 100x200 thumb-"$f" echo " " >> index.html done echo " " >> index.html } zsh-lovers-0.8.3/zsh_people/strcat/zshexports0000644000175000017500000005463011103635725021355 0ustar alessioalessio# (( ${+*} )) = if variable is set don't set it anymore # Note: Do *not* use '$PORTSDIR'! This variable is defined in # '/path/to/ports/Makefile'. (( ${+IRCNAME} )) || export IRCNAME="Christian 'strcat' Schneider" # **EDIT** (( ${+IRCNICK} )) || export IRCNICK="strcat" # **EDIT** (( ${+IRCSERVER} )) || export IRCSERVER="irc.euirc.net" # **EDIT** (( ${+VISUAL} )) || export VISUAL="vim" # **EDIT** (( ${+BROWSER} )) || export BROWSER="w3m" # **EDIT** (( ${+OS} )) || export OS="${OSTYPE%%[0-9.]*}" (( ${+OSVERSION} )) || export OSVERSION="${OSTYPE#$OS}" (( ${+OSMAJOR} )) || export OSMAJOR="${OSVERSION%%.*}" (( ${+ORGANIZATION} )) || export ORGANIZATION="Guerrilla UNIX Development (Venimus, Vidimus, Dolavimus)" # **EDIT** (( ${+SHITDIR} )) || export SHITDIR="/home/$LOGNAME/Trash" # some variables for specific systems case ${OS} in openbsd) (( ${+CVSROOT} )) || export CVSROOT="anoncvs@anoncvs.ca.OpenBSD.org:/cvs" (( ${+PORTS_DIR} )) || export PORTS_DIR="/usr/ports" (( ${+PKG_PATH} )) || export PKG_PATH="ftp://ftp.OpenBSD.org/pub/OpenBSD/$(uname -r)/packages/$(uname -m)" ;; netbsd) (( ${+CVSROOT} )) || export CVSROOT="anoncvs@anoncvs.se.NetBSD.org:/cvsroot" (( ${+LD_LIBRARY_PATH} )) || export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/usr/X11R6/lib:/usr/local/lib:/usr/pkg/lib" (( ${+INCLUDEPATH} )) || export INCLUDEPATH="$INCLUDEPATH:/usr/local/lib" (( ${+CFLAGS} )) || export CFLAGS='-I/usr/local/include -I/usr/pkg/include -I/usr/X11R6/include' (( ${+CPPFLAGS} )) || export CPPFLAGS=$CFLAGS ;; esac # compiler opt. flags !!! use this with caution !!! or dont use et all case $CPUTYPE in i686) (( ${+CFLAGS} )) || export CFLAGS='-O3 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -fomit-frame-pointer -fno-exceptions' ;; i586) (( ${+CFLAGS} )) || export CFLAGS='-O3 -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions' ;; i486) (( ${+CFLAGS} )) || export CFLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions' ;; *) (( ${+CXXFLAGS} )) || export CXXFLAGS=$CFLAGS esac # Set the values for some environment variables: export HOSTNAME="`hostname`" export LESS="-sCieM -P?fFile %f:stdin. ?m(%i of %m) :.line %l ?Lof %L:.?p (%p\%):." export LESSBINFMT='*u[%X]' export PAGER=less export CVS_RSH=ssh export NNTPSERVER='news.individual.net' # **EDIT** export HELPDIR='~/.zsh/help' export VERSION=${VERSION:-"zsh $ZSH_VERSION"} export WWW_HOME="http://www.google.com" export HTTP_HOME="http://www.google.com" export NETHACKOPTIONS='gender:male,noautopickup,color,lit_corridor,showrace,showexp,showdmg,showweight,time,toptenwin,catname:Prowl,msg_window:f,!legacy' export INFOPATH="/usr/local/info/:/usr/share/info/:/usr/local/emul/redhat/:/usr/share/info/" export MANWIDTH=80 if [ -x $(which lesspipe.sh) ]; then export LESSOPEN="|lesspipe.sh %s" fi # i primarily use Vim (GNU Emacs and jed are only exception ;-)) # $ print ${${$(=vim --version)[5]}:gs/.//} # is equivalent to # $ /path/to/vim --version | head -n 1 | awk '{print $5}' | sed 's/\.//' if [ -x $(which vim) ]; then export EDITOR=vim export VISUAL="${EDITOR}" export VIMRELEASE="`print ${${$(vim --version)[5]}:gs/.//}`" else if [ -x $(which vi) ]; then export EDITOR=vi fi fi case ${OS} in openbsd) [ -d "/usr/local/share/vim/vim$VIMRELEASE" ] \ && export VIMRUNTIME="/usr/local/share/vim/vim$VIMRELEASE" ;; netbsd) [ -d "/usr/pkg/share/vim/vim$VIMRELEASE" ] \ && export VIMRUNTIME="/usr/pkg/share/vim/vim$VIMRELEASE" ;; linux-gnu) [ -d "/usr/share/vim/vim$VIMRELEASE" ] \ && export VIMRUNTIME="/usr/share/vim/vim$VIMRELEASE" ;; esac # That's for my Linuxbox (Slackware); OpenBSD doesn't support # locale :/ if [ "${OSTYPE}" = linux-gnu ] && [ -x $(which locale) ]; then # All of the below export LC_ALL="en_US.iso885915" # language information export LANG="en_US.iso885915" # Character classification and case conversion. export LC_CTYPE="en_US.iso885915" # Non-monetary numeric formats. export LC_NUMERIC="en_US.iso885915" # Date and time formats. export LC_TIME="en_US.iso885915" # Collation order. export LC_COLLATE="en_US.iso885915" # Monetary formats. export LC_MONETARY="en_US.iso885915" # ormats of informative and diagnostic messages and interactive responses. export LC_MESSAGES="en_US.iso885915" # Paper size format. export LC_PAPER="en_US.iso885915" # Define format of names. export LC_NAME="en_US.iso885915" # Format of addresses. export LC_ADDRESS="en_US.iso885915" # Format of telephon numbers. export LC_TELEPHONE="en_US.iso885915" # Format of dimensions. export LC_MEASUREMENT="en_US.iso885915" # Identify locale informations. export LC_IDENTIFICATION="en_US.iso885915" else export LC_ALL=POSIX fi # $ cd /usr/ports/misc/fileutils # $ make install clean # di = directory # fi = file # ln = symbolic link # pi = fifo file # so = socket file # bd = block (buffered) special file (block device) # cd = character (unbuffered) special file (character device) # or = symbolic link pointing to a non-existent file (orphan) # mi = non-existent file pointed to by a symbolic link (visible when you type ls -l) # ex = file which is executable (ie. has 'x' set in permissions (executable)). # # 0 = default color 1 = bold # 4 = underlined 5 = flashing text # 7 = reverse field 31 = red # 32 = green 33 = orange # 34 = blue 35 = purple # 36 = cyan 37 = grey # 40 = black background 41 = red background # 42 = green background 43 = orange background # 44 = blue background 45 = purple background # 46 = cyan background 47 = grey background # 90 = dark grey 91 = light red # 92 = light green 93 = yellow # 94 = light blue 95 = light purple # 96 = turquoise 100 = dark grey background # 101 = light red background 102 = light green background # 103 = yellow background 104 = light blue background # 105 = light purple background 106 = turquoise background # # Attribute codes: # 00 none # 01 bold # 02 faint 22 normal # 03 standout 23 no-standout # 04 underline 24 no-underline # 05 blink 25 no-blink # 07 reverse 27 no-reverse # 08 conceal # # export LS_COLORS="fi=36:di=32:ln=1;33:ec=\\e[0;37m:ex=1:mi=1;30:or=1;30:*.c=32:*.bz=32:*.txt=36;1:*.doc=37:*.zip=1;32:*.rar=1;32:*.lzh=1;32:*.lha=1;32:*.arj=1;32:*.tar=1;32:*.tgz=1;32:*.gz=1;32:*~=1;30:*.bak=1;30:*.jpg=1;35:*.gif=1;35:*.tif=1;35:*.tiff=1;35:*.mod=1;31:*.voc=1;31:*.smp=1;31:*.au=1;31:*.wav=1;31:*.s3m=1;31:*.xm=1;31:*.pl=1;33:*.c=1;33" LS_COLORS='' LS_COLORS=$LS_COLORS:'no=0' # Normal text = Default foreground LS_COLORS=$LS_COLORS:'fi=0' # Regular file = Default foreground LS_COLORS=$LS_COLORS:'di=32' # Directory = Bold, Yellow LS_COLORS=$LS_COLORS:'ln=01;36' # Symbolic link = Bold, Cyan LS_COLORS=$LS_COLORS:'pi=33' # Named pipe = Yellow LS_COLORS=$LS_COLORS:'so=01;35' # Socket = Bold, Magenta LS_COLORS=$LS_COLORS:'do=01;35' # DO = Bold, Magenta LS_COLORS=$LS_COLORS:'bd=01;37' # Block device = Bold, Grey LS_COLORS=$LS_COLORS:'cd=01;37' # Character device = Bold, Grey LS_COLORS=$LS_COLORS:'ex=94' # Executable file = Light, Blue LS_COLORS=$LS_COLORS:'*FAQ=31;7' # FAQs = Foreground Red, Background Black LS_COLORS=$LS_COLORS:'*README=31;7' # READMEs = Foreground Red, Background Black LS_COLORS=$LS_COLORS:'*INSTALL=31;7' # INSTALLs = Foreground Red, Background Black LS_COLORS=$LS_COLORS:'*.sh=47;31' # Shell-Scripts = Foreground White, Background Red LS_COLORS=$LS_COLORS:'*.vim=35' # Vim-"Scripts" = Purple LS_COLORS=$LS_COLORS:'*.swp=00;44;37' # Swapfiles (Vim) = Foreground Blue, Background White LS_COLORS=$LS_COLORS:'*.sl=30;33' # Slang-Scripts = Yellow LS_COLORS=$LS_COLORS:'*,v=5;34;93' # Versioncontrols = Bold, Yellow LS_COLORS=$LS_COLORS:'or=01;05;31' # Orphaned link = Bold, Red, Flashing LS_COLORS=$LS_COLORS:'*.c=1;32' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.C=1;33' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.h=1;33' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.cc=1;33' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.awk=1;33' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.pl=1;33' # Sources = Bold, Yellow LS_COLORS=$LS_COLORS:'*.jpg=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.jpeg=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.JPG=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.gif=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.png=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.jpeg=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.ppm=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.pgm=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.pbm=1;32' # Images = Bold, Green LS_COLORS=$LS_COLORS:'*.tar=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.tgz=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.gz=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.zip=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.sit=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.lha=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.lzh=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.arj=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.bz2=31' # Archive = Red LS_COLORS=$LS_COLORS:'*.html=36' # HTML = Cyan LS_COLORS=$LS_COLORS:'*.htm=1;34' # HTML = Bold, Blue LS_COLORS=$LS_COLORS:'*.doc=1;34' # MS-Word *lol* = Bold, Blue LS_COLORS=$LS_COLORS:'*.txt=1;34' # Plain/Text = Bold, Blue LS_COLORS=$LS_COLORS:'*.o=1;36' # Object-Files = Bold, Cyan LS_COLORS=$LS_COLORS:'*.a=1;36' # Shared-libs = Bold, Cyan export LS_COLORS # The format of login / logout reports if the watch parameter is set. # Default is `%n has %a %l from %m'. # Recognizes the following escape sequences: # %n = name of the user that logged in/out. # %a = observed action, i.e. "logged on" or "logged off". # %l = line (tty) the user is logged in on. # %M = full hostname of the remote host. # %m = hostname up to the first `.'. # %t or %@ = time, in 12-hour, am/pm format. # %w = date in `day-dd' format. # %W = date in `mm/dd/yy' format. # %D = date in `yy-mm-dd' format. # WATCHFMT='%n %a %l from %m at %t.' # WATCHFMT='*knock* *knock* Follow the white rabbit => %n %a %l from %m at %t.' # WATCHFTM=print '\e[1;35m%B[%b\e[1;32m%B%n%b\e[1;35m%B]%b \e[1;34m%U%a%u \e[1;35mfrom terminal \e[1;31m%M \e[1;35mat \e[1;33m%U%T%u\e[0m'' #WATCHFMT="[%B%t%b] %B%n%b has %a %B%l%b from %B%M%b" WATCHFMT="%B->%b %n has just %a %(l:tty%l:%U-Ghost-%u)%(m: from %m:)" # If this parameter is nonzero, the shell will receive an ALRM signal if a # command is not entered within the specified number of seconds after issuing a # prompt. If there is a trap on SIGALRM, it will be executed and a new alarm is # scheduled using the value of the TMOUT parameter after executing the trap. #TMOUT=1800 # format of process time reports with 'time' # %% A `%'. # %U CPU seconds spent in user mode. # %S CPU seconds spent in kernel mode. # %E Elapsed time in seconds. # %P The CPU percentage, computed as (%U+%S)/%E. # %J The name of this job. # Default is: # %E real %U user %S system %P %J TIMEFMT="Real: %E User: %U System: %S Percent: %P Cmd: %J" # The maximum number of events stored in the internal history list. If you use # the HIST_EXPIRE_DUPS_FIRST option, setting this value larger than the # SAVEHIST size will give you the difference as a cushion for saving # duplicated history events. HISTSIZE=100000 # Stop annoying MailChecks. I'm not using AOL unset MAILCHECK # The name of the file used to store command history. When assigned to, history # is loaded from the specified file. Also, several invocations of the shell # running on the same machine will share history if their HISTFILE parameters # all point to the same file. # i have finally discovered the difference between `SAVEHIST' and `HISTSIZE' # thanks to the FAQ. `HISTSIZE' is the number of lines of history that is # kept within any given, running zsh. `SAVEHIST' is the number of lines of # history that is written out to a file at the magic, mysterious moment # when that event occurs. so cat-ing `HISTFILE' into wc -l should enumerate # the number of history events HISTFILE=$HOME/.zsh_history SAVEHIST=65536 DIRSTACKSIZE=50 # If nonnegative, commands whose combined user and system execution # times (measured in seconds) are greater than this value have timing # statistics printed for them. REPORTTIME=60 # Limit this fuckung "zsh: do you wish to see all NNN possibilities (NNN # lines)?" downward (default is 100). Only ask before displaying # completions if doing so would scroll. LISTMAX=0 # Seconds for login / logout check LOGCHECK=20 # Define some ftp-hosts ($ ftp ) hosts=( ftp.{free,open,net}bsd.org ftp rtfm.mit.edu ftp.leo.org ftp.2600.com ftp.ciac.llnl.gov ftp.de.kernel.org ftp.mitglied.lycos.de ftp.strcat.neessen.net ftp.revier.com 127.0.0.1 192.168.13.{1..9} ) zstyle ':completion:*:*:ftp:*' hosts $hosts # Set the default system $PATH: # PATH="/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/" #PATH="/sbin:/usr/sbin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/usr/games:/home/dope/bin:/" #for foo in ~/bin ~/progs/bin; do # if [[ -z ${path[(r)$dir]} ]]; then # path=($dir $path) # fi #done # /Default/-PATH PATH="/bin:/sbin:/usr/bin:/usr/sbin" # If ~/bin exist, add it to $PATH (~/bin contains some scripts, ..) [ -d "${HOME}/bin" ] && PATH="${PATH}:${HOME}/bin" # Same here, but ~/dev-bin contains "unstable" software (WMI, Zsh, GCC, # ..) [ -d "${HOME}/dev-bin" ] && PATH="${PATH}:${HOME}/dev-bin/bin" [ -d "${HOME}/dev-bin" ] && PATH="${PATH}:${HOME}/dev-bin/sbin" # Check some directories and add existing to $PATH for dir in \ /usr/local/bin \ /usr/local/sbin \ /usr/X11R6/bin \ /usr/share/texmf/bin \ /usr/X11R6/libexec/fvwm/2.4.16 \ /usr/lib/java/bin \ /var/qmail/bin \ /usr/pkg/bin \ /usr/pkg/sbin \ /usr/games do [ -d "${dir}" ] && PATH="${PATH}:${dir}" done # For root users, ensure that /usr/local/sbin, /usr/sbin, and /sbin are in if (( EUID == 0 )); then echo $PATH | grep /usr/local/sbin 1> /dev/null 2> /dev/null if [ ! $? = 0 ]; then PATH=/usr/local/sbin:/usr/sbin:/sbin:$PATH fi fi # if your compdef Dir is ~/.zsh fpath=( $fpath /usr/local/share/zsh/$ZSH_VERSION/functions/ ~/.zsh/func/ ) # See for details. if autoload +X -U _accept_line_with_url > /dev/null 2>&1 ; then zle -N accept-line-with-url _accept_line_with_url bindkey '^M' accept-line-with-url bindkey '^J' accept-line-with-url export DOWNLOADER="wget -S" fi # Using Opera as browser when X11 is up if [ $DISPLAY ]; then export WWW_BROWSER="~/.firefox/firefox %s" else export WWW_BROWSER=${BROWSER:-lynx} fi # Clean the non-existing dirs from my $PATH before export $PATH # ,----[ It's evil.. isn't it? ] # | [dope@dreckskind:~]% PATH=/bin:/usr/games:/bin # | [dope@dreckskind:~]% echo $PATH # | /bin:/usr/games:/bin # | [dope@dreckskind:~]% path=($^path(N)) # | [dope@dreckskind:~]% echo $PATH # | /bin:/usr/games # | [dope@dreckskind:~]% # `---- #path=($^path(N)) #export PATH # automatically remove duplicates from these arrays typeset -gU path cdpath manpath fpath # RTFM!!!11! MANPATH="/usr/share/man:/usr/local/man" for mdir in \ /backups/Documentations/manpages.de \ /home/dope/dev-bin/man \ /var/qmail/man \ /usr/X11/man \ /usr/X11R6/man \ /usr/share/texmf/man \ /usr/contrib/man \ /usr/share/man/old do [ -d "${mdir}" ] && MANPATH="${MANPATH}:${mdir}" done # notices on new mails #-------------------------------------------------- # mailpref=/home/dope/MuttMail # mailpath=($mailpref/INBOX'?New Mail in your INBOX' # $mailpref/Cron'?New Mail from Cron') #-------------------------------------------------- #-------------------------------------------------- # typeset -a mailpath # for i in ~/MuttMail/**/new; do # mailpath[$#mailpath+1]="${i}?You have new mail in ${i:h}." # done #-------------------------------------------------- # PS{1,2,3}, RPOMPT, .. # The "prompt" of the shell. # See zshmisc(1) (/PROMPT EXPANSION) for details. # # %n $USERNAME. # @ literal '@' # %m machine name. # %M The full machine hostname. # %% % # %/ Present working directory ($PWD) (i. e.: /home/$USERNAME) # %~ Present working directory ($PWD) (i. e.: ~) # %h Current history event number. # %! Current history event number. # %L The current value of $SHLVL. # %S (%s) Start (stop) standout mode. # %U (%u) Start (stop) underline mode. # %B (%b) Start (stop) boldface mode. # %t / %@ Current time of day, in 12-hour, am/pm format. # %T Current time of day, in 24-hour format. # %* Current time of day in 24-hour format, with seconds # %N The name of the script, sourced file, or shell # function that zsh is currently executing, # %i The line number currently being executed in the script # %w The date in day-dd format. # %W The date in mm/dd/yy format. # %D The date in yy-mm-dd format. # %D{string} string is formatted using the strftime function (strftime(3)) # %l The line (tty) the user is logged in on # %? The return code of the last command executed just before the prompt # %_ The status of the parser # %E Clears to end of line # %# A `#' if the shell is running with privileges, a `%' if not # %v The value of the first element of the psvar array parameter # %{...%} Include a string as a literal escape sequence # : literal ':' # %Nc "relative path", ie last N components of $PWD. # > literal '>' # # Some examples: # PS1="PS1='%B%n%b@%m:%4c>'" # PS1="%B(%b%n@%m%B)%b : %B(%b%3~%B)%b: " # PS1=$'%{\e[1;31m%}[%n@%m:%~ ]%{\e[0m%} ' # PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# ' ## user:~% # PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%B>%b ' ## user:~> # PS1='%n@%m:%4c%1v> ';RPS1=$'%{\e[0;36m%}%D{%A %T}%{\e[0m%}' ## user@host:~> ; Day time(hh:mm:ss) # PS1='%B[%b%n%B:%b%~%B]%b$ ' ## [user:~]$ # PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%20<..<%~%B>%b ' ## user:..c/vim-common-6.0> # PS1=$'%{\e[0;36m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## % ; ~ # PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## user% ; ~ # PS1='%# ';RPS1='%B%~%b' ## % ; ~ : no colors # PS1='%n@%m:%B%~%b> ' ## user@host:~> : no colors # PS1=$'%{\e[1;31m%}%B(%b%{\e[0m%}%n@%m%{\e[1;31m%})%{\e[0m%} : %{\e[1;31m%}(%{\e[0m%}%~%{\e[1;31m%})%{\e[0m%}: ' # PS1=$'%{\e[0;33m%}[%{\e[0m%}%n%{\e[0;33m%}@%{\e[0m%}%m%{\e[0;33m%}:%{\e[0m%}%~%{\e[0;33m%}]%{\e[0m%}%# ' # PS1=$(echo '\033[1m\033[30m(%/)\033[0m\033[39m\n[%n@%m \033[0m\033[34m%~\033[0m\033[39m]%# ') # PS1='%n@%U%m%u %B%30<..<%~%b %(!.#.>)' # user@host (underlined), pwd(bold; max 30 chars.) > or # # PS1=$'%{\e[0;31m%}[%{\e[0;36m%}%n%{\e[0;32m%}@%{\e[0;35m%}%m%{\e[0;34m%}:%{\e[0;33m%}%.%{\e[0;31m%}]%{\e[0;0m%}%# ' # random colors? sure. no problem ;) # $ setopt prompt_subst ; PROMPT=$'[%{\e[$((color=$((30+$RANDOM % 8))))m%}%n@%m %c%{\e[00m%}]%% ' # # You can use ``promptinit'' for the zsh prompt themes extension. See # ``less ${^fpath}/promptinit(N)'' for details. btw. http://aperiodic.net/phil/prompt/ # is a good prompt introduction for the Z shell if [[ $SSH_CLIENT = *.* || $REMOTEHOST = *.* ]]; then RPROMPT=$SSH_CLIENT fi if (( EUID == 0 )); then PS1=$'%{\e[0;33m%}%B[%b%{\e[0m%}%n%{\e[0;33m%}%B@%b%{\e[0m%}%m%{\e[0;33m%}:%{\e[0m%}%~%{\e[0;33m%}%B]%b%{\e[0m%}%# ' else case $HOST in dreckskind) PROMPT=$'\n%{\e[31m%}[%{\e[3;41;1;30m%}%n%{\e[0;31m%}@%{\e[3;41;1;30m%}%m%{\e[0;31m%}:%{\e[3;41;1;30m%}%~%{\e[0;31m%}] #%{\e[0m%} ' ;; painless) PROMPT=$'%{\e[0;31m%}%B[%b%{\e[0m%}%n%{\e[0;31m%}@%{\e[0m%}%m%{\e[0;31m%}%B:%b%{\e[0m%}%~%{\e[0;31m%}%B]%b%{\e[0m%}%# ' # On 'exit-Status != 0' display a ":(" on the right side. RPROMPT="%(?..:()%" ;; hellfire) autoload promptinit; promptinit ; prompt elite2 red #PROMPT=$'\n%{\e[31m%}[%{\e[3;41;1;30m%}%n%{\e[0;31m%}@%{\e[3;41;1;30m%}%m%{\e[0;31m%}:%{\e[3;41;1;30m%}%~%{\e[0;31m%}] #%{\e[0m%} ' ;; blitzkrieg) PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} ' RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ;; diehard) PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# ' ;; *) PROMPT="[%n@%m] " RPROMPT="[%~]" esac fi # Change the title in xterm if [[ $TERM = (xterm|rxvt) ]]; then precmd () { print -Pn "\e]0;[ %n@%m: %~ ] \a" } fi # Executed whenever a command has a non-zero exit status: #-------------------------------------------------- # TRAPZERR() { echo 'AAAAAAAARRRRGHHHHH!!'; } #-------------------------------------------------- #-------------------------------------------------- #red='%{\e[0;31m%}' #white_on_blue='%{\e[0;37;44m%}' #blue='%{\e[0;34m%}' #nocolor='%{\e[0m%}' # function precmd { # PROMPT="${white_on_blue}--INSERT--$nocolor [%~] # $red%B[%b$nocolor%n$red@$nocolor%m$red%B]%b$nocolor%% " } #-------------------------------------------------- # The prompt used for spelling correction. The sequence `%R' expands to # the string which presumably needs spelling correction, and `%r' expands # to the proposed correction. All other prompt escapes are also allowed. SPROMPT=$'%BError!%b Correct %{\e[31m%}%R%{ \e[0m%}to%{ \e[36m%}%r%{ \e[0m%}? [No/Yes/Abort/Edit]: ' zsh-lovers-0.8.3/zsh_people/strcat/zshbindings0000644000175000017500000001010711103635725021435 0ustar alessioalessio# To find out the keynames you can use # | cat > /dev/null # or # | od -c # # Some useful keybindings # | $ xterm -version # | XFree86 4.3/OpenBSD 3.3(174) # | $ echo $TERM # | xterm # # bindkey "^Y" yank # -Y # bindkey "\e[3~" delete-char # Delete # bindkey '^[[7~' beginning-of-line # Home (xterm) # bindkey '^[[8~' end-of-line # End (xterm) # bindkey '^[[5~' history-beginning-search-backward # Page Up # bindkey '^[[6~' history-beginning-search-forward # Page Down # bindkey '^[[2~' overwrite-mode # Insert # bindkey "^[[A" up-line-or-search # -N # bindkey "^[[B" down-line-or-search # - # bindkey "^Q" edit-command-line # -Q # bindkey " " magic-space # ' ' (Space> # bindkey "^B" backward-word # -B # bindkey "^E" expand-cmd-path # -E # bindkey "^N" forward-word # -N # bindkey "^R" history-incremental-search-backward # -R # bindkey "^P" quote-line # -P # bindkey "^K" run-help # -K # bindkey "^Z" which-command # -Z # bindkey "^X" what-cursor-position # -X # bindkey -v case $TERM in xterm*) # Pos1 && End bindkey "^[[H" beginning-of-line bindkey "^[[F" end-of-line ;; screen*) bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line ;; linux*) bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line ;; rxvt*) bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line ;; Eterm*) bindkey "^[[7~" beginning-of-line bindkey "^[[8~" end-of-line ;; esac bindkey "^[[2~" yank # Einfg bindkey "^[[5~" up-line-or-history # PageUp bindkey "^[[6~" down-line-or-history # PageDown bindkey "^[e" expand-cmd-path # C-e for expanding path of typed command bindkey "^[[A" up-line-or-search # up arrow for back-history-search bindkey "^[[B" down-line-or-search # down arrow for fwd-history-search bindkey " " magic-space # do history expansion on space bindkey -v # vi keybindings bindkey "\e[3~" delete-char # "Entf" or "Del" bindkey "^[[A" history-search-backward # PgUp bindkey "" history-search-forward # PgDown bindkey "" forward-char # -> bindkey "" backward-char # <- bindkey "q" push-line # Kill the *complete* line! (ESC+q) bindkey "^R" history-incremental-search-backward # Search in my $HISTFILE (STRG+R) bindkey "^[[2;5~" insert-last-word # STRG+Einfg bindkey "a" accept-and-hold # ESC+a bindkey "^B" backward-word # One word back bindkey "^N" forward-word # One word forward bindkey "^P" quote-line # quote the whole line bindkey "^K" run-help # i. e. "run-help foo" == "man foo" bindkey -s "\C-t" "dirs -v\rcd ~" # STRG+t bindkey "^I" expand-or-complete # assimilable to "ls" bindkey "^E" expand-cmd-path # $ ls == /bin/ls bindkey "^X" which-command # +Z == which foo bindkey " " my-expand-abbrev # See ~/.zsh/zshmisc "/^myiabs" for details #-------------------------------------------------- # # VI-like ;-) # bindkey -M vicmd "^R" redo # bindkey -M vicmd "u" undo # bindkey -M vicmd "ga" what-cursor-position # bindkey -M viins "^R" redisplay # bindkey -M vicmd "^R" redisplay2 # bindkey "^L" clear-screen # bindkey -M vicmd "A" vi-add-eol # bindkey -M vicmd "a" vi-add-next # bindkey "^Xl" screenclearx # bindkey -M vicmd "c" vi-change # bindkey -M vicmd "C" vi-change-eol # bindkey -M vicmd "S" vi-change-whole-line # bindkey -M vicmd "i" vi-insert # bindkey -M vicmd "I" vi-insert-bol # bindkey -M vicmd "O" vi-open-line-above # bindkey -M vicmd "o" vi-open-line-below # bindkey -M vicmd "s" vi-substitute # bindkey -M vicmd "R" vi-replace # bindkey -M viins "" vi-cmd-mode # bindkey -M vicmd "g~" vi-oper-swap-case #-------------------------------------------------- #;; #esac zsh-lovers-0.8.3/zsh_people/strcat/zshrc0000644000175000017500000001175211103635725020253 0ustar alessioalessio# $Id: .zshrc,v 1.17 2003/07/03 18:51:22 dope Exp dope $ # # README! # # Filename : ~/.zshrc # Purpose : setup file for the shell 'zsh' # Author : Christian Schneider # Homepage : http://www.strcat.de/zsh/ # Latest release : # Needed files : > # # Structure of this file: # Lines starting with '#' are comments. # # Take a quick (haha) look on zshbuiltins(1), zshcompwid(1), # zshcompsys(1), zshcompctl(1), zshexpn(1), zshmisc(1), zshmodules(1), # zshoptions(1), zshparam(1), zshzle(1) or - for hardliner - # zshall(1). # ,----[ Overview (Zsh 4.2.1) ] # | [dope@dreckskind:~]% man -k zsh # | zsh (1) - the Z shell (330 lines) # | zshall (1) - the Z shell meta-man page (18348 lines) # | zshcompwid (1) - zsh completion widgets (1320 lines) # | zshcompsys (1) - zsh completion system (3432 lines) # | zshzftpsys (1) - zftp function front-end (858 lines) # | zshbuiltins (1) - zsh built-in commands (1716 lines) # | zshoptions (1) - zsh options (1254 lines) # | zshzle (1) - zsh command line editor (1320 lines) # | zshparam (1) - zsh parameters (1056 lines) # | zshmodules (1) - zsh loadable modules (2442 lines) # | zshmisc (1) - everything and then some (1782 lines) # | zshcompctl (1) - zsh programmable completion (858 lines) # | zshexpn (1) - zsh expansion and substitution (1914 lines) # `---- # # Zsh start up sequence: # 1) /etc/zshenv -> Always run for every zsh. (login + interactive + other) # 2) ~/.zshenv -> Usually run for every zsh. (login + interactive + other) # 3) /etc/zprofile -> Run for login shells. (login) # 4) ~/.zprofile -> Run for login shells. (login) # 5) /etc/zshrc -> Run for interactive shells. (login + interactive) # 6) ~/.zshrc -> Run for interactive shells. (login + interactive) # 7) /etc/zlogin -> Run for login shells. (login) # 8) ~/.zlogin -> Run for login shells. (login) # # Last modified: [ 2004-09-15 02:43:09 ] # # # THIS FILE IS NOT INTENDED TO BE USED AS /etc/zshrc, NOR WITHOUT # EDITING! # # This file is based on ideas of: # Sven Guckes...: # Michael Prokop: # Marijan Peh...: # Adam Spiers...: # # Tested and used unter {Net,Open}BSD, Slackware, Gentoo and LFS # with Zsh 4.0.7, 4.0.9, 4.1.1, 4.2.0 and 4.2.1 # Login shell? If you want to know, you can type the following which will # do nothing it's a login shell or warn you if not. #-------------------------------------------------- # if [[ ! -o login ]]; then # print "Warning: It is *not* a login-Shell\!" # fi #-------------------------------------------------- # -f true if file exists and is a regular file. See # | man zshmisc | less -p "^CONDITIONAL EXPRESSIONS" # for details. # # Test and then source exported variables. if [ -f ~/.zsh/zshexports ]; then source ~/.zsh/zshexports else print "Note: ~/.zsh/zshexports is unavailable." fi # painless is my "what-happend-when" - box (for debugging and so on) if [ ${HOSTNAME} = painless ] && [ -e ~/.zsh/zshdevel ]; then source ~/.zsh/zshdevel fi # Test and then source some options if [ -f ~/.zsh/zshoptions ]; then source ~/.zsh/zshoptions else print "Note: ~/.zsh/zshoptions is unavailable." fi # Test and then source alias definitions. if [ -f ~/.zsh/zshaliases ]; then source ~/.zsh/zshaliases else print "Note: ~/.zsh/zshaliases is unavailable." fi # Test and then source the functions. if [ -f ~/.zsh/zshfunctions ]; then source ~/.zsh/zshfunctions else print "Note: ~/.zsh/zshfunctions is unavailable." fi # Test and then source the lineeditor if [ -f ~/.zsh/zshzle ]; then source ~/.zsh/zshzle else print "Note: ~/.zsh/zshzle is unavailable." fi # Test and then source the "Statusbar-Functions" #-------------------------------------------------- # if [ -f ~/.zsh/zshstatusbar ];then # source ~/.zsh/zshstatusbar # else # print "Note: ~/.zsh/zshstatusbar is unavailable." # fi #-------------------------------------------------- # Test and then source the keybindings if [ -f ~/.zsh/zshbindings ]; then source ~/.zsh/zshbindings else print "Note: ~/.zsh/zshbindings is not available." fi # Test and then source the completionsystem if [ -f ~/.zsh/zshcompctl ]; then source ~/.zsh/zshcompctl else print "Note: ~/.zsh/zshcompctl is unavailable." fi # Test and then source the zstyles if [ -f ~/.zsh/zshstyle ]; then source ~/.zsh/zshstyle else print "Note: ~/.zsh/zshstyle is unavailable." fi # Test and then source the wretched rest if [ -f ~/.zsh/zshmisc ]; then source ~/.zsh/zshmisc else print "Note: ~/.zsh/zshmisc is unavailable." fi zsh-lovers-0.8.3/zsh_people/grml/0000755000175000017500000000000011103635725016632 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/grml/keephack0000644000175000017500000000541311103635725020333 0ustar alessioalessio# Filename: /etc/zsh/keephack # Purpose: this file belongs to the zsh setup (see /etc/zsh/zshrc) # 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: Don Jn 27 23:38:57 CET 2005 [mika] ################################################################################ # save output in a variable for later use # Written by Bart Schaefer, for more details see: # http://www.zsh.org/cgi-bin/mla/wilma_hiliter/users/2004/msg00894.html ff. function keep { setopt localoptions nomarkdirs nonomatch nocshnullglob nullglob kept=() # Erase old value in case of error on next line kept=($~*) if [[ ! -t 0 ]]; then local line while read line; do kept+=( $line ) # += is a zsh 4.2+ feature done fi print -Rc - ${^kept%/}(T) } # use it via: # locate -i backup | grep -i thursday | keep # echo $kept # # or: # # patch < mypatch.diff # keep **/*.(orig|rej) # vim ${${kept:#*.orig}:r} # rm $kept alias keep='noglob keep' _insert_kept() { (( $#kept )) || return 1 local action zstyle -s :completion:$curcontext insert-kept action if [[ -n $action ]] then compstate[insert]=$action elif [[ $WIDGET = *expand* ]] then compstate[insert]=all fi if [[ $WIDGET = *expand* ]] then compadd -U ${(M)kept:#${~words[CURRENT]}} else compadd -a kept fi } # now bind it to keys and enable completition zle -C insert-kept-result complete-word _generic zle -C expand-kept-result complete-word _generic zstyle ':completion:*-kept-result:*' completer _insert_kept zstyle ':completion:insert-kept-result:*' menu yes select bindkey '^Xk' insert-kept-result bindkey '^XK' expand-kept-result # shift-K to get expansion # And the "_expand_word_and_keep" replacement for _expand_word: _expand_word_and_keep() { function compadd() { local -A args zparseopts -E -A args J: if [[ $args[-J] == all-expansions ]] then builtin compadd -A kept "$@" kept=( ${(Q)${(z)kept}} ) fi builtin compadd "$@" } # for older versions of zsh: local result _main_complete _expand result=$? unfunction compadd return result # versions >=4.2.1 understand this: # { _main_complete _expand } always { unfunction compadd } } # This line must come after "compinit" in startup: zle -C _expand_word complete-word _expand_word_and_keep # No bindkey needed, it's already ^Xe from _expand_word zstyle ':completion:*' insert-kept menu zmodload -i zsh/complist ## END OF FILE ################################################################# zsh-lovers-0.8.3/zsh_people/grml/zshrc0000644000175000017500000004616611103635725017723 0ustar alessioalessio# Frlename: zshrc # Purpose: config file for zsh (z shell) # 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: Die Mai 31 15:28:47 CEST 2005 [mika] ################################################################################ # This file is sourced only for interactive shells. It # should contain commands to set up aliases, functions, # options, key bindings, etc. # # Global Order: zshenv, zprofile, zshrc, zlogin ################################################################################ # {{{ check for version/system # check for versions (compatibility reasons) is4(){ if [[ $ZSH_VERSION == 4.* ]]; then return 0 else return 1 fi } # current release is42(){ if [[ $ZSH_VERSION == 4.<2->* ]]; then return 0 else return 1 fi } # grml specific stuff isgrml(){ if [ -f /etc/grml_version ] ; then return 0 else return 1 fi } isgrmlcd(){ if [ -f /etc/grml_cd ] ; then return 0 else return 1 fi } # change directory to home on first invocation of zsh # important for rungetty -> autologin # Thanks go to Bart Schaefer! isgrml && checkhome() { if [[ -z "$ALREADY_DID_CD_HOME" ]]; then export ALREADY_DID_CD_HOME=$HOME cd fi } # }}} # {{{ set some variables [[ -z "$EDITOR" ]] && EDITOR='vim' [[ -z "$SHELL" ]] && SHELL='/bin/zsh' [[ -f ~/.terminfo/m/mostlike ]] && MYLESS='LESS=C TERMINFO=~/.terminfo TERM=mostlike less' || MYLESS='less' eval `dircolors -b` # Search path for the cd comman # cdpath=(.. ~) # automatically remove duplicates from these arrays typeset -U path cdpath fpath manpath # }}} # {{{ keybindings if [[ "$TERM" != emacs ]]; then [[ -z "$terminfo[kdch1]" ]] || bindkey -M emacs "$terminfo[kdch1]" delete-char [[ -z "$terminfo[khome]" ]] || bindkey -M emacs "$terminfo[khome]" beginning-of-line [[ -z "$terminfo[kend]" ]] || bindkey -M emacs "$terminfo[kend]" end-of-line [[ -z "$terminfo[kdch1]" ]] || bindkey -M vicmd "$terminfo[kdch1]" vi-delete-char [[ -z "$terminfo[khome]" ]] || bindkey -M vicmd "$terminfo[khome]" vi-beginning-of-line [[ -z "$terminfo[kend]" ]] || bindkey -M vicmd "$terminfo[kend]" vi-end-of-line [[ -z "$terminfo[cuu1]" ]] || bindkey -M viins "$terminfo[cuu1]" vi-up-line-or-history [[ -z "$terminfo[cuf1]" ]] || bindkey -M viins "$terminfo[cuf1]" vi-forward-char [[ -z "$terminfo[kcuu1]" ]] || bindkey -M viins "$terminfo[kcuu1]" vi-up-line-or-history [[ -z "$terminfo[kcud1]" ]] || bindkey -M viins "$terminfo[kcud1]" vi-down-line-or-history [[ -z "$terminfo[kcuf1]" ]] || bindkey -M viins "$terminfo[kcuf1]" vi-forward-char [[ -z "$terminfo[kcub1]" ]] || bindkey -M viins "$terminfo[kcub1]" vi-backward-char # ncurses fogyatekos [[ "$terminfo[kcuu1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuu1]/O/[}" vi-up-line-or-history [[ "$terminfo[kcud1]" == "O"* ]] && bindkey -M viins "${terminfo[kcud1]/O/[}" vi-down-line-or-history [[ "$terminfo[kcuf1]" == "O"* ]] && bindkey -M viins "${terminfo[kcuf1]/O/[}" vi-forward-char [[ "$terminfo[kcub1]" == "O"* ]] && bindkey -M viins "${terminfo[kcub1]/O/[}" vi-backward-char [[ "$terminfo[khome]" == "O"* ]] && bindkey -M viins "${terminfo[khome]/O/[}" beginning-of-line [[ "$terminfo[kend]" == "O"* ]] && bindkey -M viins "${terminfo[kend]/O/[}" end-of-line [[ "$terminfo[khome]" == "O"* ]] && bindkey -M emacs "${terminfo[khome]/O/[}" beginning-of-line [[ "$terminfo[kend]" == "O"* ]] && bindkey -M emacs "${terminfo[kend]/O/[}" end-of-line fi ## keybindings (run 'bindkeys' for details, more details via man zshzle) # use emacs style per default bindkey -e # use vi style: # bindkey -v #if [[ "$TERM" == screen ]]; then bindkey '\e[1~' beginning-of-line # home bindkey '\e[4~' end-of-line # end bindkey "^[[A" up-line-or-search # cursor up bindkey "^[[B" down-line-or-search # - bindkey '^x' history-beginning-search-backward #fi # bindkey '\eq' push-line-or-edit # }}} # {{{ autoloading autoload -U zmv # who needs mmv or rename? autoload history-search-end alias run-help >&/dev/null && unalias run-help autoload run-help # use via 'esc-h' is4 && autoload -U compinit && compinit # completition system is4 && autoload -U zed # use ZLE editor to edit a file or function is4 && zmodload -i zsh/complist is4 && zmodload -i zsh/deltochar is4 && zmodload -i zsh/mathfunc # Autoload zsh modules when they are referenced is4 && zmodload -a zsh/stat stat is4 && zmodload -a zsh/zpty zpty is4 && zmodload -a zsh/zprof zprof is4 && zmodload -ap zsh/mapfile mapfile is4 && autoload -U insert-files && \ zle -N insert-files && \ bindkey "^Xf" insert-files # C-x-f bindkey ' ' magic-space # also do history expansion on space # press Esc-e for editing command line in $EDITOR or $VISUAL is4 && autoload -U edit-command-line && \ zle -N edit-command-line && \ bindkey '\ee' edit-command-line # press Esc-m for inserting last typed word again (thanks to caphuso!) insert-last-typed-word() { zle insert-last-word -- 0 -1 }; \ zle -N insert-last-typed-word; bindkey "\em" insert-last-typed-word # set command prediction from history, see 'man 1 zshcontrib' is4 && autoload -U predict-on && \ zle -N predict-on && \ zle -N predict-off && \ bindkey "^X^Z" predict-on && \ bindkey "^Z" predict-off # }}} # {{{ set some important options umask 022 # history: setopt append_history # append history list to the history file (important for multiple parallel zsh sessions!) is4 && setopt SHARE_HISTORY # import new commands from the history file also in other zsh-session setopt extended_history # save each command's beginning timestamp and the duration to the history file is4 && setopt histignorealldups # If a new command line being added to the history # list duplicates an older one, the older command is removed from the list setopt histignorespace # remove command lines from the history list when # the first character on the line is a space setopt histallowclobber # add `|' to output redirections in the history setopt auto_cd # if a command is issued that can't be executed as a normal command, # and the command is the name of a directory, perform the cd command to that directory setopt correct # try to correct the spelling if possible setopt extended_glob # in order to use #, ~ and ^ for filename generation # grep word *~(*.gz|*.bz|*.bz2|*.zip|*.Z) -> # -> searches for word not in compressed files # don't forget to quote '^', '~' and '#'! setopt NO_clobber # warning if file exists ('cat /dev/null > ~/.zshrc') setopt notify # report the status of backgrounds jobs immediately setopt hash_list_all # Whenever a command completion is attempted, make sure \ # the entire command path is hashed first. setopt completeinword # not just at the end # setopt nocheckjobs # don't warn me about bg processes when exiting setopt nohup # and don't kill them, either # setopt printexitvalue # alert me if something failed # setopt dvorak # with spelling correction, assume dvorak kb MAILCHECK=30 # mailchecks REPORTTIME=5 # report about cpu-/system-/user-time of command if running longer than 5 secondes watch=(notme root) # watch for everyone but me and root # }}} # {{{ history export ZSHDIR=$HOME/.zsh HISTFILE="$HOME/.zsh_history" HISTSIZE=500 SAVEHIST=1000 # useful for setopt append_history # }}} # {{{ set prompt #precmd () { setopt promptsubst; [[ -o interactive ]] && jobs -l; is4 && precmd () { RPROMPT="%(?..:()% ${SCREENTITLE}" } is4 && preexec () { # set screen window title if running in a screen # get the name of the program currently running if [[ "$TERM" == screen* ]]; then local CMD=${1[(wr)^(*=*|sudo|ssh|-*)]} echo -ne "\ek$CMD\e\\" fi # set the screen title to "zsh" when sitting at a command prompt: if [[ "$TERM" == screen* ]]; then SCREENTITLE=$'%{\ekzsh\e\\%}' else SCREENTITLE='' fi } EXITCODE="%(?..%?%1v )" local BLUE="%{%}" local RED="%{%}" local GREEN="%{%}" local CYAN="%{%}" local NO_COLOUR="%{%}" PS2='`%_> ' # secondary prompt, printed when the shell needs more information to complete a command. PS3='?# ' # selection prompt used within a select loop. PS4='+%N:%i:%_> ' # the execution trace prompt (setopt xtrace). default: '+%N:%i>' # only if $GRMLPROMPT is set (e.g. via GRMLPROMPT='1') use the extended prompt if ! [[ -z "$GRMLPROMPT" ]]; then PROMPT="${RED}${EXITCODE}${CYAN}[%j running job(s)] ${GREEN}{history#%!} ${RED}%(3L.+.) ${BLUE}%* %D ${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " else if (( EUID != 0 )); then PROMPT="${RED}${EXITCODE}${BLUE}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string else PROMPT="${BLUE}${EXITCODE}${RED}%n${NO_COLOUR}@%m %40<...<%B%~%b%<< %# " # primary prompt string fi fi # }}} # {{{ 'hash' some often used directories hash -d deb=/var/cache/apt/archives hash -d doc=/usr/share/doc hash -d linux=/lib/modules/$(command uname -r)/build/ hash -d log=/var/log hash -d slog=/var/log/syslog hash -d src=/usr/src hash -d templ=/usr/share/doc/grml-templates hash -d tt=/usr/share/doc/texttools-doc hash -d www=/var/www # }}} # {{{ some aliases alias la="ls -la --color=auto" alias ll="ls -l --color=auto" alias l="ls -lF --color=auto" alias ls="ls --color=auto" # people are used to it, so... alias cp='nocorrect cp' # no spelling correction on cp alias mkdir='nocorrect mkdir' # no spelling correction on mkdir alias mv='nocorrect mv' # no spelling correction on mv # debian stuff alias acs='apt-cache search' alias agi='apt-get install' alias acsh='apt-cache show' alias au='apt-get update' alias ag='apt-get upgrade' alias adg='apt-get dist-upgrade' alias ge='grep-excuses' alias dbp='dpkg-buildpackage' isgrmlcd && alias su='sudo su' # change to user root alias tlog='tail -f /var/log/syslog' # take a look at the syslog alias zshskel='source /etc/skel/.zshrc' # source skeleton zshrc # }}} # {{{ Use hard limits, except for a smaller stack and no core dumps unlimit limit stack 8192 limit core 0 # important for a live-cd-system limit -s # }}} # {{{ completion stuff # called later (via is4 && grmlcomp) # use 'zstyle' for getting current settings # press ^Xh (control-x h) for getting tags in context grmlcomp() { zstyle ':completion:*:processes' command 'ps -au$USER' # on processes completion complete all user processes zstyle ':completion:*:descriptions' format \ $'%{\e[0;31m%}completing %B%d%b%{\e[0m%}' # format on completion zstyle ':completion:*' verbose yes # provide verbose completion information zstyle ':completion:*:messages' format '%d' zstyle ':completion:*:warnings' format \ $'%{\e[0;31m%}No matches for:%{\e[0m%} %d' zstyle ':completion:*:matches' group 'yes' # separate matches into groups zstyle ':completion:*:options' description 'yes' # describe options in full zstyle ':completion:*:options' auto-description '%d' zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)' # activate color-completion(!) zstyle ':completion:*:default' list-colors ${(s.:.)LS_COLORS} ## correction # Ignore completion functions for commands you don't have: # zstyle ':completion:*:functions' ignored-patterns '_*' zstyle ':completion::(^approximate*):*:functions' ignored-patterns '_*' zstyle ':completion:*' completer _complete _correct _approximate zstyle ':completion:*:correct:*' insert-unambiguous true # zstyle ':completion:*:corrections' format '%B%d (errors: %e)%b' # zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}' zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}' zstyle ':completion:*:correct:*' original true zstyle ':completion:correct:' prompt 'correct to:' # allow one error for every three characters typed in approximate completer zstyle -e ':completion:*:approximate:' max-errors 'reply=( $((($#PREFIX+$#SUFFIX)/3 )) numeric )' # zstyle ':completion:*:correct:*' max-errors 2 numeric # match uppercase from lowercase zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' # command for process lists, the local web server details and host completion hosts=(`hostname` grml.org) zstyle '*' hosts $hosts zstyle ':completion:*:urls' local 'www' '/var/www/' 'public_html' # offer indexes before parameters in subscripts zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # insert all expansions for expand completer zstyle ':completion:*:expand:*' tag-order all-expansions # ignore duplicate entries zstyle ':completion:*:history-words' stop yes zstyle ':completion:*:history-words' remove-all-dups yes zstyle ':completion:*:history-words' list false zstyle ':completion:*:history-words' menu yes # filename suffixes to ignore during completion (except after rm command) # zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*?.(o|c~|old|pro|zwc)' '*~' # Don't complete backup files as executables zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # If there are more than 5 options, allow selecting from a menu with # arrows (case insensitive completion!). # zstyle ':completion:*-case' menu select=5 zstyle ':completion:*' menu select=5 # zstyle ':completion:*:*:kill:*' verbose no # zstyle ':completion:*:sudo:*' command-path /usr/local/sbin /usr/local/bin \ # /usr/sbin /usr/bin /sbin /bin /usr/X11R6/bin # caching [ -d $ZSHDIR/cache ] && zstyle ':completion:*' use-cache yes && \ zstyle ':completion::complete:*' cache-path $ZSHDIR/cache/ # use ~/.ssh/known_hosts for completion # local _myhosts # _myhosts=( ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*} ) # zstyle ':completion:*' hosts $_myhosts [ -f "$HOME/.ssh/known_hosts" ] && \ hosts=(${${${(f)"$(<$HOME/.ssh/known_hosts)"}%%\ *}%%,*}) && \ zstyle ':completion:*:hosts' hosts $hosts # simple completion for fbset (switch resolution on console) _fbmodes() { compadd 640x480-60 640x480-72 640x480-75 640x480-90 640x480-100 768x576-75 800x600-48-lace 800x600-56 800x600-60 800x600-70 800x600-72 800x600-75 800x600-90 800x600-100 1024x768-43-lace 1024x768-60 1024x768-70 1024x768-72 1024x768-75 1024x768-90 1024x768-100 1152x864-43-lace 1152x864-47-lace 1152x864-60 1152x864-70 1152x864-75 1152x864-80 1280x960-75-8 1280x960-75 1280x960-75-32 1280x1024-43-lace 1280x1024-47-lace 1280x1024-60 1280x1024-70 1280x1024-74 1280x1024-75 1600x1200-60 1600x1200-66 1600x1200-76 } compdef _fbmodes fbset # use generic completion system for programs not yet defined: compdef _gnu_generic tail head feh cp mv gpg df stow uname ipacsum fetchipac # Debian specific stuff # zstyle ':completion:*:*:lintian:*' file-patterns '*.deb' zstyle ':completion:*:*:linda:*' file-patterns '*.deb' _debian_rules() { words=(make -f debian/rules) _make } compdef _debian_rules debian/rules # type debian/rules inside a source package # see upgrade function in this file compdef _hosts upgrade } # }}} # {{{ grmlstuff grmlstuff() { # people should use 'grml-x'! if ! [ -r /etc/X11/xorg.conf ] ; then isgrmlcd && alias startx='echo -e "Please use the script \"grml-x\" for starting the X Window System.\n If you want to use startx anyway please call \"/usr/X11R6/bin/startx\"."; return -1' fi # load language settings - wrapper around the main script grml-lang(){ grml-setlang $* && zsh } _grml-lang() { compadd at de en ; } compdef _grml-lang grml-lang # _grml-x() { compadd fluxbox ion2 ion3 pekwm ratpoison twm wmi wmii ; } # compdef _grml-x grml-x _grml-x() { local arguments wm wm=(fluxbox ion2 ion3 pekwm pwm2 pwm3 ratpoison twm wmi wmii) arguments=( '-display:display for xserver:(7 8)' '-force[force creation of xconfig file]' '-help:display help' '-hsync:horizontal sync frequencies ():(28 `seq 30 5 95` 96)' '-mode:resolution-mode for xserver (x - e.g. 1024x768)]:(1920x1440 1600x1200 1400x1050 1280x102 4 1280x960 1024x768 800x600 640x480)' '-module:module for xserver :(`cd /usr/X11R6/lib/modules/drivers && ls *.o | sed 's/_drv.o//'`)' '-nostart:do not start X server' '-vsync:vertical sync frequencies ():(43 `seq 45 5 70` 72)' '-xserver:xserver used for creation of xconfig file:(XFree86 X.org)' ':window manager:($wm)' ) #'-vsync:use specified vsync (xx.0 - xx.0):(`seq -f '%g.0' 50 5 70`)' #'-hsync:use specified hsync (xx.0 - xx.0):(28.0 `seq -f '%g.0' 30 5 95` 96.0)' _arguments -s $arguments } compdef _grml-x grml-x grml-wallpaper() { Esetroot -scale /usr/share/grml/$* } _grml-wallpaper() { dirs=(. /usr/share/grml/) _description files expl 'set desktop wallpaper on grml system' _files "$expl[@]" -W dirs -g '*.{jpg,png}(-.)' } compdef _grml-wallpaper grml-wallpaper alias grml-version='cat /etc/grml_version' } # }}} # {{{ now run the functions isgrml && checkhome is4 && isgrml && grmlstuff is4 && grmlcomp # }}} # {{{ keephack [ -r /etc/zsh/keephack ] && is4 && source /etc/zsh/keephack # }}} # {{{ wonderful idea of using "e" glob qualifier by Peter Stephenson # You use it as follows: # $ NTREF=/reference/file # $ ls -l *(e:nt:) # This lists all the files in the current directory newer than the reference file. # You can also specify the reference file inline; note quotes: # $ ls -l *(e:'nt ~/.zshenv':) is4 && nt() { if [[ -n $1 ]]; then local NTREF=${~1} fi [[ $REPLY -nt $NTREF ]] } # }}} # shell functions {{{ setenv() { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" } # csh compatibility freload() { while (( $# )); do; unfunction $1; autoload -U $1; shift; done } manzsh() { man zshall | $MYLESS -p $1 ; } # use it e.g. via 'restart apache2' # for i in start restart stop reload ; # do # eval "$i() { /etc/init.d/\$1 $i ; }" # done for i in Start Restart Stop Reload ; do if [ UID != 0 ] ; then RUNASROOT=sudo fi eval "$i() { $RUNASROOT /etc/init.d/\$1 ${i:l} ; }" done # now the completion for this: # compdef "_files -W /etc/init.d/" Stop Start Reload Restart compctl -g "$(echo /etc/init.d/*(:t))" Start Restart Stop Reload # }}} # source another config file if present {{{ if [ -r /etc/zsh/zshrc.local ]; then source /etc/zsh/zshrc.local fi # }}} ## END OF FILE ################################################################# # vim:foldmethod=marker zsh-lovers-0.8.3/zsh_people/grml/.zshrc0000644000175000017500000005177311103635725020001 0ustar alessioalessio# Filename: .zshrc # Purpose: config file for zsh # 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: Son Jun 05 21:06:19 CEST 2005 [mika] ################################################################################ # See /etc/zsh/zshrc for some general settings ## variables {{{ # set terminal property (used e.g. by msgid-chooser) export COLORTERM="yes" # set default browser (( ${+BROWSER} )) || export BROWSER="w3m" (( ${+PAGER} )) || export PAGER="less" # }}} ## set options {{{ # Allow comments even in interactive shells i. e. # $ uname # This command prints system informations # zsh: bad pattern: # # $ setopt interactivecomments # $ uname # This command prints system informations # Linux # setopt interactivecomments # }}} # {{{ global aliases # These do not have to be at the beginning of the command line. # Avoid typing cd ../../ for going two dirs down and so on # Usage, e.g.: "$ cd ...' or just '$ ...' with 'setopt auto_cd' alias -g '...'='../..' alias -g '....'='../../..' # Usage is "$ somecommand C (this pipes it into 'wc -l'): alias -g BG='& exit' alias -g C='|wc -l' alias -g G='|grep' alias -g H='|head' alias -g Hl=' --help |& less -r' alias -g K='|keep' alias -g L='|less' alias -g M='|most' alias -g N='&>/dev/null' alias -g R='| tr A-z N-za-m' alias -g SL='| sort | less' alias -g S='| sort' alias -g T='|tail' alias -g V='| vim -' # }}} ## aliases {{{ # general alias da='du -sch' alias j='jobs -l' # alias u='translate -i' # translate # compile stuff alias CO="./configure" alias CH="./configure --help" # http://conkeror.mozdev.org/ alias conkeror='firefox -chrome chrome://conkeror/content' # arch/tla stuff alias ldiff='tla what-changed --diffs | less' alias tbp='tla-buildpackage' alias mirror='tla archive-mirror' alias commit='tla commit' alias merge='tla star-merge' # listing stuff alias dir="ls -lSrah" alias lad='ls -d .*(/)' # only show dot-directories alias lsa='ls -a .*(.)' # only show dot-files alias lss='ls -l *(s,S,t)' # only files with setgid/setuid/sticky flag alias lsl='ls -l *(@[1,10])' # only symlinks alias lsx='ls -l *(*[1,10])' # only executables alias lsw='ls -ld *(R,W,X.^ND/)' # world-{readable,writable,executable} files alias lsbig="ls -flh *(.OL[1,10])" # display the biggest files alias lsd='ls -d *(/)' # only show directories alias lse='ls -d *(/^F)' # only show empty directories alias lsnew="ls -rl *(D.om[1,10])" # display the newest files alias lsold="ls -rtlh *(D.om[1,10])" # display the oldest files alias lssmall="ls -Srl *(.oL[1,10])" # display the smallest files # chmod alias rw-='chmod 600' alias rwx='chmod 700' alias r--='chmod 644' alias r-x='chmod 755' # some useful aliases alias md='mkdir -p' # console stuff alias cmplayer='mplayer -vo fbdev' alias fbmplayer='mplayer -vo fbdev' alias fblinks='links2 -driver fb' # use colors when browsing man pages (if not using pinfo or PAGER=most) [ -d ~/.terminfo/ ] && alias man='TERMINFO=~/.terminfo/ LESS=C TERM=mostlike PAGER=less man' # }}} ## useful functions {{{ # functions without detailed explanation: agoogle() { $BROWSER "http://groups.google.com/groups?as_uauthors=$*" ; } bk() { cp -b ${1} ${1}_`date --iso-8601=m` } cdiff() { diff -crd "$*" | egrep -v "^Only in |^Binary files " } cl() { cd $1 && ls -a } # cd && ls cvsa() { cvs add $* && cvs com -m 'initial checkin' $* } cvsd () { cvs diff -N $* |& $PAGER } cvsl () { cvs log $* |& $PAGER } cvsq () { cvs -nq update } cvsr () { rcs2log $* | $PAGER } cvss () { cvs status -v $* } debbug () { $BROWSER "http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=$*" } disassemble(){ gcc -pipe -S -o - -O -g $* | as -aldh -o /dev/null } dwicti() { $BROWSER http://de.wiktionary.org/wiki/${(C)1// /_} } ewicti() { $BROWSER http://en.wiktionary.org/wiki/${(C)1// /_} } ggogle() { $BROWSER "http://groups.google.com/groups?q=$*" } google() { $BROWSER "http://www.google.com/search?&num=100&q=$*" } leo() { $BROWSER "http://dict.leo.org/?search=$*" } mdiff() { diff -udrP "$1" "$2" > diff.`date "+%Y-%m-%d"`."$1" } memusage(){ ps aux | awk '{if (NR > 1) print $5; if (NR > 2) print "+"} END { print "p" }' | dc } mggogle() { $BROWSER "http://groups.google.com/groups?selm=$*" } shtar() { gunzip -c $1 | tar -tf - -- | $PAGER } shtgz() { tar -ztf $1 | $PAGER } shzip() { unzip -l $1 | $PAGER } sig() { agrep -d '^-- $' "$*" ~/.Signature } udiff() { diff -urd $* | egrep -v "^Only in |^Binary files " } wikide() { $BROWSER http://de.wikipedia.org/wiki/"$*" } wikien() { $BROWSER http://en.wikipedia.org/wiki/"$*" } # debian upgrade upgrade () { if [ -z $1 ] ; then sudo apt-get update sudo apt-get -u upgrade else ssh $1 sudo apt-get update # ask before the upgrade local dummy ssh $1 sudo apt-get --no-act upgrade echo -n "Process the upgrade ?" read -q dummy if [[ $dummy == "y" ]] ; then ssh $1 sudo apt-get -u upgrade --yes fi fi } # make screenshot of current desktop (use 'import' from ImageMagic) sshot() { [[ ! -d ~/shots ]] && mkdir ~/shots #cd ~/shots ; sleep 5 ; import -window root -depth 8 -quality 80 `date "+%Y-%m-%d--%H:%M:%S"`.png cd ~/shots ; sleep 5; import -window root shot_`date --iso-8601=m`.jpg } # create pdf file from source code makereadable() { output=$1 shift a2ps --medium A4dj -E -o $output $* ps2pdf $output } # zsh with perl-regex - use it e.g. via: # regcheck '\s\d\.\d{3}\.\d{3} Euro' ' 1.000.000 Euro' regcheck() { zmodload -i zsh/pcre pcre_compile $1 && \ pcre_match $2 && echo "regex matches" || echo "regex does not match" } # list files which have been modified within the last x days new() { print -l *(m-$1) } # grep the history greph () { history 0 | grep $1 } alias grepc='grep --color=auto' alias GREP='grep -i --color=auto' # one blank line between each line man2() { PAGER='sed G | less' /usr/bin/man $* ; } # provide useful information on globbing H-Glob() { echo -e " / directories . plain files @ symbolic links = sockets p named pipes (FIFOs) * executable plain files (0100) % device files (character or block special) %b block special files %c character special files r owner-readable files (0400) w owner-writable files (0200) x owner-executable files (0100) A group-readable files (0040) I group-writable files (0020) E group-executable files (0010) R world-readable files (0004) W world-writable files (0002) X world-executable files (0001) s setuid files (04000) S setgid files (02000) t files with the sticky bit (01000) print *(m-1) # Dateien, die vor bis zu einem Tag modifiziert wurden. print *(a1) # Dateien, auf die vor einem Tag zugegriffen wurde. print *(@) # Nur Links print *(Lk+50) # Dateien die ueber 50 Kilobytes grosz sind print *(Lk-50) # Dateien die kleiner als 50 Kilobytes sind print **/*.c # Alle *.c - Dateien unterhalb von \$PWD print **/*.c~file.c # Alle *.c - Dateien, aber nicht 'file.c' print (foo|bar).* # Alle Dateien mit 'foo' und / oder 'bar' am Anfang print *~*.* # Nur Dateien ohne '.' in Namen chmod 644 *(.^x) # make all non-executable files publically readable print -l *(.c|.h) # Nur Dateien mit dem Suffix '.c' und / oder '.h' print **/*(g:users:) # Alle Dateien/Verzeichnisse der Gruppe >users< echo /proc/*/cwd(:h:t:s/self//) # Analog zu >ps ax | awk '{print $1}'<" } lcheck() { nm -go /usr/lib/lib*.a 2>/dev/null | grep ":[[:xdigit:]]\{8\} . .*$1"":[[:xdigit:]]\{8\} . .*$1" } # clean up directory purge() { FILES=(*~(N) .*~(N) \#*\#(N) *.o(N) a.out(N) *.core(N) *.cmo(N) *.cmi(N) .*.swp(N)) NBFILES=${#FILES} if [[ $NBFILES > 0 ]]; then print $FILES local ans echo -n "Remove this files? [y/n] " read -q ans if [[ $ans == "y" ]] then rm ${FILES} echo ">> $PWD purged, $NBFILES files removed" else echo "Ok. .. than not.." fi fi } # Translate DE<=>EN # 'translate' looks up fot a word in a file with language-to-language # translations (field separator should be " : "). A typical wordlist looks # like at follows: # | english-word : german-transmission # It's also only possible to translate english to german but not reciprocal. # Use the following oneliner to turn back the sort order: # $ awk -F ':' '{ print $2" : "$1" "$3 }' \ # /usr/local/lib/words/en-de.ISO-8859-1.vok > ~/.translate/de-en.ISO-8859-1.vok trans() { case "$1" in -[dD]*) translate -l de-en $2 ;; -[eE]*) translate -l en-de $2 ;; *) echo "Usage: $0 { -D | -E }" echo " -D == German to English" echo " -E == English to German" esac } # Some quick Perl-hacks aka /useful/ oneliner # bew() { perl -le 'print unpack "B*","'$1'"' } # web() { perl -le 'print pack "B*","'$1'"' } # hew() { perl -le 'print unpack "H*","'$1'"' } # weh() { perl -le 'print pack "H*","'$1'"' } # pversion() { perl -M$1 -le "print $1->VERSION" } # i. e."pversion LWP -> 5.79" # getlinks () { perl -ne 'while ( m/"((www|ftp|http):\/\/.*?)"/gc ) { print $1, "\n"; }' $* } # gethrefs () { perl -ne 'while ( m/href="([^"]*)"/gc ) { print $1, "\n"; }' $* } # getanames () { perl -ne 'while ( m/a name="([^"]*)"/gc ) { print $1, "\n"; }' $* } # getforms () { perl -ne 'while ( m:(\):gic ) { print $1, "\n"; }' $* } # getstrings () { perl -ne 'while ( m/"(.*?)"/gc ) { print $1, "\n"; }' $*} # getanchors () { perl -ne 'while ( m/([^\n]+)/gc ) { print $1, "\n"; }' $* } # showINC () { perl -e 'for (@INC) { printf "%d %s\n", $i++, $_ }' } # vimpm () { vim `perldoc -l $1 | sed -e 's/pod$/pm/'` } # vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" } # plap foo -- list all occurrences of program in the current PATH plap() { if [[ $# = 0 ]] then echo "Usage: $0 program" echo "Example: $0 zsh" echo "Lists all occurrences of program in the current PATH." else ls -l ${^path}/*$1*(*N) fi } # Found in the mailinglistarchive from Zsh (IIRC ~1996) selhist() { emulate -L zsh local TAB=$'\t'; (( $# < 1 )) && { echo "Usage: $0 command" return 1 }; cmd=(${(f)"$(grep -w $1 $HISTFILE | sort | uniq | pr -tn)"}) print -l $cmd | less -F echo -n "enter number of desired command [1 - $(( ${#cmd[@]} - 1 ))]: " local answer read answer print -z "${cmd[$answer]#*$TAB}" } # mkdir && cd mcd() { mkdir -p "$@"; cd "$@" } # mkdir && cd # cd && ls cl() { cd $1 && ls -a } # Use vim to convert plaintext to HTML 2html() { vim -u NONE -n -c ':syntax on' -c ':so $VIMRUNTIME/syntax/2html.vim' -c ':wqa' $1 > /dev/null 2> /dev/null } # Usage: simple-extract # Description: extracts archived files (maybe) simple-extract () { if [[ -f $1 ]] then case $1 in *.tar.bz2) bzip2 -v -d $1 ;; *.tar.gz) tar -xvzf $1 ;; *.rar) unrar $1 ;; *.deb) ar -x $1 ;; *.bz2) bzip2 -d $1 ;; *.lzh) lha x $1 ;; *.gz) gunzip -d $1 ;; *.tar) tar -xvf $1 ;; *.tgz) gunzip -d $1 ;; *.tbz2) tar -jxvf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *) echo "'$1' Error. Please go away" ;; esac else echo "'$1' is not a valid file" fi } # Usage: smartcompress () # Description: compresses files or a directory. Defaults to tar.gz smartcompress() { if [ $2 ]; then case $2 in tgz | tar.gz) tar -zcvf$1.$2 $1 ;; tbz2 | tar.bz2) tar -jcvf$1.$2 $1 ;; tar.Z) tar -Zcvf$1.$2 $1 ;; tar) tar -cvf$1.$2 $1 ;; gz | gzip) gzip $1 ;; bz2 | bzip2) bzip2 $1 ;; *) echo "Error: $2 is not a valid compression type" ;; esac else smartcompress $1 tar.gz fi } # Usage: show-archive # Description: view archive without unpack show-archive() { if [[ -f $1 ]] then case $1 in *.tar.gz) gunzip -c $1 | tar -tf - -- ;; *.tar) tar -tf $1 ;; *.tgz) tar -ztf $1 ;; *.zip) unzip -l $1 ;; *.bz2) bzless $1 ;; *) echo "'$1' Error. Please go away" ;; esac else echo "'$1' is not a valid archive" fi } folsym() { if [[ -e $1 || -h $1 ]]; then file=$1 else file=`which $1` fi if [[ -e $file || -L $file ]]; then if [[ -L $file ]]; then echo `ls -ld $file | perl -ane 'print $F[7]'` '->' folsym `perl -le '$file = $ARGV[0]; $dest = readlink $file; if ($dest !~ m{^/}) { $file =~ s{(/?)[^/]*$}{$1$dest}; } else { $file = $dest; } $file =~ s{/{2,}}{/}g; while ($file =~ s{[^/]+/\.\./}{}) { ; } $file =~ s{^(/\.\.)+}{}; print $file' $file` else ls -d $file fi else echo $file fi } # Use 'view' to read manpages, if u want colors, regex - search, ... # like vi(m). # It's shameless stolen from vman() { man $* | col -b | view -c 'set ft=man nomod nolist' - } # search for various types or README file in dir and display them in $PAGER # function readme() { $PAGER -- (#ia3)readme* } readme() { local files files=(./(#i)*(read*me|lue*m(in|)ut)*(ND)) if (($#files)) then $PAGER $files else print 'No README files.' fi } # find all suid files in $PATH suidfind() { ls -latg $path | grep '^...s' } # See above but this is /better/ ... anywise .. # Note: Add $USER and 'find' with "NOPASSWD" in your /etc/sudoers or run it # as root (UID == 0) findsuid() { if [ UID != 0 ] ; then print 'Not running as root. Trying to run via sudo...' RUNASROOT=sudo fi print 'Output will be written to ~/suid_* ...' $RUNASROOT find / -type f \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suidfiles.`date "+%Y-%m-%d"`.out 2>&1 $RUNASROOT find / -type d \( -perm -4000 -o -perm -2000 \) -ls > ~/suid_suiddirs.`date "+%Y-%m-%d"`.out 2>&1 $RUNASROOT find / -type f \( -perm -2 -o -perm -20 \) -ls > ~/suid_writefiles.`date "+%Y-%m-%d"`.out 2>&1 $RUNASROOT find / -type d \( -perm -2 -o -perm -20 \) -ls > ~/suid_writedirs.`date "+%Y-%m-%d"`.out 2>&1 print 'Finished' } # Reload functions. refunc() { for func in $argv do unfunction $func autoload $func done } # a small check to see which DIR is located on which server/partition. # stolen and modified from Sven's zshrc.forall dirspace() { for dir in $path; do (cd $dir; echo "-<$dir>"; du -shx .; echo); done } # $ show_print `cat /etc/passwd` slow_print() { for argument in "${@}" do for ((i = 1; i <= ${#1} ;i++)) { print -n "${argument[i]}" sleep 0.08 } print -n " " done print "" } status() { print "" print "Date..: "$(date "+%Y-%m-%d %H:%M:%S")"" print "Shell.: Zsh $ZSH_VERSION (PID = $$, $SHLVL nests)" print "Term..: $TTY ($TERM), $BAUD bauds, $COLUMNS x $LINES cars" print "Login.: $LOGNAME (UID = $EUID) on $HOST" print "System: $(cat /etc/[A-Za-z]*[_-][rv]e[lr]*)" print "Uptime:$(uptime)" print "" } audiorip() { mkdir -p ~/ripps cd ~/ripps cdrdao read-cd --device $DEVICE --driver generic-mmc audiocd.toc cdrdao read-cddb --device $DEVICE --driver generic-mmc audiocd.toc echo " * Would you like to burn the cd now? (yes/no)" read input if [ "$input" = "yes" ]; then echo " ! Burning Audio CD" audioburn echo " * done." else echo " ! Invalid response." fi } audioburn() { cd ~/ripps cdrdao write --device $DEVICE --driver generic-mmc audiocd.toc echo " * Should I remove the temporary files? (yes/no)" read input if [ "$input" = "yes" ]; then echo " ! Removing Temporary Files." cd ~ rm -rf ~/ripps echo " * done." else echo " ! Invalid response." fi } mkaudiocd() { cd ~/ripps for i in *.[Mm][Pp]3; do mv "$i" `echo $i | tr '[A-Z]' '[a-z]'`; done for i in *.mp3; do mv "$i" `echo $i | tr ' ' '_'`; done for i in *.mp3; do mpg123 -w `basename $i .mp3`.wav $i; done normalize -m *.wav for i in *.wav; do sox $i.wav -r 44100 $i.wav resample; done } mkiso() { echo " * Volume name " read volume echo " * ISO Name (ie. tmp.iso)" read iso echo " * Directory or File" read files mkisofs -o ~/$iso -A $volume -allow-multidot -J -R -iso-level 3 -V $volume -R $files } # generate thumbnails ;) genthumbs () { rm -rf thumb-* index.html echo " Images " > index.html for f in *.(gif|jpeg|jpg|png) do convert -size 100x200 "$f" -resize 100x200 thumb-"$f" echo " " >> index.html done echo " " >> index.html } # unset all limits (see zshbuiltins(1) /ulimit for details) allulimit() { ulimit -c unlimited ulimit -d unlimited ulimit -f unlimited ulimit -l unlimited ulimit -n unlimited ulimit -s unlimited ulimit -t unlimited } # ogg2mp3 with bitrate of 192 ogg2mp3_192() { oggdec -o - ${1} | lame -b 192 - ${1:r}.mp3 } # }}} # some useful commands often hard to remember - let's grep for them {{{ # enable jackd: # /usr/bin/jackd -dalsa -dhw:0 -r48000 -p1024 -n2 # now play audio file: # alsaplayer -o jack foobar.mp3 # send files via netcat # on sending side: # send() {j=$*; tar cpz ${j/%${!#}/}|nc -w 1 ${!#} 51330;} # send dir* $HOST # alias receive='nc -vlp 51330 | tar xzvp' # debian stuff: # dh_make -e foo@localhost -f $1 # dpkg-buildpackage -rfakeroot # lintian *.deb # dpkg-scanpackages ./ /dev/null | gzip > Packages.gz # dpkg-scansources . | gzip > Sources.gz # grep-dctrl --field Maintainer $* /var/lib/apt/lists/* # other stuff: # convert -geometry 200x200 -interlace LINE -verbose # ldapsearch -x -b "OU=Bedienstete,O=tug" -h ldap.tugraz.at sn=$1 # ps -ao user,pcpu,start,command # gpg --keyserver blackhole.pca.dfn.de --recv-keys # xterm -bg black -fg yellow -fn -misc-fixed-medium-r-normal--14-140-75-75-c-90-iso8859-15 -ah # nc -vz $1 1-1024 # portscan via netcat # wget --mirror --no-parent --convert-links # pal -d `date +%d` # autoload -U tetris; zle -N tetris; bindkey '...' ; echo "press ... for playing tennis" # }}} ## END OF FILE ################################################################# # vim:foldmethod=marker zsh-lovers-0.8.3/zsh_people/zyrnix/0000755000175000017500000000000011103635725017234 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/zyrnix/zshrc0000644000175000017500000001371711103635725020321 0ustar alessioalessio#!/usr/bin/zsh # -*- mode: shell-script -*- # In Emacs, use M-x folding. Quick reference: # # Show all sections' text 'C-c @ C-o' # Hide all sections' text 'C-c @ C-w' # Show a section's text 'C-c @ C-s' # Hide a section's text 'C-c @ C-x' # {{{ zstyle completions ## These next 2 lines are from compinstall. zstyle ':completion:*' completer _expand _complete _correct _approximate zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*:options' description 'yes' zstyle ':completion:*:options' auto-description '%d' ## All of the following zstyles are from: ## (http://www.zshwiki.org/cgi-bin/wiki.pl?ZshCompletionTips) ### Use cache ## Some functions, like _apt and _dpkg, are very slow. You can use a cache in ## order to proxy the list of results (like the list of available debian ## packages) zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zsh/cache ## Prevent CVS files/directories from being completed zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' # Allow zsh to complete on hostnames found in common config files. local _myhosts; _myhosts=( ${${=${${(f)"$(cat {/etc/ssh_,~/.ssh/known_}hosts(|2)(N) /dev/null)"}%%[# ]*}//,/ }:#\!*} ${=${(f)"$(cat /etc/hosts(|)(N) <<(ypcat hosts 2>/dev/null))"}%%\#*} ); zstyle ':completion:*' hosts $_myhosts; ## With commands like `rm' it's annoying if one gets offered the same filename ## again even if it is already on the command line. To avoid that: # zstyle ':completion:*:rm:*' ignore-line yes ## Load the completion module. zstyle :compinstall filename '/home/zyrnix/.zshrc' autoload -U compinit compinit # }}} # {{{ PS1 prompt # Enable this for a nice interactive way to get a decent prompt. # autoload -U promptinit # promptinit # prompt adam1 ## At the command line, you can do this to see the various prompts: # prompt -l # display all # prompt -h # help # This is based on adam1 from promptinit. I altered it so it includes a # history number and return code. It does not truncate the path. # # It looks like this (with colors): # 384 zyrnix@server ~/tmp % # PS1=$'%h %{\e[22;44m%}%n@%m%{\e[00m%} %{\e[01;36m%}%0~%{\e[01;37m%} %# %{\e[00m%}' # }}} # {{{ xterm tweaks ## FAQ 3.5 How do I get the meta key to work on my xterm? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l21 [[ $TERM = "xterm" ]] && stty pass8 && bindkey -me ## FAQ 3.6 How do I automatically display the directory in my xterm title bar? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l22 ## ## I modified the xterm version because it was too plain. chpwd() { [[ -t 1 ]] || return case $TERM in sun-cmd) print -Pn "\e]l%~\e\\" ;; *xterm*|rxvt|(dt|k|E)term) print -Pn "\e]2;% [zsh $ZSH_VERSION] %n@%m: %~\a" ;; esac } # }}} # {{{ Zsh FAQ entries ## FAQ 3.18: Why does zsh kill off all my background jobs when I logout? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l34 # setopt nohup # ## Or start jobs with &! instead of & to disown them ## (disown = don't kill at logout) ## FAQ 3.21: Why is my history not being saved? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l37 ## ## I modified this to allow for 2,000 entries instead of 200. HISTSIZE=2000 HISTFILE=~/.zsh_history SAVEHIST=2000 ## FAQ 3.23: How do I prevent the prompt overwriting output when there is no ## newline? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l39 ## ## According to the manual, this prevents multi-line editing because the editor ## does not know where the start of the line appears. ## # unsetopt prompt_cr # }}} # {{{ General setopts ## Don't clobber files by default. Force myself to use >! or >| and >>! or >>| ## to clobber the file unsetopt clobber ## I use dvorak, so correct spelling mistakes that a dvorak user would make setopt dvorak ## Extended history. ## Instead of just a list of commands, append it with this: ## `:::'. setopt extended_history ## Automatically append directories to the push/pop list setopt auto_pushd ## Maximum size of the directory stack DIRSTACKSIZE=50 ## Allow for 10MB max coredumps limit coredumpsize 10m # }}} # {{{ Emacs compatibility ## FAQ 3.10: Why does zsh not work in an Emacs shell mode any more? ## http://zsh.sourceforge.net/FAQ/zshfaq03.html#l26 [[ $EMACS = t ]] && unsetopt zle # Enable emacs keymap bindkey -e # From resolve (http://repose.cx/conf/.zshrc) WORDCHARS='' # Emacs compatible M-b and M-f bindkey "\C-w" kill-region # Emacs C-w command support # }}} # {{{ Watch logins ## Watch for logins and logouts from all accounts including mine. watch=all ## Watch every 30 seconds logcheck=30 ## Change the watch format to something more informative # %n = username, %M = hostname, %a = action, %l = tty, %T = time, # %W = date WATCHFMT="%n from %M has %a tty%l at %T %W" # }}} # {{{ Aliases ## Aliases alias ls="ls --color=auto" alias targx="tar -zxvf" alias targc="tar -cxvf" alias tarbx="tar --bzip2 -xvf" alias tarbc="tar --bzip2 -cvf" # }}} # {{{ Setopts from Resolve ## From resolve's config (http://repose.cx/conf/.zshrc) setopt extended_glob # Weird & wacky pattern matching - yay zsh! setopt complete_in_word # Not just at the end setopt always_to_end # When complete from middle, move cursor setopt correct # Spelling correction setopt hist_verify # When using ! cmds, confirm first setopt interactive_comments # Escape commands so I can use them later setopt print_exit_value # Alert me if something's failed ## Anti-aliasing in the two toolkits ## Use this type of assignment to set the variable if not already set (( ${+QT_XFT} )) || export QT_XFT=1 (( ${+GDK_USE_XFT} )) || export GDK_USE_XFT=1 # }}} # {{{ GNU Arch tagline - Do not edit this section # To insert a uuid with Linux kernel 2.3.16 or newer, do: # echo -e "\n# arch-tag: `cat /proc/sys/kernel/random/uuid`\n" >> file # # arch-tag: 223a17f5-7c19-4f32-8fa7-0c14054128be # }}} zsh-lovers-0.8.3/zsh_people/thomas_koehler/0000755000175000017500000000000011103635725020675 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/thomas_koehler/uhr.zsh0000644000175000017500000000104111103635725022215 0ustar alessioalessio# a watch for the prompt # I have a multiline prompt, so beware! # you may need to adjust the parameters trap CRON ALRM TMOUT=1 CRON() { STRING=$(date) # to right adjust the date: How many columns does our terminal # have? Reduce by the length of $STRING+5 COL=$[COLUMNS-5] COL=$[COL-$#STRING] # Store the current cursor position; jump up two lines; jump to # columns $COL echo -n "7[$COL;G" echo -n "" # echo the date echo -n "-- $STRING --" # restore cursor position echo -n "8" } zsh-lovers-0.8.3/zsh_people/thomas_koehler/zshrc0000644000175000017500000004105411103635725021755 0ustar alessioalessio### OPTIONS setopt completeinword setopt no_always_last_prompt setopt rm_star_silent setopt automenu setopt extended_glob setopt autopushd setopt nobgnice setopt hist_ignore_all_dups setopt sharehistory unsetopt promptcr ### path history DIRSTACKSIZE=15 setopt autopushd pushdminus pushdsilent pushdtohome setopt autolist setopt extendedglob ### ALIASES alias dh="dirs -v" # I used to use xv to often... alias xv="gqview -l" alias run-help=man alias lterm="export TERM=linux" alias ll="ls -al --color" alias ls="ls --color" alias l="ls -a --color" #alias ll="/bin/ls -al" #alias ls="/bin/ls" #alias l="/bin/ls -a" # export LYNX_CFG=~/.lynxrc alias lynx="noglob command lynx -cfg=~/.lynxrc" ### ENVIRONMENT VARIABLES LC_COLLATE=C ; export LC_COLLATE MAILCHECK=86400 # export LANG=de_DE@euro export LANG=de_DE export LC_MESSAGES=en_US export ORACLE_HOME=/home/oracle/OraHome1 # export ORACLE_SID=whatever COLORX="" COLOR0="" COLOR1="" COLOR2="" COLOR3="" COLOR4="" COLOR5="" COLOR6="" COLOR7="" COLOR8="" COLOR9="" COLOR10="" COLOROFF="" red='%{%}' white_on_blue='%{%}' green='%{%}' yellow='%{%}' blue='%{%}' magenta='%{%}' cyan='%{%}' nocolor='%{%}' ZDOTDIR="$HOME/.zsh" if [ "$TERM" = "xterm-debian" ] ; then chpwd () { echo -n "]2;$LOGNAME@$(hostname): $(pwd)" } fi PROMPT2='%_> ' RPROMPT='%{%}%1v%{%}' export HISTFILE=~/.zshhistory export HISTSIZE=500 export SAVEHIST=500 export NNTPSERVER=picard.franken.de ### export PATH="/usr/lib/compilercache:$JAVA_HOME/bin:/home/tkoehler/bin:/usr/local/bin/X11:/usr/local/bin:/bin:/usr/X11R6/bin:/usr/bin:/usr/sbin:/usr/bin/X11:/local/bin:/usr/games:/usr/lib/mutt:${ORACLE_HOME}/bin:/usr/lib/ICAClient:/usr/local/sap/SAPGUI/6.30/bin" VIM=/usr/local/share/vim echo ~VIM >/dev/null # alias JAVA_HOME="export JAVA_HOME=/usr/lib/jdk1.1/" export JAVA_HOME=/usr/local/java/j2sdk1.4.2_01 ## SAP #### PLATINHOME="/usr/local/sap/SAPGUI/6.30/" PLATIN_JAVA="/usr/local/java/j2sdk1.4.2_01/bin/java" PLATIN_JAVA_VER=1.4.2 ### export PLATINHOME PLATIN_JAVA PLATIN_JAVA_VER export PLATIN_JAVA PLATIN_JAVA_VER export EDITOR=/usr/local/bin/vim export SLANG_EDITOR="/usr/local/bin/vim %s" export MOZILLA_HOME="/usr/local/netscape" export QTDIR PATH MANPATH LD_LIBRARY_PATH LIBRARY_PATH export CPLUS_INCLUDE_PATH export IRCNAME="http://jeanluc-picard.de/irc.html" export PAGER=less export LD_LIBRARY_PATH=/home/tkoehler/lib:/home/oracle/OraHome1/lib/ # export LESS export ZLS_COLOURS ZLS_COLOURS="no=36;40:fi=36;40:di=32;40:ln=33;40:pi=31;40:so=22;40:bd=44;37:cd=44;37:ex=35;40:mi=36;40:lc=\e[:rc=m:mi=37;41" LS_COLORS=$ZLS_COLOURS export LS_COLORS #### mu mal noch rausfinden, warum die hier in ganz neuen zsh-Versionen nicht #### mehr so tun... export ZLS_COLOURS # no 0 for normal text (i.e. when displaying something # other than a matched file) # fi 0 for regular files # di 32 for directories # ln 36 for symbolic links # pi 31 for named pipes (FIFOs) # so 33 for sockets # bd 44;37 # for block devices # cd 44;37 # for character devices # ex 35 for executable files # mi none # for non-existent file (default is the value defined # for fi) # lc \e[ for the left code (see below) # rc m for the right code # ec none # for the end code MANPATH=/usr/man:/usr/share/man:/usr/X11R6/man:/usr/local/man ### cool export REPORTTIME=3 ### FUNCTIONS x() { a=$1 ; shift ; echo "$@" | xargs $a } prepare_ssh() { if [ -f $HOME/.ssh/agent_var ] ; then . $HOME/.ssh/agent_var else SSH_AGENT_PID=1 fi if kill -0 $SSH_AGENT_PID ; then : else eval `ssh-agent` ssh-add $HOME/.ssh/id_rsa touch $HOME/.ssh/agent_var ; chmod 600 $HOME/.ssh/agent_var echo "export SSH_AGENT_PID=$SSH_AGENT_PID" > $HOME/.ssh/agent_var echo "export SSH_AUTH_SOCK=$SSH_AUTH_SOCK" >> $HOME/.ssh/agent_var fi } if [ -z "$SSH_AGENT_PID" ] ; then prepare_ssh fi archive_this_dir() { if [ -z "$1" ] ; then echo "Usage: archive_this_dir LABEL" return 1 fi ARCHIVE_TO_CD $1 $PWD 0xEA8CFEDE } archive_this_dir_as_pics() { if [ -z "$1" ] ; then echo "Usage: archive_this_dir_as_pics LABEL" return 1 fi ARCHIVE_PICTURES_TO_CD $1 $PWD 0xEA8CFEDE } gpg_recv_key() { gpg --keyserver wwwkeys.pgp.net --keyserver-options honor-http-proxy --recv-keys $@ } ### highlight current line's {} pairs ### yes, this functions doesn't work correct in all situations, ### but it's a nice thing highlight() { line=$* i=0 j=0 strlen=$#line while [ $i -le $strlen ] ; do i=$[i+1] x=$line[$i] case $x in (\{) j=$[j+1] ; eval print -n $"COLOR$j"$"x"$"COLOROFF" ;; (\}) eval print -n $"COLOR$j"$"x"$"COLOROFF" ; j=$[j-1] ;; (*) print -n $x ;; esac done print $COLOROFF } NEW() { vim -c "se tw=70" `date +%Y%m%d-%R`.txt } ### set xterm's icon text, its titletext, or both at once seticontext() { print "\033]1;$@\007" } settitletext() { print "\033]2;$@\007" } settitle() { print "\033]0;$@\007" } ### a function for setting up proxy settings set_proxy() { export http_proxy="http://proxy:3128" export https_proxy="http://proxy:3128" export ftp_proxy="http://proxy:3128" } namedir () { eval "$1=$PWD" ; eval "echo ~$1" } ### run help on a vim help topic vimhelp () { vim -c "help $1" -c on -c "au! VimEnter *" } gvimhelp () { gvim -c "help $1" -c on -c "au! VimEnter *" } acroread() { LANG=C command acroread $@ } galeon() { LANG=de_DE command galeon $@ } aumix() { LANG=en command aumix $@ } function startx() { command startx "$@" >& ~/.startx.out } function precmd { # echo -n "]2;$LOGNAME@$(hostname): $(pwd)\a" # if [ "$TERM" = "screen-w" ] ; then # perl ~/bin/screen_hardstatus.pl $MYTTY $USER $HOST &! # PROMPT=$(perl ~/bin/screen_hardstatus.pl " " $USER $HOST $ZSH_VERSION) apm=$(apm|sed -e 's/%/%%/') PROMPT="${green}$(uptime) $nocolor ${white_on_blue}--INSERT--${cyan} zsh version: $ZSH_VERSION $yellow Return Code: %? $nocolor $blue%h $red%n@%m ${yellow}TTY:%l$cyan - $apm $cyan%~>$nocolor " # PROMPT="$PROMPT$WHO\n" # fi case "$jobstates" in (*running*suspended*) psvar[1]="There are running and stopped jobs.";; (*suspended*running*) psvar[1]="There are running and stopped jobs.";; (*suspended*) psvar[1]="There are stopped jobs.";; (*running*) psvar[1]="There are running jobs.";; (*) psvar[1]="";; esac } # pipe jobs to less jless() { typeset -x -A tmpstates for i in $jobstates[(I)*] do tmpstates[$i]=$jobstates[$i] done for i in $tmpstates[(I)*] do echo "[$i]\t$tmpstates[$i]" done | sort -n | less unset tmpstates } function dmalloc { eval `command dmalloc -b $*` } ### KEY BINDINGS # vi keybindings bindkey -v bindkey "" history-beginning-search-backward bindkey "" history-beginning-search-forward bindkey "" forward-char bindkey "" backward-char bindkey "^Xq" push-line bindkey "^Xr" history-incremental-search-backward bindkey "^Xs" history-incremental-search-forward bindkey "^X_" insert-last-word bindkey "^Xa" accept-and-hold bindkey "^X^H" run-help bindkey "^Xh" _complete_help bindkey "^I" expand-or-complete bindkey "^E" expand-word bindkey "^N" menu-complete bindkey "^P" reverse-menu-complete bindkey -M vicmd "^R" redo bindkey -M vicmd "u" undo bindkey -M vicmd "ga" what-cursor-position ### VI MODE EXTENSIONS redisplay() { builtin zle .redisplay # L=$[LINES - 1] # echo -n "\033[$L;0;H" ( true ; show_mode "INSERT") &! } redisplay2() { builtin zle .redisplay # L=$[LINES - 1] # echo -n "\033[$L;0;H" (true ; show_mode "NORMAL") &! } zle -N redisplay zle -N redisplay2 bindkey -M viins "^X^R" redisplay bindkey -M vicmd "^X^R" redisplay2 screenclear () { echo -n "\033[2J\033[400H" #repeat $[LINES - 2] echo builtin zle .redisplay # builtin zle .clear-screen (true ; show_mode "INSERT") &! } zle -N screenclear bindkey " " screenclear screenclearx () { # print -n '7' repeat 2 print local MYLINE="$LBUFFER$RBUFFER" highlight $MYLINE repeat 4 print builtin zle redisplay # print -n '8' # print "${COLORX}Hit Enter to continue${COLOROFF}" # read -k } zle -N screenclearx bindkey "^Xl" screenclearx #bindkey "^L" screenclearx show_mode() { local COL local x COL=$[COLUMNS-3] COL=$[COL-$#1] #x=$(wc -l $PREBUFFER) x=$(echo $PREBUFFER | wc -l ) x=$[x+1] # echo -n "7[0;$COL;H" echo -n "7[$x;A" echo -n "" # c='`' # echo -n "7[0$c" echo -n "--$1--" echo -n "8" } ### vi-add-eol (unbound) (A) (unbound) ### Move to the end of the line and enter insert mode. vi-add-eol() { show_mode "INSERT" builtin zle .vi-add-eol } zle -N vi-add-eol bindkey -M vicmd "A" vi-add-eol ### vi-add-next (unbound) (a) (unbound) ### Enter insert mode after the current cursor posi ### tion, without changing lines. vi-add-next() { show_mode "INSERT" builtin zle .vi-add-next # OLDLBUFFER=$LBUFFER # OLDRBUFFER=$RBUFFER # NNUMERIC=$NUMERIC # bindkey -M viins "" vi-cmd-mode-a } zle -N vi-add-next bindkey -M vicmd "a" vi-add-next #vi-cmd-mode-a() { # show_mode "NORMAL" # STRING="LLBUFFER=\${LBUFFER:s/$OLDLBUFFER//}" # eval $STRING # STRING="RRBUFFER=\${RBUFFER:s/$OLDRBUFFER/}" # eval $STRING # INS="$LLBUFFER$RRBUFFER" # LBUFFER=$OLDLBUFFER # repeat $NNUMERIC LBUFFER="$LBUFFER$INS" # builtin zle .vi-cmd-mode # unset LLBUFFER RRBUFFER NNUMERIC INS # bindkey -M viins "" vi-cmd-mode #} #zle -N vi-cmd-mode-a ### vi-change (unbound) (c) (unbound) ### Read a movement command from the keyboard, and kill ### from the cursor position to the endpoint of the ### movement. Then enter insert mode. If the command ### is vi-change, change the current line. vi-change() { show_mode "INSERT" builtin zle .vi-change } zle -N vi-change bindkey -M vicmd "c" vi-change ### vi-change-eol (unbound) (C) (unbound) ### Kill to the end of the line and enter insert mode. vi-change-eol() { show_mode "INSERT" builtin zle .vi-change-eol } zle -N vi-change-eol bindkey -M vicmd "C" vi-change-eol ### vi-change-whole-line (unbound) (S) (unbound) ### Kill the current line and enter insert mode. vi-change-whole-line() { show_mode "INSERT" builtin zle .vi-change-whole-line } zle -N vi-change-whole-line bindkey -M vicmd "S" vi-change-whole-line ### vi-insert (unbound) (i) (unbound) ### Enter insert mode. vi-insert() { show_mode "INSERT" builtin zle .vi-insert } zle -N vi-insert bindkey -M vicmd "i" vi-insert ### vi-insert-bol (unbound) (I) (unbound) ### Move to the first non-blank character on the line ### and enter insert mode. vi-insert-bol() { show_mode "INSERT" builtin zle .vi-insert-bol } zle -N vi-insert-bol bindkey -M vicmd "I" vi-insert-bol ### vi-open-line-above (unbound) (O) (unbound) ### Open a line above the cursor and enter insert mode. vi-open-line-above() { show_mode "INSERT" builtin zle .vi-open-line-above } zle -N vi-open-line-above bindkey -M vicmd "O" vi-open-line-above ### vi-open-line-below (unbound) (o) (unbound) ### Open a line below the cursor and enter insert mode. vi-open-line-below() { show_mode "INSERT" builtin zle .vi-open-line-below } zle -N vi-open-line-below bindkey -M vicmd "o" vi-open-line-below ### vi-substitute (unbound) (s) (unbound) ### Substitute the next character(s). vi-substitute() { show_mode "INSERT" builtin zle .vi-substitute } zle -N vi-substitute bindkey -M vicmd "s" vi-substitute ### vi-replace (unbound) (R) (unbound) ### Enter overwrite mode. ### vi-replace() { show_mode "REPLACE" builtin zle .vi-replace } zle -N vi-replace bindkey -M vicmd "R" vi-replace ### vi-cmd-mode (^X^V) (unbound) (^[) ### Enter command mode; that is, select the `vicmd' ### keymap. Yes, this is bound by default in emacs ### mode. vi-cmd-mode() { show_mode "NORMAL" builtin zle .vi-cmd-mode } zle -N vi-cmd-mode bindkey -M viins "" vi-cmd-mode ### vi-oper-swap-case ### Read a movement command from the keyboard, and swap ### the case of all characters from the cursor position ### to the endpoint of the movement. If the movement ### command is vi-oper-swap-case, swap the case of all ### characters on the current line. ### bindkey -M vicmd "g~" vi-oper-swap-case ### LOAD EXTENSIONS zmodload zsh/parameter # zmodload zftp ### MISC umask 022 mesg n ulimit -c unlimited # create iab's for my mutt-aliases to be sourced from within vim # cat ~/.muttrc.aliases | sed -e 's/^#/"/' -e 's/^alias/iab/' > ~/.vim_mutt.aliases # Colourize cursor on Linux console # echo -e "\033[?17;216;64c" # echo -e "\033[?17;215;55c" ###### ### a clock in the prompt. Yes, this _is_ cool. But sometimes, it interferes with ###### ### other things. ###### ### I no longer need it as I have a running clock on my desktop when running ###### ### X and a clock in screen's hardstatus line when running on the console ###### trap CRON ALRM ###### TMOUT=1 ###### CRON() { ###### local STRING ###### local COL ###### local x ###### STRING=$(date) ###### COL=$[COLUMNS-5] ###### COL=$[COL-$#STRING] ###### x=$(echo $PREBUFFER | wc -l ) ###### x=$[x+1] ###### echo -n "7[$x;A[$COL;G-- $STRING --8" ###### } ### thanks to Riviera for this one... ### don't use it at the moment #*Riviera* chpwd () { #*Riviera* dirs >| $ZDOTDIR/zsave/zsh_dirstack_tty$tti #*Riviera* } #*Riviera* cdt () { #*Riviera* cd $(cut -d\ -f1 ~/.zsh/zsave/zsh_dirstack_tty$1|sed s/~/${HOME:gs./.\\\\/}/g) #*Riviera* } #*Riviera* und #*Riviera* in .zshrc #*Riviera* dirs $(sed s/~/${HOME:gs./.\\\\/}/g $ZDOTDIR/zsave/zsh_dirstack_tty$tti) #*Riviera* und in .zlogout nochmal das, was in chpwd steht. #*Riviera* #*Riviera* Damit kann ich 1. mit "cdt 3" in das in tty3 aktuelle Verzeichnis wechseln #*Riviera* und 2. nach nem login wieder denselben dirstack vorfinden auf derselben tty wie vorm ausloggen. #*Riviera* tti=$(tty) #*Riviera* tti=${tti#*/dev/tty} #*Riviera* Kommt noch dazu. Eigentlich hatte ich dann immer noch #*Riviera* case $tti in #*Riviera* [A-Za-z]*)tti=${tti%*[0-9]};; #*Riviera* *);; #*Riviera* esac #*Riviera* aber das hab ich rausgenommen #*Riviera* :) ### COMPLETION AND MORE # The following lines were added by compinstall [[ -z $fpath[(r)$_compdir] ]] && fpath=($fpath $_compdir) #fpath=(/home/tkoehler/zsh/foo $fpath) autoload -U compinit compinit local _myhosts _myhosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*}) # zstyle ':completion:*' hosts $_myhosts zstyle ':completion:*' auto-description 'specify %d' zstyle ':completion:*' completer _complete _ignored _match _correct _approximate _prefix zstyle ':completion:*' file-sort name zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' group-name '' ## domains to use for mutt user@host completion zstyle '*mutt*' hosts 'picard.franken.de' 'vim.org' zstyle '*' hosts 'picard.franken.de' 'unser.linux.laeuft.auf.s390.org' zstyle ':completion:*' list-prompt '%SAt %p: Hit TAB for more, or the character to insert%s' zstyle ':completion:*' matcher-list 'r:|[._-]=** r:|=**' 'l:|=* r:|=*' 'm:{a-z}={A-Z}' zstyle ':completion:*' match-original both zstyle ':completion:*' max-errors 3 zstyle ':completion:*' menu select=0 zstyle ':completion:*' prompt 'CORRECT (%e errors found) > ' zstyle ':completion:*' special-dirs true zstyle ':completion:*' squeeze-slashes true zstyle '*mutt*' users vim vim-dev tkoehler zstyle '*' users thomas tkoehler zstyle ':completion:*' verbose true zstyle :compinstall filename '/home/tkoehler/.zshrc' # End of lines added by compinstall #fpath=(/usr/share/doc/zsh/examples/Functions/Misc/ $fpath) #autoload nslookup zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*:*:*:*:hosts' list-colors '=(#b)(*)(to.com)=34;40=35;40' '=(#b)(*)(mayn.de)=36;40=35;40' '=unser.linux.laeuft.auf.s390.org=33;40' '=*=31;40' zstyle ':completion:*:*:*:*:users' list-colors '=*=32;40' autoload -U zfinit zfinit zsh-lovers-0.8.3/zsh_people/thomas_koehler/klammer.zsh0000644000175000017500000000160611103635725023056 0ustar alessioalessio ### put all of this in .zshrc or try ". ~/zsh/klammer.zsh" in .zshrc COLORX="" COLOR0="" COLOR1="" COLOR2="" COLOR3="" COLOR4="" COLOR5="" COLOR6="" COLOR7="" COLOR8="" COLOR9="" COLOR10="" COLOROFF="" highlight() { line=$* i=0 j=0 strlen=$#line while [ $i -le $strlen ] ; do i=$[i+1] x=$line[$i] case $x in (\{) j=$[j+1] ; eval print -n $"COLOR$j"$"x"$"COLOROFF" ;; (\}) eval print -n $"COLOR$j"$"x"$"COLOROFF" ; j=$[j-1] ;; (*) print -n $x ;; esac done print $COLOROFF } screenclearx () { print -n '7' print local MYLINE="$LBUFFER$RBUFFER" highlight $MYLINE print -n '8' # print "${COLORX}Hit Enter to continue${COLOROFF}" # read -k } zle -N screenclearx bindkey "^Xl" screenclearx zsh-lovers-0.8.3/zsh_people/ZWS-1.0.tar.bz20000644000175000017500000002147211103635725020062 0ustar alessioalessioBZh91AY&SYpX  `+޽ )}H(Z:1}Gf@Po:5*٢tkIH)E2+AM[ǰ4b4Li1L?Ț)~ГSGL#2Hj2Mh &BaM 2hd ORz2i52h4h$HBJ~4$m#izd "QLz%?I<Fi=A&CMMњDB@CB4h$ 4zSOS =@@iy_{fy A bmǷ݇IjdfVTZb6F#! !BEFBu2 {kjw8TvԟhvTx`; ߐJ >DLgZ}9wHOwKXR`7MG6вx'f)" $N%S5ZKF)polۼ+cF{-k(9c[H}qt0XB /JS}1e1 bCN x^P5MhIC<*a{sx@:P18?K3so$ɴɹ#|%IVD{_E<\>7>X67YeW^iӷ/Ƽɣ&jv| d n81 *0Gcr]XՋja9H}}śl(rp~( *GT['XњA3r,Hg)7oK/{TRKBbL-ZL Uc-DR%D4U׹Λ#H^C jk+5$i+T}' ؑo=4Nfd-}cocwW+HN\Ǝ"˻zfw3<q>0iOȈby {VeC_,&XZ#KG]۽^/x Q6,=Y/6l.C rB0JR} & dP5 LxkŁL+:;{>d"ޏ>ZKD1 M+JZ?{=cpv9Hcp_YA/:Zaq*-+VAB= ")ɩC-c@:RdF. & Ϫ~Gު@`vk)yn@tP NX,\&6:Gts0ɘ_"@pM,j6 ;v|R90ʣ/Yug=-4SEē5ڎBn,3\3zsc#wvH+v_06DSU9G_sNm}|%Bp?w?tqG6۳VtC;'.f&% $H71|}^9{oް2 k"^ " wfj" /V}Y1Yy~:j)LQP~^?15AQi*ASWsñ5},;1K= `8&n_#Cs0"UzX1!6M~a(82Ħ+ GKמI-'@i0PG;W9AԆΪ,? cLrƨ/HP&B2 K@m1`HdV s g[ ٓAJeɾk1$Cy _ i&qOBtx0zW@$sΠ0cB!*ۭH`ҹmG5AD`N޸6(@?6sg<+Hp o$H}O[؆&"r>cE|`^gcifI#Y0M|!y|JD4_mSLveCQ{u%AΦqr;mpu݌'4 kk"Ze-9mtcًN"J'nݓ!ldy,]x#MʐD%8hY.xk$AC{s?Bx0.rs'f.YA+Á@$PۍŀX GH~YE< %N}F |GS;˓kaJyVOT N٣{؃{J<W]b])M/9NH!Ʋ|nn p1P1S;$jvjtkw 6KՓ;: 2V(۔,\c% ;P[EX d  <̧Y=8lK'c/urs"S3C[ Dsxw9"&KI@$rbХ(7i;a4qh۸[> 7=:Бg Cp_N8kMftQ t8ė!1줄ul^ïr4= Y/JH(h|n&.(W3MY,Yc+ a5H-^SeGahQٔ発8x}2:\!H[#e3V2 zA,,lQe/"=:5)A)@8 DLbAVZٍn.I8<f)`K7.܌wߡϳ m;m9S!"< L&FwJDRF`&E*8gp2-i&8CrC`3;m$ $3\:raJXiB3y*Pɹ6r\r˝C-]#%PQ R43 fL?Q){Z9!\;Vz(Q1WPK_wkflC reHUZTpـsf4dpV Al q#["|ﵚahKt@?FZShQG$5(L#W,:8&4Ƹ'=eķ:v{̝[+GW}le`qL•u6 |#y "cɚ3ᆈЖYìHaW\6"n5 *Ytp-[[a$8I(PȃvFlI1vm`G!иh6gM&DUe9 KvSNw*^CmU W#WO j2¼2\L]Q=P {D$nxȔyNơMyB[Ӆr%ʘ^{&c#^8?TƇ![vbn=Oi:|L!+}}(DFR@>%AmG #+xu<=Q9ٝ~{lM{& ڞ\.EK+Ԙ䊗'(_%*P1.˹q#υfEQL:pEqbJ܀aXsy$ (C8to77*^nH&Fri'2DJ85nYC!p\>.?MEʧ"W:9~2b>2k|! "ARQlz͎u>?N|6x?tB> HjzC  ,ЗyH]FQnqEE\C谌`+QDᣑAkmQ.m~poa3 {ov{7`TXZbcmd zs`tjCbE%&B|)(mhLIY" _ z{pT83 BtD~JRH룁DFjjCMNi8EPF,;@.C:@pD$jdȷ@)X[O0#qCs=uE|%Be/dYT=ޝ@nEY"B8}iơO˂jFFHp8*J[v~z 9&*ٜڇT9#xxe? ,ꕇ&N.T+NGVVO>ߙrXhդF-|Yfo^_GN ڵ,7ϝ$ѓ@×DE P(V" blh6TPt$+>b0I`ٖ"Fo8svm +Vi*pN`4ׯPP^[# =`-^v˫&ɉ!#h {*W3vVb}-U YAC^e}n(t|) l0R@:3;QA˙f`we%ؼFmٝOfG<!b$I QR|R ;4u3vcJķC\^N24z]6eՀLg#H/+G* 1XVK4dr90g957G'3n@Ɍ\@k*-6 p3`3! e7;>J~Ivdښ.em1r3|.TRɯ d6bF6-(\%bdũ\[!5J0X"\/3NoKtӤrVjd K%}ɄlP+ Cxƅe1L*,wzu9 ]KƔ,K c-UXnyR!q̍ Rn$Г潎p@XAm`vQ)5`+3P.CAfMHXF]up`zNra@*"HT]bE7٭۲MZ N'}cm)E9S(pؓs[{ɸ {e`ؠɳ6Ib(X"i,J+U 7?N0sbF>YLic*/ Жhir 3ee>4:cmU[XaO/Vؼ! ݽUgSЕ0a<P=vl៦uc@O{LXAX*")+k.#L"Y.X7"(*m&=?kV.bn v> dpmEp=|VX8H':a"" U*"(!K߿_<`7$iυ,BT64eN|jc!I\[Tq䲽3ɚ@(X;̺ AO\ .P s̴h 6FLΔ/65D@(02mPxdKRJX*XB C(' VvLuшw֐6j\ͳwdt58$AT8AO+1QٺIcS̽*#ZN&C3M10(Q^pBPyqmv=VWE,5 V4hu\gwْa9utކ6hJ 3'4>OCni4,B"͏f $>ƪ]oƅۜ{Z6fD kas>jx+zc'PG2p{ a-V/7M3MkGL +O@XPA@U8]y4ؐ[ $ \IN`A3!բFiVptPf\b SA$@j4E͡)kͮEA%(YxC"Ш ۥql$^;(J^B˵qVX"ev]ζ䠸Q0yTJeŜe譝-jQ2 X A"P(^ z[DXe#PXMpXI*@a" &/yQ`gSbG~$ŀ)EQM.i.NȺglmqE0m \4\E3lKh8).]j&G9񲪱w7vCdЇ!vtJHH CӷjƦh4a|nNw%G|tI&#=\HݱC|lշU/(,єyYse,Ś`;`Q mGv2*HCC jևC@ڂш{:ÏPրiZNj}{1jFb(Ң&2K\[nA[9'da@ъ6:].1.zGfs5!= Qrԫl4( $v7,CppAm j`1&n@`iQ9r8y**5}oFI[N$qZ2.iƽXkߨ^N*D.R dA?w$S  ޛzsh-lovers-0.8.3/zsh_people/caphuso/0000755000175000017500000000000011103635725017333 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/caphuso/zshrc0000644000175000017500000002403011103635725020406 0ustar alessioalessio# this is not useable as a life ~/.zshrc, but you might get one or two ideas # from it. So don't blame anyone but yourself if something gets messed up. autoload -U checkmail # needed for my prompt autoload -U colors && colors # make ${f,b}g{,_{,no_}bold} availabl autoload -U compinit && compinit # load new completion system autoload -U edit-command-line # later bound to C-z e autoload -U zed # what, your shell can't edit files? autoload -U zmv # who needs mmv or rename? bindkey -e # force emacs keybindings no matter what $VISUAL and $EDITOR say zmodload zsh/complist zmodload zsh/deltochar zmodload zsh/mathfunc # autoload my personal functions autoload ${fpath[1]}/*(:t) # some terminal specific magic # look for the zkbd stuff in 'man zshcontrib' # note: i renamed and moved the resulting files case $TERM in linux) . ~/.zsh/zkbd/$TERM ;; screen) . ~/.zsh/zkbd/$TERM ;; gnome*) . ~/.zsh/zkbd/$TERM ;; vt420*) . ~/.zsh/zkbd/$TERM ;; rxvt) . ~/.zsh/zkbd/$TERM ;; xterm*) . ~/.zsh/zkbd/$TERM ;; esac [[ -z $DISPLAY ]] && setterm -bfreq 100 -blength 50 || resize > /dev/null 2>&1 # some external files source ~/.zsh/zsh_alias source ~/.zsh/zsh_foo source ~/.zsh/zsh_prompt || PROMPT='%n@%m %40<...<%B%~%b%<< $ ' # some options to set setopt NO_rm_star_wait setopt NO_auto_cd setopt correct setopt NO_auto_menu setopt NO_menucomplete setopt autolist setopt NO_complete_in_word setopt complete_aliases setopt NO_mark_dirs setopt NO_multios setopt notify setopt path_dirs setopt NO_singlelinezle setopt NO_hup setopt NO_beep setopt NO_nullglob setopt extended_glob setopt numeric_glob_sort setopt NO_check_jobs setopt list_packed setopt NO_list_rows_first setopt bare_glob_qual setopt NO_clobber setopt histallowclobber setopt append_history setopt histignorealldups setopt histignorespace setopt extended_history setopt histreduceblanks setopt hist_no_store setopt NO_hist_verify setopt NO_auto_name_dirs setopt hash_cmds setopt hash_dirs setopt pushd_ignore_dups setopt NO_pushd_minus setopt auto_pushd setopt pushd_silent setopt pushd_to_home [[ $VERSION == 4.1* ]] && setopt auto_continue setopt magic_equal_subst setopt NO_print_exit_value # don't print exit value if non-zero setopt glob_complete # echo * -> menu completion setopt rc_quotes # print '''' -> ' setopt ksh_option_print setopt rc_expand_param # foo=(1 2);a${foo}b -> 'a1b a2b', not 'a1 b2' setopt no_flow_control setopt brace_ccl # {a-c} -> 'a b c' setopt bsd_echo setopt always_last_prompt # necessary for menu selection # some zle stuff autoload _history_complete_word autoload history-search-end zle -N edit-command-line zle -N local-run-help zle -N run-as-root zle -N run-with-noglob zle -N run-as-command zle -N run-as-builtin zle -N run-without-completion zle -N show-history zle -N show-dirstack zle -N silly-calc zle -N zsh-query-replace zle -N history-beginning-search-backward-end history-search-end zle -N history-beginning-search-forward-end history-search-end zle -C lamatch complete-word _generic zle -C lappr complete-word _generic zle -C lhist complete-word _generic zle -C most-recent-file menu-complete _generic autoload url-quote-magic zle -N self-insert url-quote-magic # default keymap # bindkey -m bindkey '^Ze' edit-command-line bindkey '^Zg' run-with-noglob bindkey '^Zc' run-as-command bindkey '^Zb' run-as-builtin bindkey '^Zn' run-without-completion bindkey '^Zh' show-history bindkey '^Zd' show-dirstack bindkey '^Xd' delete-to-char bindkey '^Xz' zap-to-char bindkey '^Xi' lamatch bindkey '^Xl' lappr bindkey '^Xc' _correct_filename bindkey '^Xh' _complete_help bindkey '^X?' _complete_debug bindkey '^Xr' most-recent-file bindkey '^Q' push-line-or-edit bindkey '^I' complete-word if (( $+key )); then bindkey -r ${key[Up]} bindkey -r ${key[Down]} bindkey -r ${key[Left]} bindkey -r ${key[Right]} fi # emacs keymap bindkey -M emacs '^W' kill-region bindkey -M emacs '^[%' zsh-query-replace bindkey -M emacs '^[S' run-as-root bindkey -M emacs '^[H' local-run-help bindkey -M emacs '^[^M' silly-calc bindkey -M emacs '^[n' history-beginning-search-forward-end bindkey -M emacs '^[p' history-beginning-search-backward-end bindkey -M emacs '^[/' lhist bindkey -M emacs '^[Q' delete-to-char bindkey -M emacs '^[Z' zap-to-char autoload -U select-word-style select-word-style n zle -N shell-forward-word forward-word-match bindkey -M emacs '\eF' shell-forward-word zstyle ':zle:shell-forward-word' word-style shell zle -N shell-backward-word backward-word-match bindkey -M emacs '\eB' shell-backward-word zstyle ':zle:shell-backward-word' word-style shell zle -N shell-kill-word kill-word-match bindkey -M emacs '\eD' shell-kill-word zstyle ':zle:shell-kill-word' word-style shell zle -N shell-backward-kill-word backward-kill-word-match bindkey -M emacs '\ek' shell-backward-kill-word zstyle ':zle:shell-backward-kill-word' word-style shell # vicmd keymap bindkey -M vicmd 'u' undo bindkey -M vicmd 'q' delete-to-char bindkey -M vicmd '^Q' zap-to-char bindkey -M vicmd '^[x' execute-named-cmd bindkey -M vicmd '^R' redo bindkey -M vicmd '^[a' accept-and-hold bindkey -M vicmd 'Q' zsh-query-replace # viins keymap bindkey -M viins '^[x' execute-named-cmd bindkey -M viins '^[.' insert-last-word bindkey -M viins '^[a' accept-and-hold bindkey -M viins '^P' up-line-or-history bindkey -M viins '^N' down-line-or-history bindkey -M viins '^I' complete-word bindkey -r '^Z' bindkey -r '^X' # menu selection bindkey '^Zm' menu-select bindkey -M menuselect '^P' up-line-or-history bindkey -M menuselect '^N' down-line-or-history bindkey -M menuselect '^B' backward-char bindkey -M menuselect '^F' forward-char bindkey -M menuselect '^O' accept-and-infer-next-history bindkey -M menuselect '^_' undo bindkey -M menuselect '^A' accept-and-menu-complete # some external commands [[ -x =lesspipe ]] && eval $(lesspipe) # set $LESS{OPEN,CLOSE} [[ -x =dircolors ]] && eval $(dircolors ~/.dircolors) # set $LS_COLORS # forgot why i set this :-( maildirectory=~/mail # completion system configuration zstyle ':completion:*' completer \ _complete _match _correct _complete:-extended _prefix \ _complete:-substring zstyle ':completion:*:correct:*' max-errors 0 numeric zstyle ':completion:*:correct:*' insert-unambiguous true zstyle ':completion:*:correct:*' original false zstyle ':completion:*:expand:*' group-order all-expansions expansions zstyle ':completion:lappr:*' completer _approximate zstyle ':completion:lappr:*:approximate:*' max-errors 3 numeric zstyle ':completion:lamatch:*' completer _all_matches zstyle ':completion:lamatch:*' old-matches only zstyle ':completion:lhist:*' completer _history zstyle ':completion:lhist:*' range 1000:10 zstyle ':completion:*:match:*' match-original non-empty-value zstyle ':completion:*' ambiguous true zstyle ':completion:*' glob true zstyle ':completion:*' word true zstyle ':completion:*:-tilde-:*' group-order \ 'named-directories' 'path-directories' 'users' 'expand' zstyle ':completion:*:ssh:*' group-order 'users' 'hosts' zstyle ':completion:all-matches:*' old-matches only zstyle ':completion:all-matches:*' completer _all_matches zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns '*~' '\#*\#' '*.zwc' zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' zstyle ':completion:*:functions' ignored-patterns '(_*|pre(cmd|exec))' zstyle ':completion:*:-subscript-:*' tag-order indexes parameters zstyle ':completion:*:cd:*' tag-order \ local-directories directory-stack named-directories path-directories zstyle ':completion:*:complete-extended:*' matcher-list \ 'm:{a-z}={A-Z}' 'r:|[+._-]=*' zstyle ':completion:*:complete-substring:*' matcher-list \ 'l:|=**' zstyle ':completion:*:mutt:*' users \ ${${${(f)"$(<~/.mutt_mail_aliases)"}#alias[[:space:]]}%%[[:space:]]*} zstyle ':completion:*:urls' urls ~/.zsh/urls zstyle ':completion:*:ping:*' hosts host.foo.invalid host{{1..5},}.at.some.net.invalid zstyle ':completion::*' list-colors ${(s.:.)LS_COLORS} zstyle ':completion:*' users-hosts username@localhost \ user1@host.invalid \ user2@otherhost.invalid zstyle ':completion:*' group-name '' zstyle ':completion:*' ignore-parents pwd parent .. zstyle ':completion:*' remove-all-dups true zstyle ':completion:*' select-scroll -1 zstyle ':completion:*' special-dirs '..' zstyle ':completion:*' use-cache yes zstyle ':completion:*' menu select zstyle ':completion:*:descriptions' format \ $'%{\e[0;31m%}completing %d%{\e[0m%}' zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%}' zstyle ':completion:*' insert-unambiguous true zstyle ':completion:*' range 200:20 zstyle ':completion:*' select-prompt '%SSelect: lines: %L matches: %M [%p]' zstyle ':completion:*' sort true zstyle ':completion:*:kill:*' command 'ps -u $USER -o pid,%cpu,tty,cputime,cmd' zstyle ':completion:*:*:rm:*' file-patterns '(*~|\\#*\\#):backup-files' \ '*.zwc:zsh\ bytecompiled\ files' '(|[a-z]#-[0-9]#-[0-9]#-[0-9]#.)core(|.*):core\ files' '*:all-files' zstyle ':completion:*:rm:*' ignore-line true zstyle ':completion:*:kill:*' insert-ids single zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always zstyle ':completion:*' keep-prefix changed zstyle ':completion:*:man:*' separate-sections true zstyle ':completion:*:mplayer:*:bookmark' mplayer-bookmark ~/.zsh/mplayer-bookmark zstyle ':completion:most-recent-file:*' match-original both zstyle ':completion:most-recent-file:*' completer _menu _files _match zstyle ':completion:most-recent-file:*' file-sort modification zstyle ':completion:most-recent-file:*' file-patterns '*(.):normal\ files' zstyle ':completion:most-recent-file:*' hidden all zstyle ':completion:*:xpdf:*' menu true zstyle ':completion:*:xpdf:*' file-patterns '*.pdf(.-)' '*(/-)' zstyle ':completion:*:xpdf:*' file-sort time zstyle ':completion:*:xdvi:*' menu true zstyle ':completion:*:xdvi:*' file-patterns '*.dvi(|.gz|.Z)(.-)' '*(/-)' zstyle ':completion:*:xdvi:*' file-sort time compdef _gnu_generic cp mv gpg df stow uname ipacsum fetchipac compdef _man pman zsh-lovers-0.8.3/zsh_people/stchaz/0000755000175000017500000000000011103635725017165 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/stchaz/mouse.zsh0000644000175000017500000004732211103635725021053 0ustar alessioalessio# zsh mouse (and X clipboard) support v1.4 # # QUICKSTART: jump to "how to use" below. # # currently supported: # - VT200 mouse tracking (at least xterm, gnome-terminal, rxvt) # - GPM on Linux little-endian systems such as i386 (at least) # - X clipboard handling if xsel(1) or xclip(1) is available (see # note below). # # addionnaly, if you are using xterm and don't want to use the mouse # tracking system, you can map some button click events so that they # send \E[M^X[ where is the character 0x20 + (0, 1, 2) # , are the coordinate of the mouse pointer. This is usually done # by adding those lines to your resource file for XTerm (~/.Xdefaults # for example): # # XTerm.VT100.translations: #override\ # Mod4 : ignore()\n\ # Mod4 : ignore()\n\ # Mod4 : ignore()\n\ # Mod4 : string(0x1b) string("[M ") dired-button()\n\ # Mod4 : string(0x1b) string("[M!") dired-button()\n\ # Mod4 : string(0x1b) string("[M") string(0x22) dired-button()\n\ # Mod4 ,: string(0x10)\n\ # Mod4 ,: string(0xe) # # That maps the button click events with the modifier 4 (when you hold # the Key [possibly Windows keys] under recent versions of # XFree86). The last two lines are for an easy support of the mouse # wheel (map the mouse wheel events to ^N and ^P) # # Remember that even if you use the mouse tracking, you can still have # access to the normal xterm selection mechanism by holding the # key. # # Note about X selection. # By default, xterm uses the PRIMARY selection instead of CLIPBOARD # for copy-paste. You may prefer changing that if you want # to insert the CLIPBOARD and a better communication # between xterm and clipboard based applications like mozilla. # A way to do that is to add those resources: # XTerm.VT100.translations: #override\ # Shift ~Ctrl Insert:insert-selection(\ # CLIPBOARD, CUT_BUFFER0, PRIMARY) \n\ # Shift Ctrl Insert:insert-selection(\ # PRIMARY, CUT_BUFFER0, CLIPBOARD) \n\ # ~Ctrl ~Meta: select-end(PRIMARY,CUT_BUFFER0,CLIPBOARD) # # and to run a clipboard manager application such as xclipboard # (whose invocation you may want to put in your X session startup # file). ( inserts the PRIMARY selection as does # the middle mouse button). (without xclipboard, the clipboard # content is lost whenever the text is no more selected). # # How to use: # # add to your ~/.zshrc: # . /path/to/this-file # zle-toggle-mouse # # and if you want to be able to toggle on/off the mouse support: # bindkey -M emacs '\em' zle-toggle-mouse # # m to toggle the mouse in emacs mode # bindkey -M vicmd M zle-toggle-mouse # # M for vi (cmd) mode # # clicking on the button 1: # moves the cursor to the pointed location # clicking on the button 2: # inserts zsh cutbuffer at pointed location. If $DISPLAY is set and # either the xsel(1) or xclip(1) command is available, then it's the # content of the X clipboard instead that is pasted (and stored into # zsh cutbuffer). # clicking on the button 3: # stores the text between the cursor and the pointed localion # into zsh cutbuffer. Additionaly, if $DISPLAY is set and either the # xclip(1) or xsel(1) command is available, that text is put on the # clipboard. # # If xsel or xlip is available, and $DISPLAY is set (and you're in a # xterm-like terminal (even though that feature is terminal # independant)), all the keys (actually widgets) that deal with zsh # cut buffer have been modified so that the X CLIPBOARD selection is # used. So , ... will put the killed region on the X # clipboard. vi mode "p" or emacs "" will paste the X CLIPBOARD # selection. Only the keys that delete one character are not affected # (, , ). Additionnaly, the primary selection (what # is mouse highlighted and that you paste with the middle button) is put # on the clipboard (and so made available to zsh) when you press # or or X (emacs mode) or X (vicmd # mode). (note that your terminal may already do that by default, also # note that your terminal may paste the primary selection and not the # clipboard on , you may change that if you find it # confusing (see above)) # # for GPM, you may change the list of modifiers (Shift, Alt...) that # need to be on for the event to be accepted (see below). # # kterm: same as for xterm, but replace XTerm with KTerm in the resource # customization # hanterm: same as for xterm, but replace XTerm with Hanterm in the # resource customization. # Eterm: the paste(clipboard) actions don't seem to work, future # versions of mouse.zsh may include support for X cutbuffers or revert # back to PRIMARY selection to provide a better support for Eterm. # gnome-terminal: you may want to bind some keys to Edit->{copy,paste} # multi-gnome-terminal: selection looks mostly bogus to me # rxvt,aterm,[ckgt]aterm,mlterm,pterm: no support for clipboard. # GNUstep terminal: no mouse support but support for clipboard via menu # KDE x-terminal-emulator: works OK except mouse button3 that is mapped # to the context menu. Use Ctrl-Insert to put the selection on the # clipboard. # dtterm: no mouse support but the selection works OK. # # bugs: # - the GPM support was not much tested (was tested with gpm 1.19.6 on # a linux 2.6.9, AMD Athlon) # - mouse positionning doesn't work properly in "vared" if a prompt # was provided (vared -p ) # # Todo: # - write proper documentation # - customization through zstyles. # # Author: # Stephane Chazelas # # Changes: # v1.4 2005-03-01: puts both words on the cut buffer # support for CUT_BUFFER0 via xprop. # v1.3 2005-02-28: support for more X terminals, tidy-up, separate # mouse support from clipboard support # v1.2 2005-02-24: support for vi-mode. X clipboard mirroring zsh cut buffer # when possible. Bug fixes. # v1.1 2005-02-20: support for X selection through xsel or xclip # v1.0 2004-11-18: initial release # UTILITY FUNCTIONS zle-error() { local IFS=" " if [[ -n $WIDGET ]]; then # error message if zle active zle -M -- "$*" else # on stderr otherwise print -ru2 -- "$*" fi } # SELECTION/CLIPBOARD FUNCTIONS set-x-clipboard() { return 0; } get-x-clipboard() { return 1; } if # find a command to read from/write to the X selections if whence xsel > /dev/null 2>&1; then x_selection_tool="xsel -p" x_clipboard_tool="xsel -b" elif whence xclip > /dev/null 2>&1; then x_selection_tool="xclip -sel p" x_clipboard_tool="xclip -sel c" fi then eval ' get-x-clipboard() { (( $+DISPLAY )) || return 1 local r r=$('$x_clipboard_tool' -o < /dev/null 2> /dev/null && print .) r=${r%.} if [[ -n $r && $r != $CUTBUFFER ]]; then killring=("$CUTBUFFER" "${(@)killring[1,-2]}") CUTBUFFER=$r fi } set-x-clipboard() { (( ! $+DISPLAY )) || print -rn -- "$1" | '$x_clipboard_tool' -i 2> /dev/null } push-x-cut_buffer0() { # retrieve the CUT_BUFFER0 property via xprop and store it on the # CLIPBOARD selection (( $+DISPLAY )) || return 1 local r r=$(xprop -root -notype 8s \$0 CUT_BUFFER0 2> /dev/null) || return 1 r=${r#CUT_BUFFER0\"} r=${r%\"} r=${r//\'\''/\\\'\''} eval print -rn -- \$\'\''$r\'\'' | '$x_clipboard_tool' -i 2> /dev/null } push-x-selection() { # puts the PRIMARY selection onto the CLIPBOARD # failing that call push-x-cut_buffer0 (( $+DISPLAY )) || return 1 local r if r=$('$x_selection_tool' -o < /dev/null 2> /dev/null && print .) && r=${r%?} && [[ -n $r ]]; then print -rn -- $r | '$x_clipboard_tool' -i 2> /dev/null else push-x-cut_buffer0 fi } ' # redefine the copying widgets so that they update the clipboard. for w in copy-region-as-kill vi-delete vi-yank vi-change vi-change-whole-line vi-change-eol; do eval ' '$w'() { zle .'$w' set-x-clipboard $CUTBUFFER } zle -N '$w done # that's a bit more complicated for those ones as we have to # re-implement the special behavior that does that if you call several # of those widgets in sequence, the text on the clipboard is the # whole text cut, not just the text cut by the latest widget. for w in ${widgets[(I).*kill-*]}; do if [[ $w = *backward* ]]; then e='$CUTBUFFER$scb' else e='$scb$CUTBUFFER' fi eval ' '${w#.}'() { local scb=$CUTBUFFER local slw=$LASTWIDGET local sbl=${#BUFFER} zle '$w' (( $sbl == $#BUFFER )) && return if [[ $slw = (.|)(backward-|)kill-* ]]; then killring=("${(@)killring[2,-1]}") CUTBUFFER='$e' fi set-x-clipboard $CUTBUFFER } zle -N '${w#.} done zle -N push-x-selection zle -N push-x-cut_buffer0 # put the current selection on the clipboard upon # X or X: if (( $+terminfo[kSI] )); then bindkey -M emacs "$terminfo[kSI]" push-x-selection bindkey -M viins "$terminfo[kSI]" push-x-selection bindkey -M vicmd "$terminfo[kSI]" push-x-selection fi if (( $+terminfo[kich1] )); then # according to terminfo bindkey -M emacs "\e$terminfo[kich1]" push-x-selection bindkey -M viins "\e$terminfo[kich1]" push-x-selection bindkey -M vicmd "\e$terminfo[kich1]" push-x-selection fi # hardcode ^[[2;3~ which is sent by on xterm bindkey -M emacs '\e[2;3~' push-x-selection bindkey -M viins '\e[2;3~' push-x-selection bindkey -M vicmd '\e[2;3~' push-x-selection # hardcode ^[^[[2;5~ which is sent by on some terminals bindkey -M emacs '\e\e[2~' push-x-selection bindkey -M viins '\e\e[2~' push-x-selection bindkey -M vicmd '\e\e[2~' push-x-selection # hardcode ^[[2;5~ which is sent by on xterm # some terminals have already such a feature builtin (gnome/KDE # terminals), others have no distinguishable character sequence sent # by bindkey -M emacs '\e[2;5~' push-x-selection bindkey -M viins '\e[2;5~' push-x-selection bindkey -M vicmd '\e[2;5~' push-x-selection # for terminal without an insert key: bindkey -M vicmd X push-x-selection bindkey -M emacs '^XX' push-x-selection # the convoluted stuff below is to work around two problems: # 1- we can't just redefine the widgets as then yank-pop would # stop working # 2- we can't just rebind the keys to as # then we'll loose the numeric argument propagate-numeric() { # next key (\e[0-dum) is mapped to , plus the # targeted widget with NUMERIC restored. case $KEYMAP in vicmd) bindkey -M vicmd -s '\e[0-dum' $'\e[1-dum'$NUMERIC${KEYS/x/};; *) bindkey -M $KEYMAP -s '\e[0-dum' $'\e[1-dum'${NUMERIC//(#m)?/$'\e'$MATCH}${KEYS/x/};; esac } zle -N get-x-clipboard zle -N propagate-numeric bindkey -M emacs '\e[1-dum' get-x-clipboard bindkey -M vicmd '\e[1-dum' get-x-clipboard bindkey -M emacs '\e[2-dum' yank bindkey -M emacs '\e[2-xdum' propagate-numeric bindkey -M emacs -s '^Y' $'\e[2-xdum\e[0-dum' bindkey -M vicmd '\e[3-dum' vi-put-before bindkey -M vicmd '\e[3-xdum' propagate-numeric bindkey -M vicmd -s 'P' $'\e[3-xdum\e[0-dum' bindkey -M vicmd '\e[4-dum' vi-put-after bindkey -M vicmd '\e[4-xdum' propagate-numeric bindkey -M vicmd -s 'p' $'\e[4-xdum\e[0-dum' fi # MOUSE FUNCTIONS zle-update-mouse-driver() { # default is no mouse support [[ -n $ZLE_USE_MOUSE ]] && zle-error 'Sorry: mouse not supported' ZLE_USE_MOUSE= } if [[ $TERM = *[xeEk]term* || $TERM = *mlterm* || $TERM = *rxvt* || $TERM = *screen* || ($TERM = *linux* && -S /dev/gpmctl) ]]; then set-status() { return $1; } handle-mouse-event() { emulate -L zsh local bt=$1 case $bt in 3) return 0;; # Process on press, discard release # mlterm sends 3 on mouse-wheel-up but also on every button # release, so it's unusable 64) # eterm, rxvt, gnome/KDE terminal mouse wheel zle up-line-or-history return;; 4|65) # mlterm or eterm, rxvt, gnome/KDE terminal mouse wheel zle down-line-or-history return;; esac local mx=$2 my=$3 last_status=$4 local cx cy i setopt extendedglob print -n '\e[6n' # query cursor position local match mbegin mend buf= while read -k i && buf+=$i && [[ $buf != *\[([0-9]##)\;[0-9]##R ]]; do :; done # read response from terminal. # note that we may also get a mouse tracking btn-release event, # which would then be discarded. [[ $buf = (#b)*\[([0-9]##)\;[0-9]##R ]] || return cy=$match[1] # we don't need cx local cur_prompt # trying to guess the current prompt case $CONTEXT in (vared) if [[ $0 = zcalc ]]; then cur_prompt=${ZCALCPROMPT-'%1v> '} setopt nopromptsubst nopromptbang promptpercent # (ZCALCPROMPT is expanded with (%)) fi;; # if vared is passed a prompt, we're lost (select) cur_prompt=$PS3;; (cont) cur_prompt=$PS2;; (start) cur_prompt=$PS1;; esac # if promptsubst, then we need first to do the expansions (to # be able to remove the visual effects) and disable further # expansions [[ -o promptsubst ]] && cur_prompt=${${(e)cur_prompt}//(#b)([\\\$\`])/\\$match} # restore the exit status in case $PS relies on it set-status $last_status # remove the visual effects and do the prompt expansion cur_prompt=${(S%%)cur_prompt//(#b)(%([BSUbsu]|{*%})|(%[^BSUbsu{}]))/$match[3]} # we're now looping over the whole editing buffer (plus the last # line of the prompt) to compute the (x,y) position of each char. We # store the characters i for which x(i) <= mx < x(i+1) for every # value of y in the pos array. We also get the Y(CURSOR), so that at # the end, we're able to say which pos element is the right one local -a pos # array holding the possible positions of # the mouse pointer local -i n x=0 y=1 cursor=$((${#cur_prompt}+$CURSOR+1)) local Y buf=$cur_prompt$BUFFER for ((i=1; i<=$#buf; i++)); do (( i == cursor )) && Y=$y n=0 case $buf[i] in ($'\n') # newline : ${pos[y]=$i} (( y++, x=0 ));; ($'\t') # tab advance til next tab stop (( x = x/8*8+8 ));; ([$'\0'-$'\037'$'\200'-$'\237']) # characters like ^M n=2;; (*) n=1;; esac while (( x >= mx )) && : ${pos[y]=$i} (( x >= COLUMNS )) && (( x=0, y++ )) (( n > 0 )) do (( x++, n-- )) done done : ${pos[y]=$i} ${Y:=$y} local mouse_CURSOR if ((my + Y - cy > y)); then mouse_CURSOR=$#BUFFER elif ((my + Y - cy < 1)); then mouse_CURSOR=0 else mouse_CURSOR=$(($pos[my + Y - cy] - ${#cur_prompt} - 1)) fi case $bt in (0) # Button 1. Move cursor. CURSOR=$mouse_CURSOR ;; (1) # Button 2. Insert selection at mouse cursor postion. get-x-clipboard BUFFER=$BUFFER[1,mouse_CURSOR]$CUTBUFFER$BUFFER[mouse_CURSOR+1,-1] (( CURSOR = $mouse_CURSOR + $#CUTBUFFER )) ;; (2) # Button 3. Copy from cursor to mouse to cutbuffer. killring=("$CUTBUFFER" "${(@)killring[1,-2]}") if (( mouse_CURSOR < CURSOR )); then CUTBUFFER=$BUFFER[mouse_CURSOR+1,CURSOR+1] else CUTBUFFER=$BUFFER[CURSOR+1,mouse_CURSOR+1] fi set-x-clipboard $CUTBUFFER ;; esac } handle-xterm-mouse-event() { local last_status=$? emulate -L zsh local bt mx my # either xterm mouse tracking or binded xterm event # read the event from the terminal read -k bt # mouse button, x, y reported after \e[M bt=$((#bt & 0x47)) read -k mx read -k my if [[ $mx = $'\030' ]]; then # assume event is \E[Mdired-button()(^X\EG) read -k mx read -k mx read -k my (( my = #my - 31 )) (( mx = #mx - 31 )) else # that's a VT200 mouse tracking event (( my = #my - 32 )) (( mx = #mx - 32 )) fi handle-mouse-event $bt $mx $my $last_status } zle -N handle-xterm-mouse-event if [[ $TERM = *linux* && -S /dev/gpmctl ]]; then # GPM mouse support if zmodload -i zsh/net/socket; then zle-update-mouse-driver() { if [[ -n $ZLE_USE_MOUSE ]]; then if (( ! $+ZSH_GPM_FD )); then if zsocket -d 9 /dev/gpmctl; then ZSH_GPM_FD=$REPLY # gpm initialisation: # request single click events with given modifiers local -A modifiers modifiers=( none 0 shift 1 altgr 2 ctrl 4 alt 8 left-shift 16 right-shift 32 left-ctrl 64 right-ctrl 128 caps-shift 256 ) local min max # modifiers that need to be on min=$((modifiers[none])) # modifiers that may be on max=$min # send 16 bytes: # 1-2: LE short: requested events (btn down = 0x0004) # 3-4: LE short: event passed through (~GPM_HARD=0xFEFF) # 5-6: LE short: min modifiers # 7-8: LE short: max modifiers # 9-12: LE int: pid # 13-16: LE int: virtual console number print -u$ZSH_GPM_FD -n "\4\0\377\376\\$(([##8]min&255 ))\\$(([##8]min>>8))\\$(([##8]max&255))\\$(([##8]max>>8 ))\\$(([##8]$$&255))\\$(([##8]$$>>8&255))\\$(( [##8]$$>>16&255))\\$(( [##8]$$>>24))\\$(( [##8]${TTY#/dev/tty}))\0\0\0" zle -F $ZSH_GPM_FD handle-gpm-mouse-event else zle-error 'Error: unable to connect to GPM' ZLE_USE_MOUSE= fi fi else # ZLE_USE_MOUSE disabled, close GPM connection if (( $+ZSH_GPM_FD )); then eval "exec $ZSH_GPM_FD>&-" # what if $ZSH_GPM_FD > 9 ? zle -F $ZSH_GPM_FD # remove the handler unset ZSH_GPM_FD fi fi } handle-gpm-mouse-event() { local last_status=$? local event i if read -u$1 -k28 event; then local buttons x y (( buttons = ##$event[1] )) (( x = ##$event[9] + ##$event[10] << 8 )) (( y = ##$event[11] + ##$event[12] << 8 )) handle-mouse-event $(( (5 - (buttons & -buttons)) / 2 )) $x $y $last_status zle -R # redraw buffer else zle -M 'Error: connection to GPM lost' ZLE_USE_MOUSE= zle-update-mouse-driver fi } fi else # xterm-like mouse support zmodload -i zsh/parameter # needed for $functions zle-update-mouse-driver() { if [[ -n $WIDGET ]]; then if [[ -n $ZLE_USE_MOUSE ]]; then print -n '\e[?1000h' else print -n '\e[?1000l' fi fi } if [[ $functions[precmd] != *ZLE_USE_MOUSE* ]]; then functions[precmd]+=' [[ -n $ZLE_USE_MOUSE ]] && print -n '\''\e[?1000h'\' fi if [[ $functions[preexec] != *ZLE_USE_MOUSE* ]]; then functions[preexec]+=' [[ -n $ZLE_USE_MOUSE ]] && print -n '\''\e[?1000l'\' fi bindkey -M emacs '\e[M' handle-xterm-mouse-event bindkey -M viins '\e[M' handle-xterm-mouse-event bindkey -M vicmd '\e[M' handle-xterm-mouse-event if [[ $TERM = *Eterm* ]]; then # Eterm sends \e[5Mxxxxx on drag events, be want to discard them discard-mouse-drag() { local junk read -k5 junk } zle -N discard-mouse-drag bindkey -M emacs '\e[5M' discard-mouse-drag bindkey -M viins '\e[5M' discard-mouse-drag bindkey -M vicmd '\e[5M' discard-mouse-drag fi fi fi zle-toggle-mouse() { # If no prefix, toggle state. # If positive prefix, turn on. # If zero or negative prefix, turn off. # Allow this to be used as a normal function, too. if [[ -n $1 ]]; then local PREFIX=$1 fi if (( $+PREFIX )); then if (( PREFIX > 0 )); then ZLE_USE_MOUSE=1 else ZLE_USE_MOUSE= fi else if [[ -n $ZLE_USE_MOUSE ]]; then ZLE_USE_MOUSE= else ZLE_USE_MOUSE=1 fi fi zle-update-mouse-driver } zle -N zle-toggle-mouse zsh-lovers-0.8.3/zsh_people/bruno_bonfils/0000755000175000017500000000000011103635725020532 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/users0000644000175000017500000000000511103635725021611 0ustar alessioalessioasyd zsh-lovers-0.8.3/zsh_people/bruno_bonfils/misc/0000755000175000017500000000000011103635725021465 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/misc/zshist.10000644000175000017500000000106311103635725023073 0ustar alessioalessio.TH ZSHIST 1 .SH ZSHIST zshist \- read .zsh_history file .SH SYNOPSIS .B zshist .I [filename] .SH DESCRIPTION .BR zshist will parse .I filename (expecting it to be .zsh_history file with EXTENDED_HISTORY option set on) and convert timestamps to readable format. As a bonus, it will colourise the output. If .I filename is a directory, .BR zshist will append .zsh_history to it and try to parse that file. If no filename is given, it will read ~/.zsh_history .SH SEE ALSO .BR zsh "(1) .SH AUTHOR Written by Radovan Garabik zsh-lovers-0.8.3/zsh_people/bruno_bonfils/misc/zshistrc0000644000175000017500000000453011103635725023263 0ustar alessioalessio# delimiters can be any string, you can use colour["colourname"] and + operator # to get interesting colour effects # Colours are one of: # none, default, bold, underline, blink, reverse, concealed, # black, green, yellow, blue, magenta, cyan, white, # on_black, on_green, on_yellow, on_blue, on_magenta, on_cyan, # on_white, beep # on_red means that the background (instead of foreground) is painted # with red etc... delim1 = colours["green"] # before time string delim2 = colours["red"]+":" # after time string delim3 = ": "+colours["default"] # before command delim4 = colours["default"] # at the end of line - you'd better leave colours["default"] at the end! delim5 = colours["bold"]+colours["blue"] # before unrecognized line format # timeformat can contain following directives: # # Directive Meaning # %a Locale's abbreviated weekday name. # %A Locale's full weekday name. # %b Locale's abbreviated month name. # %B Locale's full month name. # %c Locale's appropriate date and time representation. # %d Day of the month as a decimal number [01,31]. # %H Hour (24-hour clock) as a decimal number [00,23]. # %I Hour (12-hour clock) as a decimal number [01,12]. # %j Day of the year as a decimal number [001,366]. # %m Month as a decimal number [01,12]. # %M Minute as a decimal number [00,59]. # %p Locale's equivalent of either AM or PM. # %S Second as a decimal number [00,61]. # %U Week number of the year (Sunday as the first day of the week) # as a decimal number [00,53]. All days in a new year preceding # the first Sunday are considered to be in week 0. # %w Weekday as a decimal number [0(Sunday),6]. # %W Week number of the year (Monday as the first day of the week) # as a decimal number [00,53]. All days in a new year preceding # the first Sunday are considered to be in week 0. # %x Locale's appropriate date representation. # %X Locale's appropriate time representation. # %y Year without century as a decimal number [00,99]. # %Y Year with century as a decimal number. # %Z Time zone name (or by no characters if no time zone exists). # %% % timeformat = "%d %b %H:%M:%S" zsh-lovers-0.8.3/zsh_people/bruno_bonfils/misc/dircolors.rc0000644000175000017500000000321411103635725024013 0ustar alessioalessioCOLOR tty # Extra command line options for ls go here. # Basically these ones are: # -F = show '/' for dirs, '*' for executables, etc. # -T 0 = don't trust tab spacing when formatting ls output. OPTIONS -F -T 0 # Below, there should be one TERM entry for each termtype that is colorizable TERM linux TERM screen TERM console TERM xterm TERM rxvt TERM vt100 TERM Eterm # EIGHTBIT, followed by '1' for on, '0' for off. (8-bit output) EIGHTBIT 1 # Below are the color init strings for the basic file types. A color init # string consists of one or more of the following numeric codes: # Attribute codes: # 00=none 01=bold 04=underscore 05=blink 07=reverse 08=concealed # Text color codes: # 30=black 31=red 32=green 33=yellow 34=blue 35=magenta 36=cyan 37=white # Background color codes: # 40=black 41=red 42=green 43=yellow 44=blue 45=magenta 46=cyan 47=white NORMAL 00 # global default, although everything should be something. FILE 00 # normal file DIR 00;34 # directory LINK 00;35 # symbolic link FIFO 40;33 # pipe SOCK 01;35 # socket BLK 40;33;01 # block device driver CHR 40;33;01 # character device driver # This is for files with execute permission: EXEC 01;32 # List any file extensions like '.gz' or '.tar' that you would like ls # to colorize below. Put the extension, a space, and the color init string. # (and any comments you want to add after a '#') # Archives .btm 00;32 .tar 00;31 .tgz 00;31 .arj 00;31 .gz 00;31 .bz2 00;31 # Packages .deb 04;35 .rpm 04;35 # Images .jpg 00;35 .gif 00;35 # GIF SUX !!! .bmp 00;35 .xbm 00;35 .xpm 00;35 .tif 00;35 .png 00;35 # Sons .mp3 00;33 .xm 00;33 .ogg 00;33 # Doc .pdf 00;36 .PDF 00;36 .ps 00;36 zsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/0000755000175000017500000000000011103635725022542 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_mplayer0000644000175000017500000001575111103635725024306 0ustar alessioalessio#compdef mplayer # # MPlayer Zsh function # Feb 2002, Bruno Bonfils # thanks to #zsh@irc.openprojects.net (specially Clint) # _audio-codec-list () { if ( [[ ${+_mplayer_audio_codec} -eq 0 ]] || _cache_invalid MPlayer_ac ) && ! _retrieve_cache MPlayer_ac; then local buffer version buffer=(${(@f)"$(mplayer -ac help)"}) version=buffer[1] if [[ "$version" = *\0.50* ]]; then _mplayer_audio_codec=(${buffer[3,-1]%% *}) else _mplayer_audio_codec=(${buffer[9,-1]%% *}) fi _store_cache MPlayer_ac _mplayer_audio_codec fi _wanted audio-codec expl 'audio-codec' compadd $_mplayer_audio_codec } _audio-driver-list () { if ( [[ ${+_mplayer_audio_driver} -eq 0 ]] || _cache_invalid MPlayer_ao ) && ! _retrieve_cache MPlayer_ao; then local buffer version buffer=(${(@f)"$(mplayer -ao help)"}) version=$buffer[1] if [[ "$version" = *\0.50* ]]; then _mplayer_audio_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*}) else _mplayer_audio_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*}) fi _store_cache MPlayer_ao _mplayer_audio_driver fi _wanted audio-driver expl 'audio-driver' compadd $_mplayer_audio_driver } _video-codec-list () { if ( [[ ${+_mplayer_video_codec} -eq 0 ]] || _cache_invalid MPlayer_vc ) && ! _retrieve_cache MPlayer_vc; then local buffer version buffer=(${(@f)"$(mplayer -vc help)"}) version=buffer[1] if [[ "$version" = *\0.50* ]]; then _mplayer_video_codec=(${buffer[3,-1]%% *}) else _mplayer_video_codec=(${buffer[9,-1]%% *}) fi _store_cache MPlayer_vc _mplayer_video_codec fi _wanted video-codec expl 'video-codec' compadd $_mplayer_video_codec } _video-driver-list () { if ( [[ ${+_mplayer_video_driver} -eq 0 ]] || _cache_invalid MPlayer_vo ) && ! _retrieve_cache MPlayer_vo; then local buffer version buffer=(${(@f)"$(mplayer -vo help)"}) version=$buffer[1] if [[ "$version" = *\0.50* ]]; then _mplayer_video_driver=(${${buffer[3,-1]/[[:blank:]]/}%%[[:blank:]]*}) else _mplayer_video_driver=(${${buffer[7,-1]/[[:blank:]]/}%%[[:blank:]]*}) fi _store_cache MPlayer_vo _mplayer_video_driver fi _wanted video-driver expl 'video-driver' compadd $_mplayer_video_driver } _skins-list () { local _default_skin if zstyle -a ":completion:${curcontext}:" default-skin _default_skin; then if ( [[ -d ~/.mplayer/Skin/$_default_skin ]] || [[ -d /usr/local/share/Skin/mplayer/$_default_skin ]] ); then compadd $_default_skin && return 0 fi fi if ( [[ ${+_mplayer_skins} -eq 0 ]] || _cache_invalid MPlayer_skins ) && ! _retrieve_cache MPlayer_skins; then if [[ -d ~/.mplayer/Skin ]]; then _mplayer_skins=(${(o)$(ls ~/.mplayer/Skin)}) fi if [[ -d /usr/local/share/mplayer/Skin ]]; then _mplayer_skins=($_mplayer_skins ${(o)$(ls /usr/local/share/mplayer/Skin)}) fi _store_cache MPlayer_skins _mplayer_skins fi _wanted skin expl 'skin' compadd $_mplayer_skins } _arguments -C -s \ '-abs[sound card audio buffer size(in bytes, default: measuring)]:buffer size' \ '-ac[force usage of a specific audio codec]:audio-codec attachment:_audio-codec-list' \ '-afm[force usage of a specific audio codec family]:audio-codec-family:(1 2 3 4 5)' \ '-aid[select audio channel]:audio-channel' \ '-ao[audio driver]:audio-driver attachment:_audio-driver-list' \ '-aspect[set aspect ratio of movies]:ratio' \ '-benchmark[use with combination with -nosound and -vo null for benchmarking]' \ '-chapter[specify which chapter to start playing at]:chapter' \ '-config[specifies where to search for config files]' \ '-delay[audio delay in seconds (may be +/- float value)]:delay' \ '-display[specify the hostname and display number of the X server]:display attachment:_x_display' \ '-double[enable double buffering]' \ '-dumpaudio[writes audio stream of the file to ./stream.dump]' \ '-dvdkey[key to decrypt stream encoded with css]:key' \ '-dvd[tell MPlayer which movies to play]:titleid' \ '-fbmode[change videomode from /etc/fb.modes]:fbmode' \ '-fbmodeconfig[use config file instead /etc/fb.modes]:fbmodeconfig:_files' \ '-fb[specifies the framebuffer device to user]' \ '-ffactor[resample alphamap of the font]:factor:(0 0.75 1 10)' \ '-forceidx[force rebuilding of index]' \ '-forcexv[force using xvideo (sdl)]' \ '-fps[force frame rate (if value is wrong in the header)]:frame-rate' \ '-framedrop[enable slow dropping (for slow machine)]' \ '-framedrop[frame dropping]' \ '-frames[mplayer plays number frame, and quits]:frame-number' \ '-fs[fullscreen]' \ '-fsmode[fullscreen mode]:fs-mode:(0 1 2 3)' \ '-gui[start with gui mode]' \ '-skin[skin name]:skin attachment:_skins-list' \ '-idx[rebuilds index of the avi]' \ '-include[specify config file to be parsed after the default]:config-file:_files' \ '-lircconf[specifies a configfile for lirc]:lirc-config-files attachment:_files' \ '-mc[maximun sync correction per 5 frames (in second)]:max-sync-correction' \ '-monitoraspect[set aspect ratio of your screen]:ratio' \ '-ni[force usage of non-interlaced avi parser]' \ '-nobps[do not use avg byte/sec value for A-V sync (AVI)]' \ '-nobps[use alternative A-V sync method for AVI files]' \ '-nodouble[disable double buffering (default)]' \ '-nodshow[disable usage of directshow video codecs]' \ '-noframedrop[no frame dropping]' \ '-nosound[no sound]' \ '-osdlevel[specifies which mode the osd should start]:osd-level:(0 1 2)' \ '-pp[apply postprocess filter]:filter attachment:_filter-list' \ '-quiet[display less output, status messages]' \ '-sb[seek to byte position]:byte' \ '-srate[specifies Hz to playback audio on]:frequence' \ '-ss[seek to given time position (format hh:mm\[:ss\])]:position' \ '-steromode[select type of mpeg1 stereo output]:stereo-mode:(0 1 2)' \ '-subfps[specify frame/sec rate of subtitle file only]:rate' \ '-sub[use/display this subtitle file]:subtitle:_files' \ '-unicode[tells mplayer to handle the subtitle file as unicode]' \ '-utf8[tells mplayer to handle the subtitle file as utf8]' \ '-vcd[play video cd track]:track' \ '-vc[force usage of a specific video codec]:video-codec attachment:_video-codec-list' \ '-v[enable verbose output]' \ '-vfm[force usage of a specific video codec family]:video-codec-family:(1 2 3 4 5)' \ '-vid[select video channel]:video-channel' \ '-vm[use XF86VidMode extension for mode changing]' \ '-vo[video driver]:video-driver attachment:_video-driver-list' \ '-x[scale image to x width if driver supports]:width' \ '-xy[scale image by factor if driver supports]:factor' \ '-y[scale image to y height if driver supports]:height' \ '-zoom[use software scaling, where available (use with -nofs)]' \ '-z[specify compression level for png output]:compression-level:(0 1 2 3 4 5 6 7 8)' \ "*:video file:_files -g '*.(#i)(mpg|avi|mpeg|mov|asf|vob|mjpg)'" \ && return 0 return 1 zsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_gpg.zwc0000644000175000017500000001621011103635725024203 0ustar alessioalessioD4.0.2|o |C  _gpgAiAFA,e-A CZ+$9lApAFA,e-A C Z+@UA"jj aYie  %A]=em !"#$%&I()*+,%-..CF/AF/_pub-keys-listlocallistMogpg --list-keys 2>/dev/null:%<>//<>/_wantedexplpublic keycompaddlist_sec-keys-listlocallistMogpg --list-secret-keys 2>/dev/null:%<>//<>/_wantedexplsecret keycompaddlist_arguments-a[create ASCII armored output]-o[write output to file]:_files attachment:_files-u+[use name as the user ID to sign]:user attachment:_users(-b --detach-sign)-b--detach-sign[make a detached signature](-s --sign)-s--sign[sign a file]:file attachment:_files(-e --encrypt)-e--encrypt[encrypt data. this option may be combined with --sign](-c --symetric)-c--symetric[encrypt with symmetric cypher only]-h[help]--clearsign[make a clear text signature]--check-sigs[lists key, signatures and check them]:key attachment:_pub-keys-list--decrypt[decrypt file or stdin]:file attachment:_files--delete-key[remove key from public keyring]:key attachment:_pub-keys-list--delete-secret-key[remove key from public & private keyring]:key attachment:_sec-keys-list--delete-secret-and-public-key[remove key from private & public keyring]:key attachment:_sec-keys-list--edit-key[a menu for edit yours keys]:key attachment:_pub-keys-list--export[export all key from all keyrings]:key attachment:_pub-keys-list--export-all[export all key and not OpenPGP compatible keys]--export-ownertrust[list the assigned ownertrust values in ASCII format]--export-secret-keys[export a list of secret keys]:key attachment:_sec-keys-list--export-secret-subkeys[same as --export but export the secret keys instead]:key attachment:_sec-keys-list--fast-import[import a file without build trustdb]:_files attachment:_files--fingerprint[list all keys with their fingerprints]:key attachment:_pub-keys-list--gen-key[generate a new pair key]--gen-random[emit random bytes of the given level quality]--gen-prime[use the source, luke :-)]--import[import a gpg key from a file]:_files attachment:_files--import-ownertrust[update the trustdb with a file]:_files attachment:_files--keyserver[use server for send/recv keys]:_hosts attachment:_hosts--list-keys[list all keys]:key attachment:_pub-keys-list--list-public-keys[list all public keys]:key attachment:_pub-keys-list--list-secret-keys[list all secret keys]:key attachment:_pub-keys-list--list-packets[list only the sequence of packets]--list-sigs[lists keys and signatures]:key attachment:_pub-keys-list--lsign-key[sign a key but mark not is as non-exportable]:key attachment:_pub-keys-list--print-md[Print message digest of the given algorithm for all given files]--recv-keys[receive a list of keys from a keyserver]:key attachment:_pub-keys-list--send-keys[send keys to a keyserver]:key attachment:_pub-keys-list--sign-key[sign a key]:key attachment:_pub-keys-list --store[store only]--trusted-key[assume that the specified key is trustworthy]--verify[verify a signature]:file attachment:_files--verify-files[verify a list of files]:_files attachment_filesreturnD4.0.2|o |C  _gpgAiAF,Ae-A C+Z$9lApAF,Ae-A C +Z@UA"jj aYie  %A]=em !"#$%&(I)*+,-%..CF/AF/_pub-keys-listlocallistMogpg --list-keys 2>/dev/null:%<>//<>/_wantedexplpublic keycompaddlist_sec-keys-listlocallistMogpg --list-secret-keys 2>/dev/null:%<>//<>/_wantedexplsecret keycompaddlist_arguments-a[create ASCII armored output]-o[write output to file]:_files attachment:_files-u+[use name as the user ID to sign]:user attachment:_users(-b --detach-sign)-b--detach-sign[make a detached signature](-s --sign)-s--sign[sign a file]:file attachment:_files(-e --encrypt)-e--encrypt[encrypt data. this option may be combined with --sign](-c --symetric)-c--symetric[encrypt with symmetric cypher only]-h[help]--clearsign[make a clear text signature]--check-sigs[lists key, signatures and check them]:key attachment:_pub-keys-list--decrypt[decrypt file or stdin]:file attachment:_files--delete-key[remove key from public keyring]:key attachment:_pub-keys-list--delete-secret-key[remove key from public & private keyring]:key attachment:_sec-keys-list--delete-secret-and-public-key[remove key from private & public keyring]:key attachment:_sec-keys-list--edit-key[a menu for edit yours keys]:key attachment:_pub-keys-list--export[export all key from all keyrings]:key attachment:_pub-keys-list--export-all[export all key and not OpenPGP compatible keys]--export-ownertrust[list the assigned ownertrust values in ASCII format]--export-secret-keys[export a list of secret keys]:key attachment:_sec-keys-list--export-secret-subkeys[same as --export but export the secret keys instead]:key attachment:_sec-keys-list--fast-import[import a file without build trustdb]:_files attachment:_files--fingerprint[list all keys with their fingerprints]:key attachment:_pub-keys-list--gen-key[generate a new pair key]--gen-random[emit random bytes of the given level quality]--gen-prime[use the source, luke :-)]--import[import a gpg key from a file]:_files attachment:_files--import-ownertrust[update the trustdb with a file]:_files attachment:_files--keyserver[use server for send/recv keys]:_hosts attachment:_hosts--list-keys[list all keys]:key attachment:_pub-keys-list--list-public-keys[list all public keys]:key attachment:_pub-keys-list--list-secret-keys[list all secret keys]:key attachment:_pub-keys-list--list-packets[list only the sequence of packets]--list-sigs[lists keys and signatures]:key attachment:_pub-keys-list--lsign-key[sign a key but mark not is as non-exportable]:key attachment:_pub-keys-list--print-md[Print message digest of the given algorithm for all given files]--recv-keys[receive a list of keys from a keyserver]:key attachment:_pub-keys-list--send-keys[send keys to a keyserver]:key attachment:_pub-keys-list--sign-key[sign a key]:key attachment:_pub-keys-list --store[store only]--trusted-key[assume that the specified key is trustworthy]--verify[verify a signature]:file attachment:_files--verify-files[verify a list of files]:_files attachment_filesreturnzsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_mutt.zwc0000644000175000017500000001033011103635725024414 0ustar alessioalessiol4.0.4xYo xY`O4$_muttA |3ACfj A"djj-yY1Y%%  % ) %  y FA<CF0FA.qAA0Afj1ADxA"jjbFp2ABfj%"3A D8QAC jjA A {jA 0A"8 AB+Q F$` F`A,.eA f`A( 8QjjbAC FAFlocalcurcontextcurcontextstatelineexpltypesetopt_args_arguments::recipient:->userhostalias*-a[attach file using MIME]:file attachment:_files*-b[specify a BCC recipient]:BCC recipient:->userhost*-c[specify a CC recipient]:CC recipient:->userhost-e+[specify a post-init configuration command]:post-init configuration:-f+[specify mailbox to load]:mailbox: _mailboxes-F+[specify an init file]:init file:_files-h[display help]-H+[specify a draft file for message]:draft file:_files-i+[specify file to include in message]:include file:_files-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)-n[bypass system configuration]-p[resume postponed message]-R[open in read-only mode]-s+[specify a subject]:subject:-v[display mutt version]-x[emulate mailx compose]-y[start listing mailboxes]-z[start only if new messages]-Z[open first mailbox with new mail]returnstateuserhostaliascompset*@_descriptionhostsremote host name_hostsexpl[@]@*userslogin name_userssuf/.muttrc+_list_alias_cache_invalidmutt_alias_retrieve_cache_list_aliasoMf< ~/.muttrcalias/alias /%% _store_cache_wantedaliasalias namecompadd_list_aliasl4.0.4xYo xY`O4$_muttA |3ACf jAd"jj-yY1Y%%  % ) %  y FA<CFF0.AqAA0Afj1ADxA"jbjF2pABfj%"3A D8QA CjjA A {jA 0A8" AB+Q F$` F`,A.eA f`A( 8QjbjA CFAFlocalcurcontextcurcontextstatelineexpltypesetopt_args_arguments::recipient:->userhostalias*-a[attach file using MIME]:file attachment:_files*-b[specify a BCC recipient]:BCC recipient:->userhost*-c[specify a CC recipient]:CC recipient:->userhost-e+[specify a post-init configuration command]:post-init configuration:-f+[specify mailbox to load]:mailbox: _mailboxes-F+[specify an init file]:init file:_files-h[display help]-H+[specify a draft file for message]:draft file:_files-i+[specify file to include in message]:include file:_files-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)-n[bypass system configuration]-p[resume postponed message]-R[open in read-only mode]-s+[specify a subject]:subject:-v[display mutt version]-x[emulate mailx compose]-y[start listing mailboxes]-z[start only if new messages]-Z[open first mailbox with new mail]returnstateuserhostaliascompset*@_descriptionhostsremote host name_hostsexpl[@]@*userslogin name_userssuf/.muttrc+_list_alias_cache_invalidmutt_alias_retrieve_cache_list_aliasoMf< ~/.muttrcalias/alias /%% _store_cache_wantedaliasalias namecompadd_list_aliaszsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_mutt0000644000175000017500000000346411103635725023624 0ustar alessioalessio#compdef mutt local curcontext="$curcontext" state line expl suf typeset -A opt_args _arguments -C -s \ '::recipient:->userhostalias' \ '*-a[attach file using MIME]:file attachment:_files' \ '*-b[specify a BCC recipient]:BCC recipient:->userhost' \ '*-c[specify a CC recipient]:CC recipient:->userhost' \ '-e+[specify a post-init configuration command]:post-init configuration:' \ '-f+[specify mailbox to load]:mailbox: _mailboxes' \ '-F+[specify an init file]:init file:_files' \ '-h[display help]' \ '-H+[specify a draft file for message]:draft file:_files' \ '-i+[specify file to include in message]:include file:_files' \ '-m+[specify default mailbox type]:mailbox type:(mbox MMDF MH Maildir)' \ '-n[bypass system configuration]' \ '-p[resume postponed message]' \ '-R[open in read-only mode]' \ '-s+[specify a subject]:subject:' \ '-v[display mutt version]' \ '-x[emulate mailx compose]' \ '-y[start listing mailboxes]' \ '-z[start only if new messages]' \ '-Z[open first mailbox with new mail]' && return 0 if [[ "$state" = userhostalias ]]; then if compset -P '*@'; then _description hosts expl 'remote host name' _hosts "$expl[@]" -q -S, && return 0 else compset -S '@*' || suf='@' _description users expl 'login name' _users "$expl[@]" -q -S "$suf" # added by asyd (20020304) if [ -r ~/.muttrc ]; then # use cache if ( [[ ${+_list_alias} -eq 0 ]] || _cache_invalid mutt_alias ) && ! _retrieve_cache mutt_alias; then _list_alias=(${(o)${${(M)${(f)"$(< ~/.muttrc)"}##alias*}/alias /}%% *}) _store_cache mutt_alias _list_alias fi _wanted alias expl 'alias name' compadd -q -S, $_list_alias fi return 0 fi fi return 1 zsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_auto-apt0000644000175000017500000000337711103635725024370 0ustar alessioalessio#compdef auto-apt # Bruno Bonfils, local expl prev ret prev="$words[CURRENT-1]" # if there is a command in arguments ? if [[ -n $words[(r)(run|update|update-local|merge|del|check|list|search|debuilt|status)] ]] ; then # yes, add completion for command arguments and command options if [[ -n $words[(r)(update|update-local|merge)] && "$words[CURRENT]" = -* ]] ; then _wanted option expl 'option' compadd - "-a" && return 0; fi if [[ -n $words[(r)(check|list|search)] && "$words[CURRENT]" = -* ]] ; then _wanted option expl 'option' compadd - "-v" "-f" && return 0; fi case $prev in "run") _wanted command expl 'command' _files -g '*(/,*)' && return 0 ;; "del") _wanted package expl 'package' _deb_packages avail && return 0 ;; "search") _arguments ':pattern:' && return 0 ;; esac else # no, add completion for commands or options (and options arguments) compset -P "*," case $prev in "-a") local distribs distribs=("main" "contrib" "non-free" "non-US" "none") _wanted distribution expl 'distribution' compadd -q -S, $distribs ;; "-p") local hooks hooks=("exec" "open" "access" "stat" "none") _wanted hook expl 'hook' compadd -q -S, $hooks ;; "-D") _wanted file expl 'dbfile' _files ;; "-F") _wanted file expl 'filedb' _files ;; *) local commands options commands=("run" "update" "update-local" "merge" "del" "check" "list" "search" "debuild" "status") options=("-h" "-s" "-y" "-q" "-i" "-X" "-x" "-a" "-p" "-D" "-F" "-L") if [[ "$words[CURRENT]" = -* ]] ; then _wanted option expl 'option' compadd - $options else _wanted command expl 'command' compadd $commands fi ;; esac return 0 fi zsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_auto-apt.zwc0000644000175000017500000001014011103635725025154 0ustar alessioalessio(4.0.4Lo L   _auto-aptA,+A, ,AAC<A Ap AF1` qmk9A"$Cj5CFHAt 0 AF1` eqmk9A"(CjCFHA / !A"$8Yj9FHA"  XFHqA"FFHYA fjA Q /5A F$AL)e$IeA( -jjbi/AC FAL.eA( 4IjjbeAC A /%; A f ( At8 !I m  q - A9%( Q e y 5 A|A.;qmk9 A$j pA 8Y AFHlocalexplprevwords[CURRENT-1]wordsrrunupdateupdate-localmergedelchecklistsearchdebuiltstatuswordsrupdateupdate-localmergewords[CURRENT]_wantedoptionoptioncompadd-areturnwordsrchecklistsearch-v-fprevruncommandcommand_files*(/,*)delpackagepackage_deb_packagesavailsearch_arguments:pattern:compset*,distribsmaincontribnon-freenon-USnonedistributiondistributiondistribs-phooksexecopenaccessstathookhookhooks-Dfiledbfile-Ffiledbcommandsoptionsupdateupdate-localmergechecklistdebuildstatus-h-s-y-q-i-X-x-Loptionscommandss(4.0.4Lo L   _auto-aptA,+,A ,AAC<A Ap  FA`1 qm9kA$"Cj5CFHAt 0FA`1 eqm9kA("CjCFHA /!A$"8Y9jFHA " XFHqA"FFHYA fjA Q /5A F$LA)e$IeA( -jbji/A CFLA.eA( 4IjbjeA CA %/; A f  (tA8 ! I m  q  -A9% ( Q e y 5 A|.A;qm9k A$j pA 8Y AFHlocalexplprevwords[CURRENT-1]wordsrrunupdateupdate-localmergedelchecklistsearchdebuiltstatuswordsrupdateupdate-localmergewords[CURRENT]_wantedoptionoptioncompadd-areturnwordsrchecklistsearch-v-fprevruncommandcommand_files*(/,*)delpackagepackage_deb_packagesavailsearch_arguments:pattern:compset*,distribsmaincontribnon-freenon-USnonedistributiondistributiondistribs-phooksexecopenaccessstathookhookhooks-Dfiledbfile-Ffiledbcommandsoptionsupdateupdate-localmergechecklistdebuildstatus-h-s-y-q-i-X-x-Loptionscommandssandsmanmmandsuzsh-lovers-0.8.3/zsh_people/bruno_bonfils/functions/_mplayer.zwc0000644000175000017500000003701011103635725025100 0ustar alessioalessio4.0.4Lo LPP< _mplayerA j !A$#0#A"8ABQFdCFAf $@A, e$aA, @A  0A. q)A. eHpA.eHAf<HA Cp -A#j F[A$#0#A"8ABQFhCFAf(DA, e(eA, DA  0A. q1A. ePpA.ePaAfPA LlA;j  !A$#0#A"8ABQFdCFAf $@A, e$aA, @A  0A. q)A. eHpA.eHAf<HA Cp -ARj P[A$#0#A"8ABQFhCFAf(DA, e(eA, DA  0A. q1A. ePpA.ePaAfPA LlAj NAFAAPj mApC A0CGAB  A"FDeFAA"8AB QFDF|DAl0A A.e9AtA A6!aAfDA <\pD!A"!jjA !A"}#u$M%M&'a(])5**+--.Y//11Q2I33E44q55A789:U;A<!==>=??@AmBBCDEFGHI1JKKIMMNOPqQQRQSTC2FUA2FU_audio-codec-list+_mplayer_audio_codec_cache_invalidMPlayer_ac_retrieve_cachelocalbufferversion@fmplayer -ac helpbuffer1version0.50_mplayer_audio_codecbuffer3,-1%% buffer9,-1%% _store_cache_wantedaudio-codecexplaudio-codeccompadd_mplayer_audio_codec_audio-driver-list+_mplayer_audio_driver_cache_invalidMPlayer_ao_retrieve_cachelocalbufferversion@fmplayer -ao helpbuffer1version0.50_mplayer_audio_driverbuffer3-1/:blank:/%%:blank:buffer7-1/:blank:/%%:blank:_store_cache_wantedaudio-driverexplaudio-drivercompadd_mplayer_audio_driver_video-codec-list+_mplayer_video_codec_cache_invalidMPlayer_vc_retrieve_cachelocalbufferversion@fmplayer -vc helpbuffer1version0.50_mplayer_video_codecbuffer3,-1%% buffer9,-1%% _store_cache_wantedvideo-codecexplvideo-codeccompadd_mplayer_video_codec_video-driver-list+_mplayer_video_driver_cache_invalidMPlayer_vo_retrieve_cachelocalbufferversion@fmplayer -vo helpbuffer1version0.50_mplayer_video_driverbuffer3-1/:blank:/%%:blank:buffer7-1/:blank:/%%:blank:_store_cache_wantedvideo-driverexplvideo-drivercompadd_mplayer_video_driver_skins-listlocal_default_skinzstyle:completion:curcontext:default-skin/.mplayer/Skin/_default_skin/usr/local/share/Skin/mplayer/_default_skincompadd_default_skinreturn+_mplayer_skins_cache_invalidMPlayer_skins_retrieve_cache/.mplayer/Skin_mplayer_skinsols ~/.mplayer/Skin/usr/local/share/mplayer/Skin_mplayer_skinsols /usr/local/share/mplayer/Skin_store_cache_wantedskinexplskin_arguments-abs[sound card audio buffer size(in bytes, default: measuring)]:buffer size-ac[force usage of a specific audio codec]:audio-codec attachment:_audio-codec-list-afm[force usage of a specific audio codec family]:audio-codec-family:(1 2 3 4 5)-aid[select audio channel]:audio-channel-ao[audio driver]:audio-driver attachment:_audio-driver-list-aspect[set aspect ratio of movies]:ratio-benchmark[use with combination with -nosound and -vo null for benchmarking]-chapter[specify which chapter to start playing at]:chapter-config[specifies where to search for config files]-delay[audio delay in seconds (may be +/- float value)]:delay-display[specify the hostname and display number of the X server]:display attachment:_x_display-double[enable double buffering]-dumpaudio[writes audio stream of the file to ./stream.dump]-dvdkey[key to decrypt stream encoded with css]:key-dvd[tell MPlayer which movies to play]:titleid-fbmode[change videomode from /etc/fb.modes]:fbmode-fbmodeconfig[use config file instead /etc/fb.modes]:fbmodeconfig:_files-fb[specifies the framebuffer device to user]-ffactor[resample alphamap of the font]:factor:(0 0.75 1 10)-forceidx[force rebuilding of index]-forcexv[force using xvideo (sdl)]-fps[force frame rate (if value is wrong in the header)]:frame-rate-framedrop[enable slow dropping (for slow machine)]-framedrop[frame dropping]-frames[mplayer plays number frame, and quits]:frame-number-fs[fullscreen]-fsmode[fullscreen mode]:fs-mode:(0 1 2 3)-gui[start with gui mode]-skin[skin name]:skin attachment:_skins-list-idx[rebuilds index of the avi]-include[specify config file to be parsed after the default]:config-file:_files-lircconf[specifies a configfile for lirc]:lirc-config-files attachment:_files-mc[maximun sync correction per 5 frames (in second)]:max-sync-correction-monitoraspect[set aspect ratio of your screen]:ratio-ni[force usage of non-interlaced avi parser]-nobps[do not use avg byte/sec value for A-V sync (AVI)]-nobps[use alternative A-V sync method for AVI files]-nodouble[disable double buffering (default)]-nodshow[disable usage of directshow video codecs]-noframedrop[no frame dropping]-nosound[no sound]-osdlevel[specifies which mode the osd should start]:osd-level:(0 1 2)-pp[apply postprocess filter]:filter attachment:_filter-list-quiet[display less output, status messages]-sb[seek to byte position]:byte-srate[specifies Hz to playback audio on]:frequence-ss[seek to given time position (format hh:mm\[:ss\])]:position-steromode[select type of mpeg1 stereo output]:stereo-mode:(0 1 2)-subfps[specify frame/sec rate of subtitle file only]:rate-sub[use/display this subtitle file]:subtitle:_files-unicode[tells mplayer to handle the subtitle file as unicode]-utf8[tells mplayer to handle the subtitle file as utf8]-vcd[play video cd track]:track-vc[force usage of a specific video codec]:video-codec attachment:_video-codec-list-v[enable verbose output]-vfm[force usage of a specific video codec family]:video-codec-family:(1 2 3 4 5)-vid[select video channel]:video-channel-vm[use XF86VidMode extension for mode changing]-vo[video driver]:video-driver attachment:_video-driver-list-x[scale image to x width if driver supports]:width-xy[scale image by factor if driver supports]:factor-y[scale image to y height if driver supports]:height-zoom[use software scaling, where available (use with -nofs)]-z[specify compression level for png output]:compression-level:(0 1 2 3 4 5 6 7 8)*:video file:_files -g '*.(#i)(mpg|avi|mpeg|mov|asf|vob|mjpg)'return4.0.4Lo LPP < _mplayerA j!A$##0A8"ABQFdCFAf $@,A e$a,A @A 0.A q).A eHp.AeHAf<HA Cp -A# jF[A$##0A8"ABQFhCFAf(D,A e(e,A DA 0.A q1.A ePp.AePaAfPA LlA; j !A$##0A8"ABQFdCFAf $@,A e$a,A @A 0.A q).A eHp.AeHAf<HA Cp -AR jP[A$##0A8"ABQFhCFAf(D,A e(e,A DA 0.A q1.A ePp.AePaAfPA LlAj NAFAAP jmApC  A0CGAB  A"FDeFAA8"AB QFDF|DlA0A .Ae9tAA 6A!aAfDA <\pD!A"!jjA !"A#}$u%M&M'(a)]*5*+--./Y/112Q3I34E45q57A89:;U?=?@ABmBCDEFGHIJ1KKMIMNOPQqRQSQT2CFUA2FU_audio-codec-list+_mplayer_audio_codec_cache_invalidMPlayer_ac_retrieve_cachelocalbufferversion@fmplayer -ac helpbuffer1version0.50_mplayer_audio_codecbuffer3,-1%% buffer9,-1%% _store_cache_wantedaudio-codecexplaudio-codeccompadd_mplayer_audio_codec_audio-driver-list+_mplayer_audio_driver_cache_invalidMPlayer_ao_retrieve_cachelocalbufferversion@fmplayer -ao helpbuffer1version0.50_mplayer_audio_driverbuffer3-1/:blank:/%%:blank:buffer7-1/:blank:/%%:blank:_store_cache_wantedaudio-driverexplaudio-drivercompadd_mplayer_audio_driver_video-codec-list+_mplayer_video_codec_cache_invalidMPlayer_vc_retrieve_cachelocalbufferversion@fmplayer -vc helpbuffer1version0.50_mplayer_video_codecbuffer3,-1%% buffer9,-1%% _store_cache_wantedvideo-codecexplvideo-codeccompadd_mplayer_video_codec_video-driver-list+_mplayer_video_driver_cache_invalidMPlayer_vo_retrieve_cachelocalbufferversion@fmplayer -vo helpbuffer1version0.50_mplayer_video_driverbuffer3-1/:blank:/%%:blank:buffer7-1/:blank:/%%:blank:_store_cache_wantedvideo-driverexplvideo-drivercompadd_mplayer_video_driver_skins-listlocal_default_skinzstyle:completion:curcontext:default-skin/.mplayer/Skin/_default_skin/usr/local/share/Skin/mplayer/_default_skincompadd_default_skinreturn+_mplayer_skins_cache_invalidMPlayer_skins_retrieve_cache/.mplayer/Skin_mplayer_skinsols ~/.mplayer/Skin/usr/local/share/mplayer/Skin_mplayer_skinsols /usr/local/share/mplayer/Skin_store_cache_wantedskinexplskin_arguments-abs[sound card audio buffer size(in bytes, default: measuring)]:buffer size-ac[force usage of a specific audio codec]:audio-codec attachment:_audio-codec-list-afm[force usage of a specific audio codec family]:audio-codec-family:(1 2 3 4 5)-aid[select audio channel]:audio-channel-ao[audio driver]:audio-driver attachment:_audio-driver-list-aspect[set aspect ratio of movies]:ratio-benchmark[use with combination with -nosound and -vo null for benchmarking]-chapter[specify which chapter to start playing at]:chapter-config[specifies where to search for config files]-delay[audio delay in seconds (may be +/- float value)]:delay-display[specify the hostname and display number of the X server]:display attachment:_x_display-double[enable double buffering]-dumpaudio[writes audio stream of the file to ./stream.dump]-dvdkey[key to decrypt stream encoded with css]:key-dvd[tell MPlayer which movies to play]:titleid-fbmode[change videomode from /etc/fb.modes]:fbmode-fbmodeconfig[use config file instead /etc/fb.modes]:fbmodeconfig:_files-fb[specifies the framebuffer device to user]-ffactor[resample alphamap of the font]:factor:(0 0.75 1 10)-forceidx[force rebuilding of index]-forcexv[force using xvideo (sdl)]-fps[force frame rate (if value is wrong in the header)]:frame-rate-framedrop[enable slow dropping (for slow machine)]-framedrop[frame dropping]-frames[mplayer plays number frame, and quits]:frame-number-fs[fullscreen]-fsmode[fullscreen mode]:fs-mode:(0 1 2 3)-gui[start with gui mode]-skin[skin name]:skin attachment:_skins-list-idx[rebuilds index of the avi]-include[specify config file to be parsed after the default]:config-file:_files-lircconf[specifies a configfile for lirc]:lirc-config-files attachment:_files-mc[maximun sync correction per 5 frames (in second)]:max-sync-correction-monitoraspect[set aspect ratio of your screen]:ratio-ni[force usage of non-interlaced avi parser]-nobps[do not use avg byte/sec value for A-V sync (AVI)]-nobps[use alternative A-V sync method for AVI files]-nodouble[disable double buffering (default)]-nodshow[disable usage of directshow video codecs]-noframedrop[no frame dropping]-nosound[no sound]-osdlevel[specifies which mode the osd should start]:osd-level:(0 1 2)-pp[apply postprocess filter]:filter attachment:_filter-list-quiet[display less output, status messages]-sb[seek to byte position]:byte-srate[specifies Hz to playback audio on]:frequence-ss[seek to given time position (format hh:mm\[:ss\])]:position-steromode[select type of mpeg1 stereo output]:stereo-mode:(0 1 2)-subfps[specify frame/sec rate of subtitle file only]:rate-sub[use/display this subtitle file]:subtitle:_files-unicode[tells mplayer to handle the subtitle file as unicode]-utf8[tells mplayer to handle the subtitle file as utf8]-vcd[play video cd track]:track-vc[force usage of a specific video codec]:video-codec attachment:_video-codec-list-v[enable verbose output]-vfm[force usage of a specific video codec family]:video-codec-family:(1 2 3 4 5)-vid[select video channel]:video-channel-vm[use XF86VidMode extension for mode changing]-vo[video driver]:video-driver attachment:_video-driver-list-x[scale image to x width if driver supports]:width-xy[scale image by factor if driver supports]:factor-y[scale image to y height if driver supports]:height-zoom[use software scaling, where available (use with -nofs)]-z[specify compression level for png output]:compression-level:(0 1 2 3 4 5 6 7 8)*:video file:_files -g '*.(#i)(mpg|avi|mpeg|mov|asf|vob|mjpg)'returnzsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/0000755000175000017500000000000011103635725021136 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/variables.rc0000644000175000017500000000056311103635725023440 0ustar alessioalessio PATH=$PATH:~/.zsh/bin:~/bin:/sbin:/usr/sbin:/usr/local/sbin export PATH [ -d /usr/local/info ] && export INFO_PATH="$INFO_PATH;/usr/local/info" # vi/vim if [ -x `which vim` ]; then alias vi="vim" export EDITOR=vim export VISUAL=vim fi # less if [ -x `which less` ]; then export PAGER=less export LESS="-ir" fi export CVSROOT=:pserver:asyd@localhost:/home/cvs zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/functions.rc0000644000175000017500000000241211103635725023473 0ustar alessioalessio# -*- shell-script -*- # # Trace libraries load by first argument (ELF only) # (note: exactly same result with ldd) tracelib () { LD_TRACE_LOADED_OBJECTS=1 $1 } # debian upgrade # if the first argument is void, proceed local upgrade # else, send command via ssh # assume user have sufficient permission for upgrade # without interaction # # Note: # i use sudo with the follow lines # # Cmnd_Alias DEBIAN = /usr/bin/apt-get, /usr/bin/dpkg # asyd ALL = PASSWD: ALL, NOPASSWD: DEBIAN upgrade () { if [ -z $1 ] ; then sudo apt-get update sudo apt-get -u upgrade else ssh $1 sudo apt-get update # ask before the upgrade local dummy ssh $1 sudo apt-get --no-act upgrade echo -n "Process the upgrade ?" read -q dummy if [[ $dummy == "y" ]] ; then ssh $1 sudo apt-get -u upgrade --yes fi fi } compdef _hosts upgrade lsperm () { echo $1 | perl -e 'chomp($s=<>);$p=(stat($s))[2] & 07777;printf "$s -> %04o\n",$p' } findnosecure () { find / -perm +4000 -print } function cd () { if [[ -z $2 ]]; then if [[ -f $1 ]]; then builtin cd $1:h else builtin cd $1 fi else if [[ -z $3 ]]; then builtin cd $1 $2 else echo cd: too many arguments fi fi } zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/alias.rc0000644000175000017500000000421411103635725022556 0ustar alessioalessio# -*- shell-script -*-x # I prefer interactive mode alias mv="mv -i" alias rm="rm -i" alias cp="cp -i" alias ll="ls -l" alias la="ls -a" alias lsd='ls -ld *(-/DN)' alias ssh="ssh -C" alias df="df -h" # zsh corret clea to flea [ -x `which flea` ] && alias clea="clear" # start mutt with list mailboxes [ -x `which mutt` ] && alias mutt="mutt -y" # aterm [ -x `which aterm` ] && alias aterm="aterm -bg black -fg AntiqueWhite +sb --geometry 110x48+0+10" # LDAP if [ -x `which ldapsearch` ]; then local BASE_DN="dc=hash-group,dc=net" local ADMIN_DN="cn=admin,ou=People,$BASE_DN" alias ldapadd="ldapadd -W -x -D \"$ADMIN_DN\"" alias ldapmodify="ldapmodify -W -x -D \"$ADMIN_DN\"" fi # do a du -hs on each dir on current path alias lsdir="for dir in *;do;if [ -d \$dir ];then;du -hsL \$dir 2>/dev/null;fi;done" # misc [ -x `which makepasswd` ] && alias makepasswd="makepasswd | tr A-Z a-z" # ssh key management if [ -x `which keychain` ] && [ -r ~/.ssh/id_dsa ] ; then # run keychain keychain ~/.ssh/id_dsa # File to load depend on keychain version ~#[{~# (suckers) # if [ -d ~/.keychain ] # then # . ~/.keychain/`hostname`-sh # else # . ~/.ssh-agent-`hostname` # fi [ -r ~/.ssh-agent-`hostname` ] && . ~/.ssh-agent-`hostname` [ -r ~/.keychain/`hostname`-sh ] && ~/.keychain/`hostname`-sh else [ -x `which startx` ] && [ -x `which ssh-agent` ] && alias startx="ssh-agent startx" fi # Minicom (serial console rulez) [ -x `which minicom` ] && alias minicom="minicom -o" # Aterm [ -x `which aterm` ] && alias aterm="aterm -bg black -fg AntiqueWhite +sb --geometry 110x48+112+32" # Make a certificat alias cert="openssl req -new -x509 -nodes -out cert.pem -keyout cert.key -days 365" # ping (since control-c don't work for break ping) alias ping="ping -c 3" # IPv6 Stuff alias netstat6="netstat -A inet6" # Indent (according to GCS - Gnu Coding Standards) [ -x `which indent` ] && alias indent="indent -nbad -bap -nbc -bbo -bl -bli2 -bls -ncdb -nce -cp1 -cs -di2 -ndj -nfc1 -nfca -hnl -i2 -ip5 -lp -pcs -psl -nsc -nsob" # acpi (show all available informations) [ -x `which acpi` ] && alias acpi="acpi -V" # Etags [ -x `which etags` ] && alias etags="etags --members" zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/history.rc0000644000175000017500000000051711103635725023170 0ustar alessioalessio# # History options # setopt EXTENDED_HISTORY # add a timestamp and the duration of each command setopt SHARE_HISTORY # _all_ zsh sessions share the same history files setopt HIST_IGNORE_ALL_DUPS # ignores duplications HISTFILE=~/.zsh/histories/${$(hostname)//.*/} HISTSIZE=10000 SAVEHIST=10000 export HISTFILE HISTSIZE SAVEHIST zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/zstyle.rc0000644000175000017500000000242111103635725023015 0ustar alessioalessio# -*- shell-script -*- # zstyles # some local variables local _myhosts _myuser _myhosts=($(<~/.zsh/hosts) ${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*}) _myusers=($(<~/.zsh/rc.users)) # Add host and user zstyle ':completion:*' users $_myusers zstyle ':completion:*' hosts $_myhosts # Use 'ps -au$USER' for fetch user process list zstyle ':completion:*:processes' command 'ps -au$USER' # Verbose mode zstyle ':completion:*:descriptions' format '%B%d%b' # Use cache zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zsh/cache # prevent CVS files/directory completion if [ -x `which cvs` ] then zstyle ':completion:*:(all-|)files' ignored-patterns '(|*/)CVS' zstyle ':completion:*:cd:*' ignored-patterns '(*/)#CVS' fi # others zstyle zstyle ':completion:*:*:mplayer:*' default-skin MidnightLove zstyle ':completion:*:*:zless:*' file-patterns '*(-/):directories *.gz:all-files' zstyle ':completion:*:*:gqview:*' file-patterns '*(-/):directories :*.(png|jpeg|jpg):all-files' zstyle ':completion:*:*:lintian:*' file-patterns '*(-/):directories *.deb' zstyle ':completion:*:*:less:*' ignored-patterns '*.gz' zstyle ':completion:*:*:zcompile:*' ignored-patterns '(*~|*.zwc)' # few simple completion definitions [ -x `which mtr` ] && compdef _hosts mtr zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/titles.rc0000644000175000017500000000060611103635725022772 0ustar alessioalessioif [ $TERM = "screen" ] then function title { # Use these two for GNU Screen: local myhost myhost=${$(hostname)//.*/} print -nR $'\033k'$myhost$'\033'\\ print -nR $'\033]0;'$1$'\a' } preexec () { emulate -L zsh local -a cmd; cmd=(${(z)1}) title ${$(hostname)//.*/} "$cmd[1,-1]" } eval "function precmd () { $functions[precmd] title \$PWD }" fi zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/bindkeys.rc0000644000175000017500000000036111103635725023274 0ustar alessioalessio# -*- shell-script -*- # # load emacs bindkeys bindkey -e ## # bash kill word autoload -U bash-backward-kill-word zle -N bash-backward-kill-word bindkey "^F" bash-backward-kill-word # example : # cd /usr/share/doc'^F' kill the word doc ## zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/options.rc0000644000175000017500000000134511103635725023162 0ustar alessioalessio# -*- shell-script -*- # # Zsh Options # export LISTPROMPT # in order to scroll if completion list is too big setopt auto_cd # a commande like % /usr/local is equivalent to cd /usr/local setopt nohup # don't send HUP signal when closing term session setopt extended_glob # in order to use #, ~ and ^ for filename generation setopt always_to_end # move to cursor to the end after completion setopt notify # report the status of backgrounds jobs immediately setopt correct # try to correct the spelling if possible setopt rmstarwait # wait 10 seconds before querying for a rm which contains a * setopt printexitvalue # show the exit-value if > 0 # Don't ecrase file with >, use >| (overwrite) or >> (append) instead set -C zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc/misc.rc0000644000175000017500000000111711103635725022417 0ustar alessioalessio# -*- shell-script -*- periodic () { rehash } export PERIOD=300 ### # Mail if [[ -x `which fetchmail` && ! -f ~/.fetchmail.pid && ! -f /tmp/.${USER}.fetchmailnoask ]] then local ans echo -n "Start fetchmail ? [y/n] " read -q ans if [[ $ans == "y" ]] then fetchmail else echo -n "Ask again ? [y/n] " read -q ans if [[ $ans == "n" ]] then # I use /tmp since it's purge every reboot echo "" >| /tmp/.${USER}.fetchmailnoask fi fi fi ### # Zftp # # load zftp module autoload -U zfinit zfinit # email address for anonymous ftp export EMAIL_ADDR=enjoy.zsh@foo.bar zsh-lovers-0.8.3/zsh_people/bruno_bonfils/Changelog0000644000175000017500000000050111103635725022340 0ustar alessioalessio-misc * Add per host resource file * Add per OS resource file * One history per host -- Bruno Bonfils Fri, 19 Dec 2003 18:58:10 +0100 -colors * suppress bold * add audio (xm, ogg) colors * add doc (pdf, ps) colors -- Bruno Bonfils Mon, 23 Dec 2002 11:32:36 +0100 zsh-lovers-0.8.3/zsh_people/bruno_bonfils/bin/0000755000175000017500000000000011103635725021302 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/bin/report-suid.zsh0000755000175000017500000000007011103635725024305 0ustar alessioalessio#!/bin/zsh echo "********" echo "* SetUID binaries :" zsh-lovers-0.8.3/zsh_people/bruno_bonfils/bin/zshist0000755000175000017500000000430211103635725022553 0ustar alessioalessio#! /usr/bin/python import sys, os, string, time import locale locale.setlocale(locale.LC_ALL,"") #some default definitions colours = { 'none' : "", 'default' : "\033[0m", 'bold' : "\033[1m", 'underline' : "\033[4m", 'blink' : "\033[5m", 'reverse' : "\033[7m", 'concealed' : "\033[8m", 'black' : "\033[30m", 'red' : "\033[31m", 'green' : "\033[32m", 'yellow' : "\033[33m", 'blue' : "\033[34m", 'magenta' : "\033[35m", 'cyan' : "\033[36m", 'white' : "\033[37m", 'on_black' : "\033[40m", 'on_red' : "\033[41m", 'on_green' : "\033[42m", 'on_yellow' : "\033[43m", 'on_blue' : "\033[44m", 'on_magenta' : "\033[45m", 'on_cyan' : "\033[46m", 'on_white' : "\033[47m", 'beep' : "\007" } timeformat = "%a %b %d %H:%M:%S %Y" delim1 = colours["bold"]+colours["red"] # before time string delim2 = colours["default"]+colours["yellow"]+":" # after time string delim3 = ": "+colours["default"] # before command delim4 = colours["default"] # at the end of line delim5 = colours["bold"]+colours["blue"] # before unrecognized line format for i in [ os.environ['HOME']+"/.zsh/misc/zshistrc"]: if os.path.isfile(i): execfile(i) if len(sys.argv) > 1: historyfile = sys.argv[1] if os.path.isdir(historyfile): historyfile = historyfile + "/.zsh/history" else: historyfile = os.environ['HOME']+"/.zsh/history" f = open(historyfile,"r") l = f.readlines() for i in l: try: s1 = string.split(i, ":",2) timestring = s1[1] s2 = string.split(s1[2], ";", 1) delaystring = s2[0] commandstring = s2[1][:-1] t = long(timestring) # seconds since the epoch print delim1+time.strftime(timeformat,time.localtime(t))+delim2+delaystring+delim3+commandstring+delim4 except: print delim5+i[:-1]+delim4 zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.users0000644000175000017500000000002311103635725022214 0ustar alessioalessioasyd bruno nioubie zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.host/0000755000175000017500000000000011103635725022112 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.host/jazzland.zsh0000644000175000017500000000042411103635725024455 0ustar alessioalessio# Prompts color export host_color="green" export domain_color="red" export path_color="blue" export date_color="white" export status_color="red" mailpath=($HOME/Mail/mbox'?Nouveau(x) message(s) dans mbox' $HOME/Mail/tux.u-strasbg'?Nouveau(x) message(s) dans tux') zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.host/workstation.zsh0000644000175000017500000000040711103635725025225 0ustar alessioalessioexport LC_CTYPE=fr_FR export LC_TIME=fr_FR # Prompts color export host_color="green" export domain_color="yellow" export path_color="red" export date_color="white" export status_color="red" mailpath=($HOME/Mail/spool/mbox.in'?Nouveau(x) message(s) dans mbox';) zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.host/julie.zsh0000644000175000017500000000017311103635725023751 0ustar alessioalessio# Prompts color export host_color="green" export domain_color="green" export path_color="green" export date_color="white" zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.host/fs.zsh0000644000175000017500000000017611103635725023254 0ustar alessioalessio# Prompts color export host_color="yellow" export domain_color="yellow" export path_color="yellow" export date_color="white" zsh-lovers-0.8.3/zsh_people/bruno_bonfils/hosts/0000755000175000017500000000000011103635725021672 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/hosts/general0000644000175000017500000000013211103635725023226 0ustar alessioalessiowwwkeys.us.pgp.net jazzland 62.129.173.1 carmya glou.net caroline wibutee smtp.axs-fr.net zsh-lovers-0.8.3/zsh_people/bruno_bonfils/hosts/cisco0000644000175000017500000000021711103635725022715 0ustar alessioalessio#dns-name;menu-name;menu-description wibutee;Wibutee;Router 1605R caroline;Caroline;Switch 2912XL carmya;Carmya;Bridge/Fw 1605 smtp.axs-fr.net zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.os/0000755000175000017500000000000011103635725021556 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.os/FreeBSD.zsh0000644000175000017500000000100711103635725023514 0ustar alessioalessio# Alias alias date-rfc822="date '+%a, %d %b %Y %X %z'" # Prompt autoload -U colors colors # Format date_format="%H:%M" date="%{$fg[$date_color]%}%D{$date_format}" host="%{$fg[$host_color]%}%n%{$reset_color%}~%{$fg[$domain_color]%}%m" cpath="%{$fg[$path_color]%}%/%b" end="%{$reset_color%}" PS1="$date ($host$end) $cpath $end%% " # Check for GNULS if [ -x $(which gnuls) ] ; then eval `dircolors $HOME/.zsh/misc/dircolors.rc` alias ls='gnuls --color' zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} fi zsh-lovers-0.8.3/zsh_people/bruno_bonfils/rc.os/Linux.zsh0000644000175000017500000000213211103635725023401 0ustar alessioalessioalias ls='ls --color' # prompt, colors are defined in host resource file autoload -U colors colors # Format date_format="%H:%M" date="%{$fg[$date_color]%}%D{$date_format}" host="%{$fg[$host_color]%}%n%{$reset_color%}~%{$fg[$domain_color]%}%m" cpath="%B%{$fg[$path_color]%}%/%b" end="%{$reset_color%}" # permit parameter expansion, command substitution and arithmetic expansion # in prompt setopt prompt_subst precmd () { local buffer load load=(${$(< /proc/loadavg)}) LOADAVG="$load[1] $load[2]" buffer=(${$(free)}) MEM="$((100 * $buffer[16] / $buffer[8]))%%" if [[ $buffer[19] != 0 ]]; then MEM="$MEM $((100 * $buffer[20] / $buffer[19]))%%" fi } stats="%{$fg[$status_color]%}[\$LOADAVG - \$MEM]" PS1="$date ($host$end) $cpath $end%% " RPS1="$stats%{$reset_color%}" export PS1 RPS1 # function use to toggle RPS1 (which is very ugly for copy/paste) function rmrps1 () { RPS1="" } function rps1 () { RPS1="$stats%{$reset_color%}" } # zstyle OS specific eval `dircolors $HOME/.zsh/misc/dircolors.rc` # Use LS_COLORS for color completion zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} zsh-lovers-0.8.3/zsh_people/bruno_bonfils/.zshrc0000644000175000017500000000132711103635725021667 0ustar alessioalessio# # Bruno Bonfils, # Written since summer 2001 # My functions (don't forget to modify fpath before call compinit !!) fpath=($HOME/.zsh/functions $fpath) # in order to have many completion function run comptinstall ! autoload -U zutil autoload -U compinit autoload -U complist # Activation compinit # Global Resource files for file in $HOME/.zsh/rc/*.rc; do source $file done local os host # Set default umask to 027, can be override by host specific resource file umask 027 # Hostnames resources files host=${$(hostname)//.*/} [ -f ".zsh/rc.host/${host}.zsh" ] && source ".zsh/rc.host/${host}.zsh" # OS resources files os=$(uname) [ -f ".zsh/rc.os/${os}.zsh" ] && source ".zsh/rc.os/${os}.zsh" zsh-lovers-0.8.3/zsh_people/adam_spiers/0000755000175000017500000000000011103635725020160 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/adam_spiers/zshrc0000644000175000017500000005073211103635725021243 0ustar alessioalessio#!/bin/zsh # # .zshrc # for zsh 3.1.6 and newer (may work OK with earlier versions) # # by Adam Spiers # # Best viewed in emacs folding mode (folding.el). # (That's what all the # {{{ and # }}} are for.) # # $Id: .zshrc,v 1.255 2004/03/15 21:24:26 adams Exp $ # # {{{ To do list # # - du1 # - Do safes?kill(all)? functions # # }}} # {{{ What version are we running? if ! (( $+ZSH_VERSION_TYPE )); then if [[ $ZSH_VERSION == 3.0.<->* ]]; then ZSH_STABLE_VERSION=yes; fi if [[ $ZSH_VERSION == 3.1.<->* ]]; then ZSH_DEVEL_VERSION=yes; fi ZSH_VERSION_TYPE=old if [[ $ZSH_VERSION == 3.1.<6->* || $ZSH_VERSION == 3.<2->.<->* || $ZSH_VERSION == 4.<->* ]] then ZSH_VERSION_TYPE=new fi fi # }}} # {{{ Profiling [[ -n "$ZSH_PROFILE_RC" ]] && which zmodload >&/dev/null && zmodload zsh/zprof # }}} # {{{ Loading status zshrc_load_status () { # \e[0K is clear to right echo -n "\r.zshrc load: $* ... \e[0K" } # }}} # {{{ Options zshrc_load_status 'setting options' setopt \ NO_all_export \ always_last_prompt \ NO_always_to_end \ append_history \ auto_cd \ auto_list \ auto_menu \ NO_auto_name_dirs \ auto_param_keys \ auto_param_slash \ auto_pushd \ auto_remove_slash \ NO_auto_resume \ bad_pattern \ bang_hist \ NO_beep \ NO_brace_ccl \ correct_all \ NO_bsd_echo \ cdable_vars \ NO_chase_links \ NO_clobber \ complete_aliases \ complete_in_word \ NO_correct \ correct_all \ csh_junkie_history \ NO_csh_junkie_loops \ NO_csh_junkie_quotes \ NO_csh_null_glob \ equals \ extended_glob \ extended_history \ function_argzero \ glob \ NO_glob_assign \ glob_complete \ NO_glob_dots \ glob_subst \ hash_cmds \ hash_dirs \ hash_list_all \ hist_allow_clobber \ hist_beep \ hist_ignore_dups \ hist_ignore_space \ NO_hist_no_store \ hist_verify \ NO_hup \ NO_ignore_braces \ NO_ignore_eof \ interactive_comments \ NO_list_ambiguous \ NO_list_beep \ list_types \ long_list_jobs \ magic_equal_subst \ NO_mail_warning \ NO_mark_dirs \ NO_menu_complete \ multios \ nomatch \ notify \ NO_null_glob \ numeric_glob_sort \ NO_overstrike \ path_dirs \ posix_builtins \ NO_print_exit_value \ NO_prompt_cr \ prompt_subst \ pushd_ignore_dups \ NO_pushd_minus \ pushd_silent \ pushd_to_home \ rc_expand_param \ NO_rc_quotes \ NO_rm_star_silent \ NO_sh_file_expansion \ sh_option_letters \ short_loops \ NO_sh_word_split \ NO_single_line_zle \ NO_sun_keyboard_hack \ unset \ NO_verbose \ zle if [[ $ZSH_VERSION_TYPE == 'new' ]]; then setopt \ hist_expire_dups_first \ hist_ignore_all_dups \ NO_hist_no_functions \ NO_hist_save_no_dups \ inc_append_history \ list_packed \ NO_rm_star_wait fi if [[ $ZSH_VERSION == 3.0.<6->* || $ZSH_VERSION_TYPE == 'new' ]]; then setopt \ hist_reduce_blanks fi # }}} # {{{ Environment zshrc_load_status 'setting environment' # {{{ INFOPATH [[ "$ZSH_VERSION_TYPE" == 'old' ]] || typeset -T INFOPATH infopath typeset -U infopath # no duplicates export INFOPATH infopath=( ~/local/$OSTYPE/info(N) ~/local/info(N) /usr/local/info(N) /usr/info(N) $infopath ) # }}} # {{{ MANPATH case "$OSTYPE" in linux*) # Don't need to do anything through the cunningness # of AUTOPATH in /etc/man.config! ;; *) # Don't trust system-wide MANPATH? Remember what it was, for reference. sysmanpath=$HOME/.sysmanpath [ -e $sysmanpath ] || echo "$MANPATH" > $sysmanpath manpath=( ) for dir in "$path[@]"; do [[ "$dir" == */bin ]] || continue mandir="${dir//\/bin//man}" [[ -d "$mandir" ]] && manpath=( "$mandir" "$manpath[@]" ) done # ... or *do* trust system-wide MANPATH #MANPATH=/usr/local/bin:/usr/X11R6/bin:/usr/local/sbin:/usr/sbin:/sbin:$MANPATH ;; esac # }}} # Variables used by zsh # {{{ Choose word delimiter characters in line editor WORDCHARS='' # }}} # {{{ Save a large history HISTFILE=~/.zshhistory HISTSIZE=3000 SAVEHIST=3000 # }}} # {{{ Maximum size of completion listing #LISTMAX=0 # Only ask if line would scroll off screen LISTMAX=1000 # "Never" ask # }}} # {{{ Watching for other users LOGCHECK=60 WATCHFMT="[%B%t%b] %B%n%b has %a %B%l%b from %B%M%b" # }}} # {{{ Auto logout TMOUT=1800 #TRAPALRM () { # clear # echo Inactivity timeout on $TTY # echo # vlock -c # echo # echo Terminal unlocked. [ Press Enter ] #} # }}} # }}} # {{{ Prompts # Load the theme-able prompt system and use it to set a prompt. # Probably only suitable for a dark background terminal. local _find_promptinit _find_promptinit=( $^fpath/promptinit(N) ) if (( $#_find_promptinit >= 1 )) && [[ -r $_find_promptinit[1] ]]; then zshrc_load_status 'prompt system' autoload -U promptinit promptinit PS4="trace %N:%i> " #RPS1="$bold_colour$bg_red $reset_colour" # Default prompt style adam2_colors=( white cyan cyan green ) if [[ -r $zdotdir/.zsh_prompt ]]; then . $zdotdir/.zsh_prompt fi if [[ -r /proc/$PPID/cmdline ]] && egrep -q 'watchlogs|kates|nexus|vga' /proc/$PPID/cmdline; then # probably OK for fancy graphic prompt if [[ "`prompt -h adam2`" == *8bit* ]]; then prompt adam2 8bit $adam2_colors else prompt adam2 $adam2_colors fi else if [[ "`prompt -h adam2`" == *plain* ]]; then prompt adam2 plain $adam2_colors else prompt adam2 $adam2_colors fi fi if [[ $TERM == tgtelnet ]]; then prompt off fi else PS1='%n@%m %B%3~%b %# ' fi # }}} # {{{ Completions zshrc_load_status 'completion system' # {{{ Set up new advanced completion system if [[ "$ZSH_VERSION_TYPE" == 'new' ]]; then autoload -U compinit compinit -C # don't perform security check else print "\nAdvanced completion system not found; ignoring zstyle settings." function zstyle { } function compdef { } # an antiquated, barebones completion system is better than nowt which zmodload >&/dev/null && zmodload zsh/compctl fi # }}} # {{{ General completion technique # zstyle ':completion:*' completer \ # _complete _prefix _approximate:-one _ignored \ # _complete:-extended _approximate:-four zstyle ':completion:*' completer _complete _prefix _ignored _complete:-extended zstyle ':completion::prefix-1:*' completer _complete zstyle ':completion:incremental:*' completer _complete _correct zstyle ':completion:predict:*' completer _complete zstyle ':completion:*:approximate-one:*' max-errors 1 zstyle ':completion:*:approximate-four:*' max-errors 4 zstyle ':completion:*:complete-extended:*' \ matcher 'r:|[.,_-]=* r:|=*' # }}} # {{{ Fancy menu selection when there's ambiguity #zstyle ':completion:*' menu yes select interactive #zstyle ':completion:*' menu yes=long select=long interactive #zstyle ':completion:*' menu yes=10 select=10 interactive # }}} # {{{ Completion caching zstyle ':completion::complete:*' use-cache 1 zstyle ':completion::complete:*' cache-path ~/.zsh/cache/$HOST # }}} # {{{ Expand partial paths zstyle ':completion:*' expand 'yes' zstyle ':completion:*' squeeze-slashes 'yes' # }}} # {{{ Include non-hidden dirs in globbed file completions for certain commands #zstyle ':completion::complete:*' \ # tag-order 'globbed-files directories' all-files #zstyle ':completion::complete:*:tar:directories' file-patterns '*~.*(-/)' # }}} # {{{ Don't complete backup files as executables zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' # }}} # {{{ Don't complete uninteresting users zstyle ':completion:*:*:*:users' ignored-patterns \ adm apache bin daemon games gdm halt ident junkbust lp mail mailnull \ named news nfsnobody nobody nscd ntp operator pcap postgres radvd \ rpc rpcuser rpm shutdown squid sshd sync uucp vcsa xfs # ... unless we really want to. zstyle '*' single-ignored show # }}} # {{{ Output formatting # Separate matches into groups zstyle ':completion:*:matches' group 'yes' # Describe each match group. zstyle ':completion:*:descriptions' format "%B---- %d%b" # Messages/warnings format zstyle ':completion:*:messages' format '%B%U---- %d%u%b' zstyle ':completion:*:warnings' format '%B%U---- no match for: %d%u%b' # Describe options in full zstyle ':completion:*:options' description 'yes' zstyle ':completion:*:options' auto-description '%d' # }}} # {{{ Array/association subscripts # When completing inside array or association subscripts, the array # elements are more useful than parameters so complete them first: zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters # }}} # {{{ Completion for 'kill' zstyle ':completion:*:*:kill:*' menu yes select zstyle ':completion:*:kill:*' force-list always # }}} # {{{ Simulate my old dabbrev-expand 3.0.5 patch zstyle ':completion:*:history-words' stop yes zstyle ':completion:*:history-words' remove-all-dups yes zstyle ':completion:*:history-words' list false zstyle ':completion:*:history-words' menu yes # }}} # {{{ Common usernames # users=( tom dick harry ) #zstyle ':completion:*' users $users # }}} # {{{ Common hostnames if [[ "$ZSH_VERSION_TYPE" == 'new' ]]; then : ${(A)_etc_hosts:=${(s: :)${(ps:\t:)${${(f)~~"$(&/dev/null && unalias which alias wh=where # }}} # {{{ run-help alias run-help >&/dev/null && unalias run-help autoload run-help # }}} # {{{ zcalc autoload zcalc # }}} # {{{ Restarting zsh or bash; reloading .zshrc or functions bash () { NO_SWITCH="yes" command bash "$@" } restart () { exec $SHELL $SHELL_ARGS "$@" } profile () { ZSH_PROFILE_RC=1 $SHELL "$@" } reload () { if [[ "$#*" -eq 0 ]]; then . $zdotdir/.zshrc else local fn for fn in "$@"; do unfunction $fn autoload -U $fn done fi } compdef _functions reload # }}} # {{{ ls aliases if ls -F --color >&/dev/null; then alias ls='command ls -F --color' elif ls -F >&/dev/null; then alias ls='command ls -F' elif ls --color >&/dev/null; then alias ls='command ls --color' fi # jeez I'm lazy ... alias l='ls -lh' alias ll='ls -l' alias la='ls -lha' alias lsa='ls -ah' alias lsd='ls -d' alias lsh='ls -dh .*' alias lsr='ls -Rh' alias ld='ls -ldh' alias lt='ls -lth' alias lrt='ls -lrth' alias lart='ls -larth' alias lr='ls -lRh' alias lsL='ls -L' alias lL='ls -Ll' alias sl=ls # often screw this up # }}} # {{{ File management/navigation # {{{ Changing/making/removing directory alias -g ...=../.. alias -g ....=../../.. alias -g .....=../../../.. alias -g ......=../../../../.. alias cd..='cd ..' alias cd...='cd ../..' alias cd....='cd ../../..' alias cd.....='cd ../../../..' # blegh alias ..='cd ..' alias ../..='cd ../..' alias ../../..='cd ../../..' alias ../../../..='cd ../../../..' alias ../../../../..='cd ../../../../..' alias cd/='cd /' alias 1='cd -' alias 2='cd +2' alias 3='cd +3' alias 4='cd +4' alias 5='cd +5' alias 6='cd +6' alias 7='cd +7' alias 8='cd +8' alias 9='cd +9' # Sweet trick from zshwiki.org :-) cd () { if (( $# != 1 )); then builtin cd "$@" return fi if [[ -f "$1" ]]; then builtin cd "$1:h" else builtin cd "$1" fi } z () { cd ~/"$1" } alias md='mkdir -p' alias rd=rmdir alias d='dirs -v' po () { popd "$@" dirs -v } # }}} # {{{ Renaming autoload zmv alias mmv='noglob zmv -W' # }}} # }}} # {{{ Job/process control alias j='jobs -l' alias dn=disown # }}} # {{{ History alias h='history -$LINES' # }}} # {{{ Environment alias ts=typeset compdef _typeset ts # }}} # {{{ Terminal alias cls='clear' alias term='echo $TERM' # {{{ Changing terminal window/icon titles which cx >&/dev/null || cx () { } if [[ "$TERM" == ([Ex]term*|screen*) ]]; then # Could also look at /proc/$PPID/cmdline ... cx fi # }}} alias sc=screen # }}} # {{{ Other users compdef _users lh alias f=finger compdef _finger f # su changes window title, even if we're not a login shell su () { command su "$@" cx } # }}} # {{{ No spelling correction alias man='nocorrect man' alias mysql='nocorrect mysql' alias mysqlshow='nocorrect mysqlshow' alias mkdir='nocorrect mkdir' alias mv='nocorrect mv' alias rj='nocorrect rj' # }}} # {{{ X windows related # {{{ export DISPLAY=:0.0 alias sd='export DISPLAY=:0.0' # }}} # }}} # {{{ Different CVS setups # Sensible defaults unset CVS_SERVER export CVSROOT export CVS_RSH=ssh # see scvs function # }}} # {{{ Other programs # {{{ less alias v=less alias vs='less -S' # }}} # {{{ mutt m () { cx mutt mutt "$@" cxx } compdef _mutt m # }}} # {{{ editors # emacs, windowed e () { if [[ -n "$OTHER_USER" ]]; then emacs -l $ZDOTDIR/.emacs "$@" &! else emacs "$@" &! fi } # enable ^Z alias pico='/usr/bin/pico -z' if which vim >&/dev/null; then alias vi=vim fi # }}} # {{{ remote logins ssh () { cx -l "${(M)argv:#*@*}" # pick out user@host word from argv command ssh "$@" cxx } # Best to run this from .zshrc.local #dsa >&DN || echo "ssh-agent setup failed; run dsa." # }}} # {{{ ftp if which lftp >&/dev/null; then alias ftp=lftp elif which ncftp >&/dev/null; then alias ftp=ncftp fi # }}} # {{{ watching log files alias tf='less +F' alias tfs='less -S +F' # }}} # {{{ arch if which larch >&/dev/null; then alias a=larch compdef _larch a fi # }}} # {{{ bzip2 alias bz=bzip2 alias buz=bunzip2 # }}} # }}} # {{{ Global aliases # WARNING: global aliases are evil. Use with caution. # {{{ For screwed up keyboards missing pipe alias -g PIPE='|' # }}} # {{{ Paging with less / head / tail alias -g L='| less' alias -g LS='| less -S' alias -g EL='|& less' alias -g ELS='|& less -S' alias -g H='| head' alias -g HL='| head -20' alias -g EH='|& head' alias -g EHL='|& head -20' alias -g T='| tail' alias -g TL='| tail -20' alias -g ET='|& tail' alias -g ETL='|& tail -20' # }}} # {{{ Sorting / counting alias -g C='| wc -l' alias -g S='| sort' alias -g US='| sort -u' alias -g NS='| sort -n' alias -g RNS='| sort -nr' # }}} # {{{ Common filenames alias -g DN=/dev/null alias -g VM=/var/log/messages # }}} # {{{ grep, xargs alias -g G='| egrep' alias -g EG='|& egrep' alias -g X='| xargs' alias -g X0='| xargs -0' alias -g XG='| xargs egrep' alias -g X0G='| xargs -0 egrep' # }}} # }}} # }}} # {{{ Key bindings zshrc_load_status 'key bindings' bindkey -s '^X^Z' '%-^M' bindkey '^[e' expand-cmd-path #bindkey -s '^X?' '\eb=\ef\C-x*' bindkey '^[^I' reverse-menu-complete bindkey '^X^N' accept-and-infer-next-history bindkey '^[p' history-beginning-search-backward bindkey '^[n' history-beginning-search-forward bindkey '^[P' history-beginning-search-backward bindkey '^[N' history-beginning-search-forward bindkey '^w' kill-region-or-backward-word bindkey '^[^W' kill-region-or-backward-big-word bindkey '^I' complete-word bindkey '^Xi' incremental-complete-word # bindkey '^[b' emacs-backward-word # bindkey '^[f' emacs-forward-word bindkey '^[B' backward-to-space bindkey '^[F' forward-to-space bindkey '^[^b' backward-to-/ bindkey '^[^f' forward-to-/ bindkey '^[D' kill-big-word if zmodload zsh/deltochar >&/dev/null; then bindkey '^[z' zap-to-char bindkey '^[Z' delete-to-char fi # Fix weird sequence that rxvt produces bindkey -s '^[[Z' '\t' alias no=ls # for Dvorak # }}} # {{{ Miscellaneous zshrc_load_status 'miscellaneous' # {{{ Hash named directories # cdable_vars is set, so don't need 'hash -d' in front of these RP=/usr/src/redhat/RPMS I3=/usr/src/redhat/RPMS/i386 I4=/usr/src/redhat/RPMS/i486 I5=/usr/src/redhat/RPMS/i586 I6=/usr/src/redhat/RPMS/i686 NA=/usr/src/redhat/RPMS/noarch SR=/usr/src/redhat/SRPMS SP=/usr/src/redhat/SPECS SO=/usr/src/redhat/SOURCES BU=/usr/src/redhat/BUILD LI=/usr/src/linux L4=/usr/src/linux-2.4 CV=/usr/local/cvsroot RC=/etc/rc.d/init.d VL=/var/log #hash -df # }}} # {{{ ls colours if which dircolors >&/dev/null && [[ -e "${zdotdir}/.dircolors" ]]; then eval "`dircolors -b $zdotdir/.dircolors`" fi if [[ $ZSH_VERSION > 3.1.5 ]]; then zmodload -i zsh/complist zstyle ':completion:*' list-colors '' zstyle ':completion:*:*:kill:*:processes' list-colors \ '=(#b) #([0-9]#)*=0=01;31' # completion colours zstyle ':completion:*' list-colors "$LS_COLORS" fi # }}} # {{{ Don't always autologout if [[ "${TERM}" == ([Ex]term*|dtterm|screen*) ]]; then unset TMOUT fi # }}} # }}} # {{{ Specific to local setups zshrc_load_status 'local hooks' run_local_hooks .zshrc # }}} # {{{ Clear up after status display if [[ $TERM == tgtelnet ]]; then echo else echo -n "\r" fi # }}} # {{{ Profile report if [[ -n "$ZSH_PROFILE_RC" ]]; then zprof >! ~/zshrc.zprof exit fi # }}} # {{{ Search for history loosing bug which check_hist_size >&/dev/null && check_hist_size # }}} zsh-lovers-0.8.3/zsh_people/arne_schwabes/0000755000175000017500000000000011103635725020475 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/arne_schwabes/zshrc0000644000175000017500000002077311103635725021562 0ustar alessioalessio#!/bin/zsh # I got this file from someone (don't remember who though) # and modified it :). # # Arne Schwabe # # But some credit still goes to (and others): # # zshrc - by trey tabner. email: trey@epicsol.org irc: icetrey@efnet # not all of this is mine, a few of the completions are taken from old examples :) hosts=( news mailrapid mailgate mailgate2 mailserv \ leros atreus monkey-island \ ilum r2d2 kamino geonosis coruscant.rfc1149.org \ info-stud info-e info-f angkor-vat athene webserv \ naxos simon-the-sorcerer the-little-computer-project pissarro \ kevin feivel orang-utan-klaus \ queaker debian.ventourizen.de fireball \ debian.ventourizen.de queaker ) umask 022 alias dos2unix='recode ibmpc:lat1' alias unix2dos='recode la1:imbpc' alias dp=display if [[ -e /usr/local/maple8-8.01/bin/ ]]; then alias maple=/usr/local/maple8-8.01/bin/maple alias xmaple=/usr/local/maple8-8.01/bin/xmaple fi #alias kernel='finger @finger.kernel.org' alias j='jobs -l' alias h='history' lynx='lynx -accept_all_cookies' alias lowercase='for i in [A-Z][A-Z]*(.); do mv "$i" "${i:l}" ;done' alias bt='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 3 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))' alias btu='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 100 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))' alias bto='PORT=$RANDOM; btdownloadcurses.py --max_upload_rate 13 --minport $(($PORT+1400)) --maxport $(($PORT + 1410))' alias mgqueue='ssh mailgate /home/mail/exim/bin/exim -C /home/mail/exim/configure.outgoing -bpc' alias acroread="LANG=de_DE acroread" export HISTFILE=$HOME/.zshhistory export HISTSIZE=10000 export SAVEHIST=5000 export EDITOR=emacs export PAGER=less export LANG=de_DE.UTF-8 export LC_MESSAGES=C setopt \ NO_all_export \ always_last_prompt \ NO_always_to_end \ append_history \ NO_auto_cd \ auto_list \ auto_menu \ NO_auto_name_dirs \ auto_param_keys \ auto_param_slash \ auto_pushd \ auto_remove_slash \ NO_auto_resume \ bad_pattern \ bang_hist \ NO_beep \ bg_nice \ brace_ccl \ bsd_echo \ correct_all \ cdable_vars \ NO_chase_links \ no_clobber \ complete_aliases \ complete_in_word \ correct \ NO_correct_all \ csh_junkie_history \ NO_csh_junkie_loops \ NO_csh_junkie_quotes \ NO_csh_null_glob \ equals \ extended_glob \ extended_history \ function_argzero \ glob \ NO_glob_assign \ glob_complete \ glob_dots \ glob_subst \ hash_cmds \ hash_dirs \ hash_list_all \ NO_hist_allow_clobber \ NO_hist_beep \ hist_ignore_dups \ hist_ignore_space \ hist_no_store \ no_hist_verify \ NO_hup \ NO_ignore_braces \ NO_ignore_eof \ interactive_comments \ NO_list_ambiguous \ NO_list_beep \ list_types \ long_list_jobs \ magic_equal_subst \ NO_mail_warning \ NO_mark_dirs \ NO_menu_complete \ multios \ nomatch \ notify \ NO_null_glob \ numeric_glob_sort \ NO_overstrike \ path_dirs \ posix_builtins \ print_exit_value \ NO_prompt_cr \ prompt_subst \ pushd_ignore_dups \ NO_pushd_minus \ NO_pushd_silent \ pushd_to_home \ rc_expand_param \ NO_rc_quotes \ NO_rm_star_silent \ NO_sh_file_expansion \ sh_option_letters \ no_sh_glob \ short_loops \ NO_sh_word_split \ NO_single_line_zle \ NO_sun_keyboard_hack \ unset \ NO_verbose \ NO_xtrace \ zle # From zefram Prompt and heavily modified (you did not expect anything else, did you) # The screen and preexec thing came from www.zshwiki.org/cgi-bin/wiki.pl?ZshHardStatus case $TERM in xterm*) function title () {print -nP '\e]0;'$*'\a'} ;; screen*) function title () { print -nPR $'\033k'$1$'\033'\\ print -nPR $'\033]0;'$2$'\a' } ;; *) function title() {} ;; esac function prompt_arne_zefram_precmd { local exitstatus=$? psvar=(SIG) [[ $exitstatus -gt 128 ]] && psvar[1]=SIG$signals[$exitstatus-127] [[ $psvar[1] = SIG ]] && psvar[1]=$exitstatus jobs % >/dev/null 2>&1 && psvar[2]= title "%n@%m:%20<...<%3~%<<" } function prompt_arne_zefram_setup { PS1='[%(00t.DING%(0T. DONG.)!.%T)]%(?..%U{%v}%u)%(!..%n%(2v.%B@%b.@))%m:%20<...<%3~%<<%# ' PS2='%(4_:... :)%3_> ' prompt_opts=( cr subst percent ) precmd () { prompt_arne_zefram_precmd } function preexec { emulate -L zsh local -a cmd; cmd=(${(z)1}) title %n@%m:$cmd[1]:t "$cmd[2,-1]" } } function prompt_arne_zefram_setup3 { prompt_arne_zefram_setup function preexec() {} } if [[ $USER != root ]]; then if [[ "$SSH_AUTH_SOCK" == "" && -f ~/.ssh/.agent-$HOST ]]; then echo -n "Reused PID: " source ~/.ssh/.agent-$HOST fi ssh-add -l 2> /dev/null # | cut -d" " -f1,3,4 if [[ $? == 1 || $? == 0 ]] then #echo ssh agent reused : else if [[ -f ~/.ssh/.agent-$HOST ]]; then rm ~/.ssh/.agent-$HOST fi ssh-agent > ~/.ssh/.agent-$HOST source ~/.ssh/.agent-$HOST fi unset tmp fi if [[ $OSTYPE = 'linux-gnu' ]]; then filesystems="${${(f)$( /dev/null # # now run gnuclient. we'll be returned to this window when c-x # is hit in # # emacs # gnuclient $1 # } export CVSROOT=~/Lib/CVS # If running interactively, then: if [ "$PS1" ]; then # colour ls eval `dircolors` alias ls='ls --color=auto' # use ssh for rysnc export RSYNC_RSH=ssh # used to have arch-dependent flags, but i kept forgetting to unset cflags # before compiling stuff for another box. i don't compile much anymore. export CFLAGS="-O2 -fomit-frame-pointer -pipe" export SmallEiffel="/usr/lib/smalleiffel/sys/system.se" export PYTHONPATH="/home/resolve/.python" export PYTHONSTARTUP="/home/resolve/.pystartup" export SAVEDIR="/home/resolve/.news/" export ORGANISATION="Damien Elmes" export TEXINPUTS=::/usr/local/lib/texmf export VISUAL=e export EDITOR=$VISUAL # colours in man output, emacs like bindings. nifty. export PAGER=most # anti aliasing in the two toolkits export QT_XFT=1 export GDK_USE_XFT=1 alias go-wl="sudo ifdown eth0; sudo /etc/init.d/pcmcia start" alias go-eth="sudo /etc/init.d/pcmcia stop; sudo ifup eth0" alias nw="sfsagent resolve@respite; ls .mail > /dev/null 2>&1" # display reminders [ -f .r ] && cat .r umask 022 # # completion tweaking # # complete hostnames out of ssh's ~/.ssh/known_hosts autoload -U compinit; compinit zstyle ':completion:*' use-cache on zstyle ':completion:*' users resolve hosts=(${${${${(f)"$(<$HOME/.ssh/known_hosts)"}:#[0-9]*}%%\ *}%%,*}) zstyle ':completion:*:hosts' hosts $hosts # use dircolours in completion listings zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} # allow approximate matching zstyle ':completion:*' completer _complete _match _approximate zstyle ':completion:*:match:*' original only zstyle ':completion:*:approximate:*' max-errors 1 numeric zstyle ':completion:*' auto-description 'Specify: %d' zstyle ':completion:*' format 'Completing %d' zstyle ':completion:*' verbose true zstyle ':completion:*:functions' ignored-patterns '_*' zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns \ '*?.(o|c~|zwc)' '*?~' bindkey "\C-w" kill-region fi # evaluate work related stuff [ -f .workrc ] && . ~/.workrc if [ x$TERM = xscreen ]; then export TERM=xterm fi zsh-lovers-0.8.3/zsh_people/marijan_peh/0000755000175000017500000000000011103635725020146 5ustar alessioalessiozsh-lovers-0.8.3/zsh_people/marijan_peh/zshrc0000644000175000017500000014767711103635725021250 0ustar alessioalessio## $Id: .zshrc,v1.07 for zsh4.x ## Thursday May 23 22:36:11 CEST 2002 ## Created by Marijan Peh ## Latest version on http://free-po.hinet.hr/MarijanPeh/files/zshrc ## ## With sugestions from: ## Bart Schaefer ## Mario Jose Medjeral ## ## This file is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ## ## Use and modify to personal taste. Copying this file without ## thought will needlessly increase zsh's memory usage and startup time. ## others can't rwx my files ## this is very paranoid :-) set to 022 if you wish umask 077 ## get keys working case $TERM in linux) bindkey "^[[2~" yank bindkey "^[[3~" delete-char bindkey "^[[5~" up-line-or-history ## PageUp bindkey "^[[6~" down-line-or-history ## PageDown bindkey "^[[1~" beginning-of-line bindkey "^[[4~" end-of-line bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command bindkey "^[[A" up-line-or-search ## up arrow for back-history-search bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search bindkey " " magic-space ## do history expansion on space ;; *xterm*|rxvt|(dt|k|E)term) bindkey "^[[2~" yank bindkey "^[[3~" delete-char bindkey "^[[5~" up-line-or-history ## PageUp bindkey "^[[6~" down-line-or-history ## PageDown bindkey "^[[7~" beginning-of-line bindkey "^[[8~" end-of-line bindkey "^[e" expand-cmd-path ## C-e for expanding path of typed command bindkey "^[[A" up-line-or-search ## up arrow for back-history-search bindkey "^[[B" down-line-or-search ## down arrow for fwd-history-search bindkey " " magic-space ## do history expansion on space ;; esac ## use hard limits, except for a smaller stack and no core dumps unlimit limit stack 8192 limit core 0 limit -s ## set path and cdpath ## think about setting path,cdpath,manpath & fpath in .zshenv path=($path /bin /usr/bin /usr/X11R6/bin) path=($path /usr/local/bin $HOME/bin) cdpath=(~ ..) ## on cd command offer dirs in home and one dir up. ## for root add sbin dirs to path if (( EUID == 0 )); then path=($path /sbin /usr/sbin /usr/local/sbin) fi ## aditional dir to look for function definitions fpath=($fpath ~/.zfunc) ## EDIT ## or comment if u don't need it. ## set manpath manpath=(/usr/local/man /usr/share/man) ## EDIT ## manpath=($manpath /usr/X11R6/man /usr/man /usr/lib/perl5/man) ## EDIT ## ## remove duplicate entries from path,cdpath,manpath & fpath typeset -U path cdpath manpath fpath ## The file to save the history in when an interactive shell exits. ## If unset, the history is not saved. HISTFILE=${HOME}/.zsh_history ## The maximum number of events stored in the internal history list. HISTSIZE=1000 ## The maximum number of history events to save in the history file. SAVEHIST=1000 ## maximum size of the directory stack. DIRSTACKSIZE=20 ## file for mail checking MAIL=/var/mail/$USERNAME ## The interval in seconds between checks for new mail. MAILCHECK=60 ## The interval in seconds between checks for login/logout activity ## using the watch parameter. LOGCHECK=60 ## The baud rate of the current connection. Used by the line editor ## update mechanism to compensate for a slow terminal by delaying ## updates until necessary. #BAUD=38400 ## to turn off set this to zero ## If nonnegative, commands whose combined user and system execution times ## (measured in seconds) are greater than this value have timing ## statistics printed for them. #REPORTTIME=1 ## If set, this gives a string of characters, which can use ## all the same codes as the bindkey command as described in ## section The zsh/zle Module, that will be output to ## the terminal instead of beeping. ## This may have a visible instead of an audible effect; ## for example, the string `\e[?5h\e[?5l' on a vt100 or xterm will have ## the effect of flashing reverse video on and off (if you usually use reverse ## video, you should use the string `\e[?5l\e[?5h' instead). This takes ## precedence over the NOBEEP option. #ZBEEP='\e[?5h\e[?5l' ## The directory to search for shell startup files (.zshrc, etc), ## if not $HOME. #ZDOTDIR=~/.zsh ## (( ${+*} )) = if variable is set don't set it anymore (( ${+USER} )) || export USER=$USERNAME (( ${+HOSTNAME} )) || export HOSTNAME=$HOST (( ${+EDITOR} )) || export EDITOR=`which vim` (( ${+VISUAL} )) || export VISUAL=`which vim` (( ${+FCEDIT} )) || export FCEDIT=`which vim` (( ${+PAGER} )) || export PAGER=`which less` (( ${+MAILCALL} )) || export MAILCALL='*** NEW MAIL ***' ## new mail warning (( ${+LESSCHARSET} )) || export LESSCHARSET='latin1' ## charset for pager (( ${+LESSOPEN} )) || export LESSOPEN='|lesspipe.sh %s' (( ${+MOZILLA_HOME} )) || export MOZILLA_HOME='/usr/lib/netscape' ## EDIT ## (( ${+MOZILLA_NO_ASYNC_DNS} )) || export MOZILLA_NO_ASYNC_DNS='True' (( ${+NNTPSERVER} )) || export NNTPSERVER='' ## news server ## EDIT ## (( ${+CC} )) || export CC='gcc' ## or egcs or whatever ## compiler opt. flags !!! use this with caution !!! or dont use et all case $CPUTYPE in i686) (( ${+CFLAGS} )) || export CFLAGS='-O9 -funroll-loops -ffast-math -malign-double -mcpu=pentiumpro -march=pentiumpro -fomit-frame-pointer -fno-exceptions' ;; i586) (( ${+CFLAGS} )) || export CFLAGS='-O3 -march=pentium -mcpu=pentium -ffast-math -funroll-loops -fomit-frame-pointer -fforce-mem -fforce-addr -malign-double -fno-exceptions' ;; i486) (( ${+CFLAGS} )) || export CFLAGS='-O3 -funroll-all-loops -malign-double -mcpu=i486 -march=i486 -fomit-frame-pointer -fno-exceptions' ;; *) (( ${+CXXFLAGS} )) || export CXXFLAGS=$CFLAGS esac ## variables for BitchX (irc client) (( ${+IRCNAME} )) || export IRCNAME='' ## EDIT ## (( ${+IRCNICK} )) || export IRCNICK='' ## EDIT ## (( ${+IRCSERVER} )) || export IRCSERVER='' ## EDIT ## ## auto logout after timeout in seconds TMOUT=1800 ## if we are in X then disable TMOUT case $TERM in *xterm*|rxvt|(dt|k|E)term) unset TMOUT ;; esac #bindkey -v ## vi key bindings bindkey -e ## emacs key bindings ## turn on full featured completion (minimal needs: zsh3.1) if [[ "$ZSH_VERSION" == (3.1|4)* ]]; then autoload -U compinit compinit -C else print "Advanced completion system not found; ignoring zstyle settings." function zstyle { } fi ## set colors for GNU ls ; set this to right file eval `dircolors /etc/DIR_COLORS` ## EDIT ## ## Color completion ## this module should be automatically loaded if u use menu selection ## but to be sure we do it here zmodload -i zsh/complist ## Someone once accused zsh of not being as complete as Emacs, because it ## lacks Tetris and an adventure game. autoload -U tetris zle -N tetris bindkey "^Xt" tetris ## C-x-t to play ## This allows incremental completion of a word. ## After starting this command, a list of completion ## choices can be shown after every character you ## type, which you can delete with ^h or DEL. ## RET will accept the completion so far. ## You can hit TAB to do normal completion, ^g to ## abort back to the state when you started, and ^d to list the matches. autoload -U incremental-complete-word zle -N incremental-complete-word bindkey "^Xi" incremental-complete-word ## C-x-i ## This function allows you type a file pattern, ## and see the results of the expansion at each step. ## When you hit return, they will be inserted into the command line. autoload -U insert-files zle -N insert-files bindkey "^Xf" insert-files ## C-x-f ## This set of functions implements a sort of magic history searching. ## After predict-on, typing characters causes the editor to look backward ## in the history for the first line beginning with what you have typed so ## far. After predict-off, editing returns to normal for the line found. ## In fact, you often don't even need to use predict-off, because if the ## line doesn't match something in the history, adding a key performs ## standard completion - though editing in the middle is liable to delete ## the rest of the line. autoload -U predict-on zle -N predict-on zle -N predict-off bindkey "^X^Z" predict-on ## C-x C-z bindkey "^Z" predict-off ## C-z ## This is a multiple move based on zsh pattern matching. To get the full ## power of it, you need a postgraduate degree in zsh. ## Read /path_to_zsh_functions/zmv for some basic examples. #autoload -U zmv ## watch for my friends ## An array (colon-separated list) of login/logout events to report. ## If it contains the single word `all', then all login/logout events ## are reported. If it contains the single word `notme', then all ## events are reported as with `all' except $USERNAME. ## An entry in this list may consist of a username, ## an `@' followed by a remote hostname, ## and a `%' followed by a line (tty). #watch=( $(<~/.friends) ) ## watch for people in $HOME/.friends file watch=(notme) ## watch for everybody but me LOGCHECK=60 ## check every ... seconds for login/logout activity ## The format of login/logout reports if the watch parameter is set. ## Default is `%n has %a %l from %m'. ## Recognizes the following escape sequences: ## %n = name of the user that logged in/out. ## %a = observed action, i.e. "logged on" or "logged off". ## %l = line (tty) the user is logged in on. ## %M = full hostname of the remote host. ## %m = hostname up to the first `.'. ## %t or %@ = time, in 12-hour, am/pm format. ## %w = date in `day-dd' format. ## %W = date in `mm/dd/yy' format. ## %D = date in `yy-mm-dd' format. WATCHFMT='%n %a %l from %m at %t.' ## set prompts #### ## choose just one #PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%# ' ## user:~% #PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%{\e[0;31m%}%3~%{\e[0m%}%B>%b ' ## user:~> #PS1='%n@%m:%4c%1v> ';RPS1=$'%{\e[0;36m%}%D{%A %T}%{\e[0m%}' ## user@host:~> ; Day time(hh:mm:ss) #PS1='%B[%b%n%B:%b%~%B]%b$ ' ## [user:~]$ #PS1=$'%{\e[0;36m%}%n%{\e[0m%}:%20<..<%~%B>%b ' ## user:..c/vim-common-6.0> #PS1=$'%{\e[0;36m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## % ; ~ #PS1=$'%{\e[0;36m%}%n%{\e[0m%}%{\e[0;31m%}%#%{\e[0m%} ';RPS1=$'%{\e[0;31m%}%~%{\e[0m%}' ## user% ; ~ #PS1='%# ';RPS1='%B%~%b' ## % ; ~ : no colors #PS1='%n@%m:%B%~%b> ' ## user@host:~> : no colors ## or use neat prompt themes included with zsh autoload -U promptinit promptinit ## Currently available prompt themes: ## adam1 adam2 bart bigfade clint elite2 elite ## fade fire off oliver redhat suse walters zefram prompt elite2 ## don't ask me 'do you wish to see all XX possibilities' before menu selection LISTPROMPT='' ## SPROMPT - the spelling prompt SPROMPT='zsh: correct '%R' to '%r' ? ([Y]es/[N]o/[E]dit/[A]bort) ' ## functions for displaying neat stuff in *term title case $TERM in *xterm*|rxvt|(dt|k|E)term) ## display user@host and full dir in *term title precmd () { print -Pn "\033]0;%n@%m %~\007" #print -Pn "\033]0;%n@%m%# %~ %l %w :: %T\a" ## or use this } ## display user@host and name of current process in *term title preexec () { print -Pn "\033]0;%n@%m <$1> %~\007" #print -Pn "\033]0;%n@%m%# <$1> %~ %l %w :: %T\a" ## or use this } ;; esac ## aliases #### alias p='ps -fu $USER' alias v='less' alias h='history' alias z='vim ~/.zshrc;src' alias gvim='gvim -U ~/.gvimrc' alias g='gvim' alias vi='vim' alias mv='nocorrect mv -i' alias cp='nocorrect cp -i' alias rm='nocorrect rm -i' alias mkdir='nocorrect mkdir' alias man='nocorrect man' alias find='noglob find' alias ls='ls --color=auto' alias l='ls' alias ll='ls -l' alias l.='ls -A' alias ll.='ls -al' alias lsa='ls -ls .*' ## list only file beginning with "." alias lsd='ls -ld *(-/DN)' ## list only dirs alias du1='du -hs *(/)' ## du with depth 1 alias u='uptime' alias j='ps ax' alias ..='cd ..' alias cd..='cd ../..' alias cd....='cd ../../..' alias cd.....='cd ../../../..' alias cd/='cd /' alias sd='export DISPLAY=:0.0' ## export DISPLAY=:0.0 alias x='startx &! exit' alias x8='startx -- -bpp 8 &! exit' alias x16='startx -- -bpp 16 &! exit' alias x24='startx -- -bpp 24 &! exit' alias x32='startx -- -bpp 32 &! exit' alias dpms='sleep 2 ; clear ; xset dpms force off' ## global aliases, this is not good but it's useful alias -g L='|less' alias -g G='|grep' alias -g T='|tail' alias -g H='|head' alias -g W='|wc -l' alias -g S='|sort' alias -g US='|sort -u' alias -g NS='|sort -n' alias -g RNS='|sort -nr' alias -g N='&>/dev/null&' ## changing terminal type alias v1='export TERM=vt100' alias v2='export TERM=vt220' alias vx='export TERM=xterm-color' ## functions #### ## csh compatibility setenv () { typeset -x "${1}${1:+=}${(@)argv[2,$#]}" } ## find process to kill and kill it. pskill () { local pid pid=$(ps -ax | grep $1 | grep -v grep | awk '{ print $1 }') echo -n "killing $1 (process $pid)..." kill -9 $=pid echo "slaughtered." } ## invoke this every time when u change .zshrc to ## recompile it. src () { autoload -U zrecompile [ -f ~/.zshrc ] && zrecompile -p ~/.zshrc [ -f ~/.zcompdump ] && zrecompile -p ~/.zcompdump [ -f ~/.zshrc.zwc.old ] && rm -f ~/.zshrc.zwc.old [ -f ~/.zcompdump.zwc.old ] && rm -f ~/.zcompdump.zwc.old source ~/.zshrc } ## make screenshot of current desktop (use import from ImageMagic) sshot () { sleep 5; import -window root desktop.jpg } ## find all suid files suidfind () { ls -l /**/*(su0x) } ## restore all .bak files restore_bak () { autoload -U zmv zmv '(**/)(*).bak' '$1$2' } ## display processes tree in less pst () { pstree -p $* | less -S } ## search for various types or README file in dir and display them in $PAGER readme () { local files files=(./(#i)*(read*me|lue*m(in|)ut)*(ND)) if (($#files)) then $PAGER $files else print 'No README files.' fi } ## completions #### ## General completion technique ## complete as much u can .. zstyle ':completion:*' completer _complete _list _oldlist _expand _ignored _match _correct _approximate _prefix ## complete less #zstyle ':completion:*' completer _expand _complete _list _ignored _approximate ## complete minimal #zstyle ':completion:*' completer _complete _ignored ## allow one error #zstyle ':completion:*:approximate:*' max-errors 1 numeric ## allow one error for every three characters typed in approximate completer zstyle -e ':completion:*:approximate:*' max-errors \ 'reply=( $(( ($#PREFIX+$#SUFFIX)/3 )) numeric )' ## formatting and messages zstyle ':completion:*' verbose yes zstyle ':completion:*:descriptions' format $'%{\e[0;31m%}%d%{\e[0m%}' zstyle ':completion:*:messages' format $'%{\e[0;31m%}%d%{\e[0m%}' zstyle ':completion:*:warnings' format $'%{\e[0;31m%}No matches for: %d%{\e[0m%}' zstyle ':completion:*:corrections' format $'%{\e[0;31m%}%d (errors: %e)%{\e[0m%}' zstyle ':completion:*' group-name '' ## determine in which order the names (files) should be ## listed and completed when using menu completion. ## `size' to sort them by the size of the file ## `links' to sort them by the number of links to the file ## `modification' or `time' or `date' to sort them by the last modification time ## `access' to sort them by the last access time ## `inode' or `change' to sort them by the last inode change time ## `reverse' to sort in decreasing order ## If the style is set to any other value, or is unset, files will be ## sorted alphabetically by name. zstyle ':completion:*' file-sort name ## how many completions switch on menu selection ## use 'long' to start menu compl. if list is bigger than screen ## or some number to start menu compl. if list has that number ## of completions (or more). zstyle ':completion:*' menu select=long ## case-insensitive (uppercase from lowercase) completion zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' ## case-insensitive (all) completion #zstyle ':completion:*' matcher-list 'm:{a-zA-Z}={A-Za-z}' ## case-insensitive,partial-word and then substring completion #zstyle ':completion:*' matcher-list 'm:{a-z}={A-Z}' 'r:|[._-]=* r:|=*' 'l:|=* r:|=*' ## offer indexes before parameters in subscripts zstyle ':completion:*:*:-subscript-:*' tag-order indexes parameters ## insert all expansions for expand completer zstyle ':completion:*:expand:*' tag-order all-expansions ## ignore completion functions (until the _ignored completer) zstyle ':completion:*:functions' ignored-patterns '_*' ## completion caching zstyle ':completion::complete:*' use-cache 1 zstyle ':completion::complete:*' cache-path ~/.zcompcache/$HOST ## add colors to completions zstyle ':completion:*' list-colors ${(s.:.)LS_COLORS} ## don't complete backup files as executables zstyle ':completion:*:complete:-command-::commands' ignored-patterns '*\~' ## filename suffixes to ignore during completion (except after rm command) zstyle ':completion:*:*:(^rm):*:*files' ignored-patterns \ '*?.(o|c~|old|pro|zwc)' '*~' ## completions for some progs. not in default completion system zstyle ':completion:*:*:mpg123:*' file-patterns \ '*.(mp3|MP3):mp3\ files *(-/):directories' zstyle ':completion:*:*:ogg123:*' file-patterns \ '*.(ogg|OGG):ogg\ files *(-/):directories' ## generic completions for programs which understand GNU long options(--help) compdef _gnu_generic slrnpull make df du ## on processes completion complete all user processes zstyle ':completion:*:processes' command 'ps -au$USER' ## add colors to processes for kill completion zstyle ':completion:*:*:kill:*:processes' list-colors '=(#b) #([0-9]#)*=0=01;31' ## common usernames #users=(jozo tomi peh) ## complete usernames ## if u have too much users to write in here, use file; change ## 'users=(jozo tomi peh)' to 'users=( $(<~/.somefile) )' #zstyle ':completion:*' users $users ## common hostnames #hosts=( $(; those set by default only in csh, ksh, sh, or zsh emulations are marked # , , , as appropriate. When listing options # (by `setopt', `unsetopt', `set -o' or `set +o'), those turned on by default # appear in the list prefixed with `no'. Hence (unless KSH_OPTION_PRINT is set), # `setopt' shows all options whose settings # are changed from the default. # Default options are commented, uncomment them if you want # to be diferent from default # ALIASES Expand aliases. #setopt NO_aliases # ALL_EXPORT (-a, ksh: -a) # All parameters subsequently defined are automatically exported. #setopt all_export # ALWAYS_LAST_PROMPT # If unset, key functions that list completions try to return to the last # prompt if given a numeric argument. If set these functions try to # return to the last prompt if given no numeric argument. #setopt NO_always_last_prompt # ALWAYS_TO_END # If a completion is performed with the cursor within a word, and a # full completion is inserted, the cursor is moved to the end of the # word. That is, the cursor is moved to the end of the word if either # a single match is inserted or menu completion is performed. setopt always_to_end # APPEND_HISTORY # If this is set, zsh sessions will append their history list to # the history file, rather than overwrite it. Thus, multiple parallel # zsh sessions will all have their history lists added to the # history file, in the order they are killed. #setopt NO_append_history # AUTO_CD (-J) # If a command is issued that can't be executed as a normal command, # and the command is the name of a directory, perform the cd # command to that directory. setopt auto_cd # AUTO_LIST (-9) # Automatically list choices on an ambiguous completion. #setopt NO_auto_list # AUTO_MENU # Automatically use menu completion after the second consecutive request for # completion, for example by pressing the tab key repeatedly. This option # is overridden by MENU_COMPLETE. #setopt NO_auto_menu # AUTO_NAME_DIRS # Any parameter that is set to the absolute name of a directory # immediately becomes a name for that directory, that will be used # by the `%~' # and related prompt sequences, and will be available when completion # is performed on a word starting with `~'. # (Otherwise, the parameter must be used in the form `~param' first.) setopt NO_auto_name_dirs # AUTO_PARAM_KEYS # If a parameter name was completed and a following character # (normally a space) automatically inserted, and the next character typed is one # of those that have to come directly after the name (like `}', `:', # etc.), the automatically added character is deleted, so that the character # typed comes immediately after the parameter name. # Completion in a brace expansion is affected similarly: the added character # is a `,', which will be removed if `}' is typed next. #setopt NO_auto_param_keys # AUTO_PARAM_SLASH # If a parameter is completed whose content is the name of a directory, # then add a trailing slash instead of a space. #setopt NO_auto_param_slash # AUTO_PUSHD (-N) # Make cd push the old directory onto the directory stack. setopt auto_pushd # AUTO_REMOVE_SLASH # When the last character resulting from a completion is a slash and the next # character typed is a word delimiter, a slash, or a character that ends # a command (such as a semicolon or an ampersand), remove the slash. #setopt NO_auto_remove_slash # AUTO_RESUME (-W) # Treat single word simple commands without redirection # as candidates for resumption of an existing job. setopt NO_auto_resume # BAD_PATTERN (+2) # If a pattern for filename generation is badly formed, print an error message. # (If this option is unset, the pattern will be left unchanged.) #setopt NO_bad_pattern # BANG_HIST (+K) # Perform textual history expansion, csh-style, # treating the character `!' specially. #setopt NO_bang_hist # BARE_GLOB_QUAL # In a glob pattern, treat a trailing set of parentheses as a qualifier # list, if it contains no `|', `(' or (if special) `~' # characters. See section Filename Generation. #setopt NO_bare_glob_qual # BASH_AUTO_LIST # On an ambiguous completion, automatically list choices when the # completion function is called twice in succession. This takes # precedence over AUTO_LIST. The setting of LIST_AMBIGUOUS is # respected. If AUTO_MENU is set, the menu behaviour will then start # with the third press. Note that this will not work with # MENU_COMPLETE, since repeated completion calls immediately cycle # through the list in that case. #setopt bash_auto_list # BEEP (+B) # Beep on error in ZLE. setopt NO_beep # BG_NICE (-6) # Run all background jobs at a lower priority. This option # is set by default. #setopt NO_bg_nice # BRACE_CCL # Expand expressions in braces which would not otherwise undergo brace # expansion to a lexically ordered list of all the characters. See # section Brace Expansion. setopt brace_ccl # BSD_ECHO # Make the echo builtin compatible with the BSD man page echo(1) command. # This disables backslashed escape sequences in echo strings unless the # -e option is specified. #setopt bsd_echo # C_BASES # Output hexadecimal numbers in the standard C format, for example `0xFF' # instead of the usual `16#FF'. If the option OCTAL_ZEROES is also # set (it is not by default), octal numbers will be treated similarly and # hence appear as `077' instead of `8#77'. This option has no effect # on the choice of the output base, nor on the output of bases other than # hexadecimal and octal. Note that these formats will be understood on input # irrespective of the setting of C_BASES. setopt NO_c_bases # CDABLE_VARS (-T) # If the argument to a cd command (or an implied cd with the # AUTO_CD option set) is not a directory, and does not begin with a # slash, try to expand the expression as if it were preceded by a # `~' (see section Filename Expansion). setopt cdable_vars # CHASE_DOTS # When changing to a directory containing a path segment `..' which would # otherwise be treated as canceling the previous segment in the path (in # other words, `foo/..' would be removed from the path, or if `..' is # the first part of the path, the last part of $PWD would be deleted), # instead resolve the path to the physical directory. This option is # overridden by CHASE_LINKS. # For example, suppose /foo/bar is a link to the directory /alt/rod. # Without this option set, `cd /foo/bar/..' changes to /foo; with it # set, it changes to /alt. The same applies if the current directory # is /foo/bar and `cd ..' is used. Note that all other symbolic # links in the path will also be resolved. setopt NO_chase_dots # CHASE_LINKS (-w) # Resolve symbolic links to their true values when changing directory. # This also has the effect of CHASE_DOTS, i.e. a `..' path segment # will be treated as referring to the physical parent, even if the preceding # path segment is a symbolic link. setopt NO_chase_links # CHECK_JOBS # Report the status of background and suspended jobs before exiting a shell # with job control; a second attempt to exit the shell will succeed. # NO_CHECK_JOBS is best used only in combination with NO_HUP, else # such jobs will be killed automatically. #setopt NO_check_jobs # CLOBBER (+C, ksh: +C) # Allows `>' redirection to truncate existing files, # and `>>' to create files. # Otherwise `>!' or `>|' must be used to truncate a file, # and `>>!' or `>>|' to create a file. #setopt clobber # COMPLETE_ALIASES # Prevents aliases on the command line from being internally substituted # before completion is attempted. The effect is to make the alias a # distinct command for completion purposes. setopt NO_complete_aliases # COMPLETE_IN_WORD # If unset, the cursor is set to the end of the word if completion is # started. Otherwise it stays there and completion is done from both ends. setopt complete_in_word # CORRECT (-0) # Try to correct the spelling of commands. setopt NO_correct # CORRECT_ALL (-O) # Try to correct the spelling of all arguments in a line. setopt correct_all # CSH_JUNKIE_HISTORY # A history reference without an event specifier will always refer to the # previous command. Without this option, such a history reference refers # to the same event as the previous history reference, defaulting to the # previous command. #setopt csh_junkie_history # CSH_JUNKIE_LOOPS # Allow loop bodies to take the form `list; end' instead of # `do list; done'. #setopt csh_junkie_loops # CSH_JUNKIE_QUOTES # Changes the rules for single- and double-quoted text to match that of # csh. These require that embedded newlines be preceded by a backslash; # unescaped newlines will cause an error message. # In double-quoted strings, it is made impossible to escape `$', ``' # or `"' (and `\' itself no longer needs escaping). # Command substitutions are only expanded once, and cannot be nested. #setopt csh_junkie_quotes # CSH_NULLCMD # Do not use the values of NULLCMD and READNULLCMD # when running redirections with no command. This make # such redirections fail (see section Redirection). #setopt csh_nullcmd # CSH_NULL_GLOB # If a pattern for filename generation has no matches, # delete the pattern from the argument list; # do not report an error unless all the patterns # in a command have no matches. # Overrides NOMATCH. #setopt csh_null_glob # DVORAK # Use the Dvorak keyboard instead of the standard qwerty keyboard as a basis # for examining spelling mistakes for the CORRECT and CORRECT_ALL # options and the spell-word editor command. #setopt dvorak # EQUALS # Perform = filename expansion. # (See section Filename Expansion.) #setopt NO_equals # ERR_EXIT (-e, ksh: -e) # If a command has a non-zero exit status, execute the ZERR # trap, if set, and exit. This is disabled while running initialization # scripts. #setopt err_exit # EXTENDED_GLOB # Treat the `#', `~' and `^' characters as part of patterns # for filename generation, etc. (An initial unquoted `~' # always produces named directory expansion.) setopt extended_glob # EXTENDED_HISTORY # Save each command's beginning timestamp (in seconds since the epoch) # and the duration (in seconds) to the history file. The format of # this prefixed data is: # `:::'. #setopt extended_history # FLOW_CONTROL # If this option is unset, # output flow control via start/stop characters (usually assigned to # ^S/^Q) is disabled in the shell's editor. #setopt NO_flow_control # FUNCTION_ARGZERO # When executing a shell function or sourcing a script, set $0 # temporarily to the name of the function/script. #setopt NO_function_argzero # GLOB (+F, ksh: +f) # Perform filename generation (globbing). # (See section Filename Generation.) #setopt NO_glob # GLOBAL_EXPORT () # If this option is set, passing the -x flag to the builtins declare, # float, integer, readonly and typeset (but not local) # will also set the -g flag; hence parameters exported to # the environment will not be made local to the enclosing function, unless # they were already or the flag +g is given explicitly. If the option is # unset, exported parameters will be made local in just the same way as any # other parameter. # This option is set by default for backward compatibility; it is not # recommended that its behaviour be relied upon. Note that the builtin # export always sets both the -x and -g flags, and hence its # effect extends beyond the scope of the enclosing function; this is the # most portable way to achieve this behaviour. #setopt NO_global_export # GLOBAL_RCS (-d) # If this option is unset, the startup files /etc/zprofile, # /etc/zshrc, /etc/zlogin and /etc/zlogout will not be run. It # can be disabled and re-enabled at any time, including inside local startup # files (.zshrc, etc.). #setopt NO_global_rcs # GLOB_ASSIGN # If this option is set, filename generation (globbing) is # performed on the right hand side of scalar parameter assignments of # the form `name=pattern (e.g. `foo=*'). # If the result has more than one word the parameter will become an array # with those words as arguments. This option is provided for backwards # compatibility only: globbing is always performed on the right hand side # of array assignments of the form `name=(value)' # (e.g. `foo=(*)') and this form is recommended for clarity; # with this option set, it is not possible to predict whether the result # will be an array or a scalar. #setopt glob_assign # GLOB_COMPLETE # When the current word has a glob pattern, do not insert all the words # resulting from the expansion but generate matches as for completion and # cycle through them like MENU_COMPLETE. The matches are generated as if # a `*' was added to the end of the word, or inserted at the cursor when # COMPLETE_IN_WORD is set. This actually uses pattern matching, not # globbing, so it works not only for files but for any completion, such as # options, user names, etc. setopt glob_complete # GLOB_DOTS (-4) # Do not require a leading `.' in a filename to be matched explicitly. #setopt glob_dots # GLOB_SUBST # Treat any characters resulting from parameter expansion as being # eligible for file expansion and filename generation, and any # characters resulting from command substitution as being eligible # for filename generation. Braces (and commas in between) do not # become eligible for expansion. #setopt glob_subst # HASH_CMDS # Note the location of each command the first time it is executed. # Subsequent invocations of the same command will use the # saved location, avoiding a path search. # If this option is unset, no path hashing is done at all. # However, when CORRECT is set, commands whose names do not appear in # the functions or aliases hash tables are hashed in order to avoid # reporting them as spelling errors. #setopt NO_hash_cmds # HASH_DIRS # Whenever a command name is hashed, hash the directory containing it, # as well as all directories that occur earlier in the path. # Has no effect if neither HASH_CMDS nor CORRECT is set. #setopt NO_hash_dirs # HASH_LIST_ALL # Whenever a command completion is attempted, make sure the entire # command path is hashed first. This makes the first completion slower. #setopt NO_hash_list_all # HIST_ALLOW_CLOBBER # Add `|' to output redirections in the history. This allows history # references to clobber files even when CLOBBER is unset. setopt NO_hist_allow_clobber # HIST_BEEP # Beep when an attempt is made to access a history entry which # isn't there. setopt NO_hist_beep # HIST_EXPIRE_DUPS_FIRST # If the internal history needs to be trimmed to add the current command line, # setting this option will cause the oldest history event that has a duplicate # to be lost before losing a unique event from the list. # You should be sure to set the value of HISTSIZE to a larger number # than SAVEHIST in order to give you some room for the duplicated # events, otherwise this option will behave just like HIST_IGNORE_ALL_DUPS # once the history fills up with unique events. setopt hist_expire_dups_first # HIST_FIND_NO_DUPS # When searching for history entries in the line editor, do not display # duplicates of a line previously found, even if the duplicates are not # contiguous. setopt hist_find_no_dups # HIST_IGNORE_ALL_DUPS # If a new command line being added to the history list duplicates an # older one, the older command is removed from the list (even if it is # not the previous event). setopt hist_ignore_all_dups # HIST_IGNORE_DUPS (-h) # Do not enter command lines into the history list # if they are duplicates of the previous event. setopt hist_ignore_dups # HIST_IGNORE_SPACE (-g) # Remove command lines from the history list when the first character on # the line is a space, or when one of the expanded aliases contains a # leading space. # Note that the command lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the line. If you want to make it vanish right away without # entering another command, type a space and press return. setopt hist_ignore_space # HIST_NO_FUNCTIONS # Remove function definitions from the history list. # Note that the function lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the definition. setopt hist_no_functions # HIST_NO_STORE # Remove the history (fc -l) command from the history list # when invoked. # Note that the command lingers in the internal history until the next # command is entered before it vanishes, allowing you to briefly reuse # or edit the line. setopt hist_no_store # HIST_REDUCE_BLANKS # Remove superfluous blanks from each command line # being added to the history list. setopt hist_reduce_blanks # HIST_SAVE_NO_DUPS # When writing out the history file, older commands that duplicate # newer ones are omitted. setopt hist_save_no_dups # HIST_VERIFY # Whenever the user enters a line with history expansion, # don't execute the line directly; instead, perform # history expansion and reload the line into the editing buffer. setopt hist_verify # HUP # Send the HUP signal to running jobs when the # shell exits. setopt NO_hup # IGNORE_BRACES (-I) # Do not perform brace expansion. #setopt ignore_braces # IGNORE_EOF (-7) # Do not exit on end-of-file. Require the use # of exit or logout instead. # However, ten consecutive EOFs will cause the shell to exit anyway, # to avoid the shell hanging if its tty goes away. # Also, if this option is set and the Zsh Line Editor is used, widgets # implemented by shell functions can be bound to EOF (normally # Control-D) without printing the normal warning message. This works # only for normal widgets, not for completion widgets. #setopt ignore_eof # INC_APPEND_HISTORY # This options works like APPEND_HISTORY except that new history lines # are added to the $HISTFILE incrementally (as soon as they are # entered), rather than waiting until the shell is killed. # The file is periodically trimmed to the number of lines specified by # $SAVEHIST, but can exceed this value between trimmings. setopt inc_append_history # INTERACTIVE (-i, ksh: -i) # This is an interactive shell. This option is set upon initialisation if # the standard input is a tty and commands are being read from standard input. # (See the discussion of SHIN_STDIN.) # This heuristic may be overridden by specifying a state for this option # on the command line. # The value of this option cannot be changed anywhere other than the command line. #setopt NO_interactive # INTERACTIVE_COMMENTS (-k) # Allow comments even in interactive shells. setopt interactive_comments # KSH_ARRAYS # Emulate ksh array handling as closely as possible. If this option # is set, array elements are numbered from zero, an array parameter # without subscript refers to the first element instead of the whole array, # and braces are required to delimit a subscript (`${path[2]}' rather # than just `$path[2]'). #setopt ksh_arrays # KSH_AUTOLOAD # Emulate ksh function autoloading. This means that when a function is # autoloaded, the corresponding file is merely executed, and must define # the function itself. (By default, the function is defined to the contents # of the file. However, the most common ksh-style case - of the file # containing only a simple definition of the function - is always handled # in the ksh-compatible manner.) #setopt ksh_autoload # KSH_GLOB # In pattern matching, the interpretation of parentheses is affected by # a preceding `@', `*', `+', `?' or `!'. See section Filename Generation. #setopt ksh_glob # KSH_OPTION_PRINT # Alters the way options settings are printed: instead of separate lists of # set and unset options, all options are shown, marked `on' if # they are in the non-default state, `off' otherwise. #setopt ksh_option_print # KSH_TYPESET # Alters the way arguments to the typeset family of commands, including # declare, export, float, integer, local and # readonly, are processed. Without this option, zsh will perform normal # word splitting after command and parameter expansion in arguments of an # assignment; with it, word splitting does not take place in those cases. #setopt ksh_typeset # LIST_AMBIGUOUS # This option works when AUTO_LIST or BASH_AUTO_LIST is also # set. If there is an unambiguous prefix to insert on the command line, # that is done without a completion list being displayed; in other # words, auto-listing behaviour only takes place when nothing would be # inserted. In the case of BASH_AUTO_LIST, this means that the list # will be delayed to the third call of the function. #setopt NO_list_ambiguous # LIST_BEEP # Beep on an ambiguous completion. More accurately, this forces the # completion widgets to return status 1 on an ambiguous completion, which # causes the shell to beep if the option BEEP is also set; this may # be modified if completion is called from a user-defined widget. setopt NO_list_beep # LIST_PACKED # Try to make the completion list smaller (occupying less lines) by # printing the matches in columns with different widths. setopt list_packed # LIST_ROWS_FIRST # Lay out the matches in completion lists sorted horizontally, that is, # the second match is to the right of the first one, not under it as # usual. setopt NO_list_rows_first # LIST_TYPES (-X) # When listing files that are possible completions, show the # type of each file with a trailing identifying mark. setopt list_types # LOCAL_OPTIONS # If this option is set at the point of return from a shell function, # all the options (including this one) which were in force upon entry to # the function are restored. Otherwise, only this option and the XTRACE # and PRINT_EXIT_VALUE options are restored. Hence # if this is explicitly unset by a shell function the other options in # force at the point of return will remain so. # A shell function can also guarantee itself a known shell configuration # with a formulation like `emulate -L zsh'; the -L activates LOCAL_OPTIONS. #setopt local_options # LOCAL_TRAPS # If this option is set when a signal trap is set inside a function, then the # previous status of the trap for that signal will be restored when the # function exits. Note that this option must be set prior to altering the # trap behaviour in a function; unlike LOCAL_OPTIONS, the value on exit # from the function is irrelevant. However, it does not need to be set # before any global trap for that to be correctly restored by a function. # For example, # unsetopt localtraps # trap - INT # fn() { setopt localtraps; trap '{}' INT; sleep 3; } # will restore normally handling of SIGINT after the function exits. #setopt local_traps # LONG_LIST_JOBS (-R) # List jobs in the long format by default. setopt long_list_jobs # MAGIC_EQUAL_SUBST # All unquoted arguments of the form `anything=expression' # appearing after the command name have filename expansion (that is, # where expression has a leading `~' or `=') performed on # expression as if it were a parameter assignment. The argument is # not otherwise treated specially; it is passed to the command as a single # argument, and not used as an actual parameter assignment. # For example, in echo foo=~/bar:~/rod, both occurrences of ~ would be replaced. # Note that this happens anyway with typeset and similar statements. # This option respects the setting of the KSH_TYPESET option. # In other words, if both options are in effect, arguments looking like # assignments will not undergo wordsplitting. setopt magic_equal_subst # MAIL_WARNING (-U) # Print a warning message if a mail file has been # accessed since the shell last checked. setopt mail_warning # MARK_DIRS (-8, ksh: -X) # Append a trailing `/' to all directory # names resulting from filename generation (globbing). #setopt mark_dirs # MENU_COMPLETE (-Y) # On an ambiguous completion, instead of listing possibilities or beeping, # insert the first match immediately. Then when completion is requested # again, remove the first match and insert the second match, etc. # When there are no more matches, go back to the first one again. # reverse-menu-complete may be used to loop through the list # in the other direction. This option overrides AUTO_MENU. #setopt menu_complete # MONITOR (-m, ksh: -m) # Allow job control. Set by default in interactive shells. #setopt NO_monitor # MULTIOS # Perform implicit tees or cats when multiple # redirections are attempted (see section Redirection). #setopt NO_multios # NOMATCH (+3) # If a pattern for filename generation has no matches, # print an error, instead of # leaving it unchanged in the argument list. # This also applies to file expansion # of an initial `~' or `='. #setopt NO_nomatch # NOTIFY (-5, ksh: -b) # Report the status of background jobs immediately, rather than # waiting until just before printing a prompt. #setopt NO_notify # NULL_GLOB (-G) # If a pattern for filename generation has no matches, # delete the pattern from the argument list instead of reporting an error. # Overrides NOMATCH. setopt null_glob # NUMERIC_GLOB_SORT # If numeric filenames are matched by a filename generation pattern, # sort the filenames numerically rather than lexicographically. setopt NO_numeric_glob_sort # OCTAL_ZEROES # Interpret any integer constant beginning with a 0 as octal, per IEEE Std # 1003.2-1992 (ISO 9945-2:1993). This is not enabled by default as it # causes problems with parsing of, for example, date and time strings with # leading zeroes. #setopt octal_zeroes # OVERSTRIKE # Start up the line editor in overstrike mode. #setopt overstrike # PATH_DIRS (-Q) # Perform a path search even on command names with slashes in them. # Thus if `/usr/local/bin' is in the user's path, and he or she types # `X11/xinit', the command `/usr/local/bin/X11/xinit' will be executed # (assuming it exists). # Commands explicitly beginning with `/', `./' or `../' # are not subject to the path search. # This also applies to the . builtin. # Note that subdirectories of the current directory are always searched for # executables specified in this form. This takes place before any search # indicated by this option, and regardless of whether `.' or the current # directory appear in the command search path. setopt NO_path_dirs # POSIX_BUILTINS # When this option is set the command builtin can be used to execute # shell builtin commands. Parameter assignments specified before shell # functions and special builtins are kept after the command completes unless # the special builtin is prefixed with the command builtin. Special # builtins are # .,:,break,continue,declare,eval,exit, # export,integer,local,readonly,return,set,shift,source,times,trap and unset. #setopt posix_builtins # PRINT_EIGHT_BIT # Print eight bit characters literally in completion lists, etc. # This option is not necessary if your system correctly returns the # printability of eight bit characters (see man page ctype(3)). setopt print_eight_bit # PRINT_EXIT_VALUE (-1) # Print the exit value of programs with non-zero exit status. #setopt print_exit_value # PRIVILEGED (-p, ksh: -p) # Turn on privileged mode. This is enabled automatically on startup if the # effective user (group) ID is not equal to the real user (group) ID. Turning # this option off causes the effective user and group IDs to be set to the # real user and group IDs. This option disables sourcing user startup files. # If zsh is invoked as `sh' or `ksh' with this option set, # /etc/suid_profile is sourced (after /etc/profile on interactive # shells). Sourcing ~/.profile is disabled and the contents of the # ENV variable is ignored. This option cannot be changed using the # -m option of setopt and unsetopt, and changing it inside a # function always changes it globally regardless of the LOCAL_OPTIONS # option. #setopt privileged # PROMPT_BANG # If set, `!' is treated specially in prompt expansion. # See section Prompt Expansion. #setopt prompt_bang # PROMPT_CR (+V) # Print a carriage return just before printing # a prompt in the line editor. This is on by default as multi-line editing # is only possible if the editor knows where the start of the line appears. #setopt NO_prompt_cr # PROMPT_PERCENT # If set, `%' is treated specially in prompt expansion. # See section Prompt Expansion. #setopt NO_prompt_percent # PROMPT_SUBST # If set, parameter expansion, command substitution and # arithmetic expansion are performed in prompts. #setopt prompt_subst # PUSHD_IGNORE_DUPS # Don't push multiple copies of the same directory onto the directory stack. setopt pushd_ignore_dups # PUSHD_MINUS # Exchanges the meanings of `+' and `-' # when used with a number to specify a directory in the stack. setopt pushd_minus # PUSHD_SILENT (-E) # Do not print the directory stack after pushd or popd. setopt pushd_silent # PUSHD_TO_HOME (-D) # Have pushd with no arguments act like `pushd $HOME'. #setopt NO_pushd_to_home # RC_EXPAND_PARAM (-P) # Array expansions of the form # `foo${xx}bar', where the parameter # xx is set to (a b c), are substituted with # `fooabar foobbar foocbar' instead of the default # `fooa b cbar'. #setopt rc_expand_param # RC_QUOTES # Allow the character sequence `'{'}' to signify a single quote # within singly quoted strings. Note this does not apply in quoted strings # using the format $'...', where a backslashed single quote can # be used. setopt rc_quotes # RCS (+f) # After /etc/zshenv is sourced on startup, source the # .zshenv, /etc/zprofile, .zprofile, # /etc/zshrc, .zshrc, /etc/zlogin, .zlogin, and .zlogout # files, as described in section Files. # If this option is unset, the /etc/zshenv file is still sourced, but any # of the others will not be; it can be set at any time to prevent the # remaining startup files after the currently executing one from # being sourced. #setopt NO_rcs # REC_EXACT (-S) # In completion, recognize exact matches even # if they are ambiguous. #setopt rec_exact # RESTRICTED (-r) # Enables restricted mode. This option cannot be changed using # unsetopt, and setting it inside a function always changes it # globally regardless of the LOCAL_OPTIONS option. See # section Restricted Shell. #setopt restricted # RM_STAR_SILENT (-H) # Do not query the user before executing `rm *' or `rm path/*'. #setopt rm_star_silent # RM_STAR_WAIT # If querying the user before executing `rm *' or `rm path/*', # first wait ten seconds and ignore anything typed in that time. # This avoids the problem of reflexively answering `yes' to the query # when one didn't really mean it. The wait and query can always be # avoided by expanding the `*' in ZLE (with tab). #setopt rm_star_wait # SHARE_HISTORY # This option both imports new commands from the history file, and also # causes your typed commands to be appended to the history file (the # latter is like specifying INC_APPEND_HISTORY). # The history lines are also output with timestamps ala # EXTENDED_HISTORY (which makes it easier to find the spot where # we left off reading the file after it gets re-written). setopt share_history # SH_FILE_EXPANSION # Perform filename expansion (e.g., ~ expansion) before # parameter expansion, command substitution, arithmetic expansion # and brace expansion. # If this option is unset, it is performed after # brace expansion, so things like `~$USERNAME' and # `~{pfalstad,rc}' will work. #setopt sh_file_expansion # SH_GLOB # Disables the special meaning of `(', `|', `)' # and '<' for globbing the result of parameter and command substitutions, # and in some other places where # the shell accepts patterns. This option is set by default if zsh is # invoked as sh or ksh. #setopt sh_glob # SHIN_STDIN (-s, ksh: -s) # Commands are being read from the standard input. # Commands are read from standard input if no command is specified with # -c and no file of commands is specified. If SHIN_STDIN # is set explicitly on the command line, # any argument that would otherwise have been # taken as a file to run will instead be treated as a normal positional # parameter. # Note that setting or unsetting this option on the command line does not # necessarily affect the state the option will have while the shell is # running - that is purely an indicator of whether on not commands are # actually being read from standard input. The value of this option # cannot be changed anywhere other # than the command line. #setopt shin_stdin # SH_NULLCMD # Do not use the values of NULLCMD and READNULLCMD # when doing redirections, use `:' instead (see section Redirection). #setopt sh_nullcmd # SH_OPTION_LETTERS # If this option is set the shell tries to interpret single letter options # (which are used with set and setopt) like ksh does. # This also affects the value of the - special parameter. #setopt sh_option_letters # SHORT_LOOPS # Allow the short forms of for, select, # if, and function constructs. #setopt NO_short_loops # SH_WORD_SPLIT (-y) # Causes field splitting to be performed on unquoted parameter expansions. # Note that this option has nothing to do with word splitting. # (See section Parameter Expansion.) #setopt sh_word_split # SINGLE_COMMAND (-t, ksh: -t) # If the shell is reading from standard input, it exits after a single command # has been executed. This also makes the shell non-interactive, unless the # INTERACTIVE option is explicitly set on the command line. # The value of this option cannot be changed anywhere other than the command line. #setopt single_command # SINGLE_LINE_ZLE (-M) # Use single-line command line editing instead of multi-line. #setopt single_line_zle # SUN_KEYBOARD_HACK (-L) # If a line ends with a backquote, and there are an odd number # of backquotes on the line, ignore the trailing backquote. # This is useful on some keyboards where the return key is # too small, and the backquote key lies annoyingly close to it. #setopt sun_keyboard_hack # UNSET (+u, ksh: +u) # Treat unset parameters as if they were empty when substituting. # Otherwise they are treated as an error. #setopt NO_unset # VERBOSE (-v, ksh: -v) # Print shell input lines as they are read. #setopt verbose # XTRACE (-x, ksh: -x) # Print commands and their arguments as they are executed. #setopt xtrace # ZLE (-Z) # Use the zsh line editor. Set by default in interactive shells connected to # a terminal. #setopt NO_zle zsh-lovers-0.8.3/zsh.vim0000644000175000017500000001632711103635725015053 0ustar alessioalessio" Vim syntax file " Language: Zsh shell script " Maintainer: Nikolai Weibull " URL: http://www.pcppopper.org/vim/syntax/pcp/zsh/ " Latest Revision: 2004-12-12 " arch-tag: 2e2c7097-99cb-4b87-a771-3a819b69995e if version < 600 syntax clear elseif exists("b:current_syntax") finish endif " Set iskeyword since we need `-' (and potentially others) in keywords. " For version 5.x: Set it globally " For version 6.x: Set it locally if version >= 600 command -nargs=1 SetIsk setlocal iskeyword= else command -nargs=1 SetIsk set iskeyword= endif SetIsk @,48-57,_,- delcommand SetIsk " Todo syn keyword zshTodo contained TODO FIXME XXX NOTE " Comments syn region zshComment matchgroup=zshComment start='\%(^\|\s\)#' end='$' contains=zshTodo " PreProc syn match zshPreProc '^\%1l#\%(!\|compdef\|autoload\).*$' " Strings syn match zshQuoted '\\.' syn region zshString matchgroup=zshStringDelimiter start=+"+ end=+"+ contains=zshQuoted,@zshDerefs,@zshSubst syn region zshString matchgroup=zshStringDelimiter start=+'+ end=+'+ " XXX: This should probably be more precise, but Zsh seems a bit confused about it itself syn region zshPOSIXString matchgroup=zshStringDelimiter start=+\$'+ end=+'+ contains=zshQuoted syn match zshJobSpec '%\(\d\+\|?\=\w\+\|[%+-]\)' " Precommand Modifiers syn keyword zshPrecommand noglob nocorrect exec command builtin - time " Delimiters syn keyword zshDelimiter do done " Conditionals syn keyword zshConditional if then elif else fi case in esac select " Loops syn keyword zshRepeat for while until repeat foreach " Exceptions syn keyword zshException always " Keywords syn keyword zshKeyword function nextgroup=zshKSHFunction skipwhite " Functions syn match zshKSHFunction contained '\k\+' syn match zshFunction '^\s*\k\+\ze\s*()' " Operators syn match zshOperator '||\|&&\|;\|&!\=' " Here Documents if version < 600 " Do nothing for now TODO: do something else syn region zshHereDoc matchgroup=zshRedir start='<<\s*\z(\S*\)' end='^\z1$' contains=@zshSubst syn region zshHereDoc matchgroup=zshRedir start='<<-\s*\z(\S*\)' end='^\s*\z1$' contains=@zshSubst syn region zshHereDoc matchgroup=zshRedir start='<<\s*\(["']\)\z(\S*\)\1' end='^\z1$' syn region zshHereDoc matchgroup=zshRedir start='<<-\s*\(["']\)\z(\S*\)\1' end='^\s*\z1$' endif " Redirections syn match zshRedir '\d\=\(<\|<>\|<<<\|<&\s*[0-9p-]\=\)' syn match zshRedir '\d\=\(>\|>>\|>&\s*[0-9p-]\=\|&>\|>>&\|&>>\)[|!]\=' syn match zshRedir '|&\=' " Variable Assignments syn match zshVariable '\<\h\w*\ze+\==' " XXX: how safe is this? syn region zshVariable oneline matchgroup=zshVariable start='\$\@' syn match zshLongDeref '\$\%(ARGC\|argv\|status\|pipestatus\|CPUTYPE\|EGID\|EUID\|ERRNO\|GID\|HOST\|LINENO\|LOGNAME\)' syn match zshLongDeref '\$\%(MACHTYPE\|OLDPWD OPTARG\|OPTIND\|OSTYPE\|PPID\|PWD\|RANDOM\|SECONDS\|SHLVL\|signals\)' syn match zshLongDeref '\$\%(TRY_BLOCK_ERROR\|TTY\|TTYIDLE\|UID\|USERNAME\|VENDOR\|ZSH_NAME\|ZSH_VERSION\|REPLY\|reply\|TERM\)' syn match zshDeref '\$[=^~]*[#+]*\h\w*\>' " Commands syn match zshCommands '\%(^\|\s\)[.:]\ze\s' syn keyword zshCommands alias autoload bg bindkey break bye cap cd chdir syn keyword zshCommands clone comparguments compcall compctl compdescribe syn keyword zshCommands compfiles compgroups compquote comptags comptry syn keyword zshCommands compvalues continue declare dirs disable disown syn keyword zshCommands echo echotc echoti emulate enable eval exec exit syn keyword zshCommands export false fc fg functions getcap getln syn keyword zshCommands getopts hash history jobs kill let limit syn keyword zshCommands log logout popd print printf pushd pushln syn keyword zshCommands pwd r read readonly rehash return sched set syn keyword zshCommands setcap setopt shift source stat suspend test times syn keyword zshCommands trap true ttyctl type ulimit umask unalias syn keyword zshCommands unfunction unhash unlimit unset unsetopt vared syn keyword zshCommands wait whence where which zcompile zformat zftp zle syn keyword zshCommands zmodload zparseopts zprof zpty zregexparse zsocket syn keyword zshCommands zstyle ztcp " Types syn keyword zshTypes float integer local typeset " Switches " XXX: this may be too much syn match zshSwitches '\s\zs--\=[a-zA-Z0-9-]\+' " Numbers syn match zshNumber '[-+]\=0x\x\+\>' syn match zshNumber '[-+]\=0\o\+\>' syn match zshNumber '[-+]\=\d\+#[-+]\=\w\+\>' syn match zshNumber '[-+]\=\d\+\.\d\+\>' " Substitution syn cluster zshSubst contains=zshSubst,zshOldSubst syn region zshSubst matchgroup=zshSubstDelim transparent start='\$(' skip='\\)' end=')' contains=TOP syn region zshSubst matchgroup=zshSubstDelim transparent start='\$((' skip='\\)' end='))' contains=TOP syn region zshSubst matchgroup=zshSubstDelim start='\${' skip='\\}' end='}' contains=@zshSubst syn region zshOldSubst matchgroup=zshSubstDelim start=+`+ skip=+\\`+ end=+`+ contains=TOP,zshOldSubst " Define the default highlighting. " For version 5.7 and earlier: only when not done already " For version 5.8 and later: only when an item doesn't have highlighting yet if version >= 508 || !exists("did_zsh_syn_inits") if version < 508 let did_zsh_syn_inits = 1 command -nargs=+ HiLink hi link else command -nargs=+ HiLink hi def link endif HiLink zshTodo Todo HiLink zshComment Comment HiLink zshPreProc PreProc HiLink zshQuoted SpecialChar HiLink zshString String HiLink zshStringDelimiter zshString HiLink zshPOSIXString zshString HiLink zshJobSpec Special HiLink zshPrecommand Special HiLink zshDelimiter Keyword HiLink zshConditional Conditional HiLink zshException Exception HiLink zshRepeat Repeat HiLink zshKeyword Keyword HiLink zshFunction Function HiLink zshKSHFunction zshFunction HiLink zshHereDoc String HiLink zshOperator Operator HiLink zshRedir Operator HiLink zshVariable Identifier HiLink zshDereferencing PreProc if s:zsh_syntax_variables =~ 'short\|all' HiLink zshShortDeref zshDereferencing else HiLink zshShortDeref None endif if s:zsh_syntax_variables =~ 'long\|all' HiLink zshLongDeref zshDereferencing else HiLink zshLongDeref None endif if s:zsh_syntax_variables =~ 'all' HiLink zshDeref zshDereferencing else HiLink zshDerefDeref None endif HiLink zshCommands Keyword HiLink zshTypes Type HiLink zshSwitches Special HiLink zshNumber Number HiLink zshSubst PreProc HiLink zshOldSubst zshSubst HiLink zshSubstDelim zshSubst delcommand HiLink endif let b:current_syntax = "zsh" " vim: set sts=2 sw=2: