smbldap-tools-0.9.9/0000775000175000017500000000000012010203552014215 5ustar fumiyasfumiyassmbldap-tools-0.9.9/INSTALL0000664000175000017500000000300212001173176015251 0ustar fumiyasfumiyasHow To Install SMBLDAP-TOOLS ====================================================================== Requirements ====================================================================== For build and installation: * Perl 5.x * make For runtime: * Perl 5.8.1 or later * Perl Net::LDAP module * Perl Crypt::SmbHash module Basic install procedure ====================================================================== $ ./configure ... $ make ... $ su - Password: xxxxxxxx # make install ... Basic configuration procedure ====================================================================== * Edit smbldap.conf and smbldap_bind.conf file in /usr/local/etc/smbldap-tools directory (by default) to match your environment. * Initialize the LDAP DIT # smbldap-populate Upgrade to new release from previous release ====================================================================== Upgrade from release 0.9.6 ---------------------------------------------------------------------- smbldap-tools 0.9.7 now support sambaNextRid attribute and its value in sambaDomain object for new RID allocation instead of obsolete RID algorithm by default. (It is for compatibility with Samba 3.0.23c and later.) If you are upgrading from smbldap-tools 0.9.6 (or older) and/or you want to use legacy RID algorithm for new RID allocation, you must add "sambaAlgorithmicRidBase: 1000" to your sambaDomain object. You can do that by running `./smbldap-upgrade-0.9.6.cmd` in your smbldap-tools source tree. smbldap-tools-0.9.9/smbldap-tools.spec0000664000175000017500000000737212010203072017657 0ustar fumiyasfumiyas%define name smbldap-tools %define version 0.9.9 %if 0 %define pre_version rc3 %endif %define release 1 %if 0%{!?dist:1} %define dist %(sed -n 's/^.* \\([1-9]*[0-9]\\)\\..*$/.el\\1/p' /etc/redhat-release 2>/dev/null) %endif Summary: User and Group administration tools for Samba/LDAP Name: %{name} version: %{version} Release: %{?pre_version:0.%{pre_version}.}%{release}%{?dist} Group: System Environment/Base License: GPLv2+ URL: https://gna.org/projects/smbldap-tools/ Packager: SATOH Fumiyasu Source0: http://download.gna.org/smbldap-tools/sources/%{version}%{?pre_version}/smbldap-tools-%{version}%{?pre_version}.tar.gz BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) BuildRequires: perl BuildArch: noarch Requires: perl >= 5.8.1 %description smbldap-tools is a set of perl scripts designed to manage user and group accounts stored in an LDAP directory. They can be used both by users and administrators of Linux systems: * administrators can perform users and groups management operations, in a way similar to the standard useradd or groupmod commands * users can change their LDAP password from the command line and get/change personnal informations This was first contributed by IDEALX (http://www.opentrust.com/) %prep %setup -q -n %{name}-%{version}%{?pre_version} %build %configure make for f in smbldap-config smbldap-upgrade-0.9.6; do cp -p $f.cmd doc/$f.pl chmod -x doc/$f.pl done %install %{__rm} -rf %{buildroot} make install DESTDIR=%{buildroot} mkdir -p -m 0755 %{buildroot}%{_sysconfdir}/smbldap-tools cp -a smbldap.conf smbldap_bind.conf %{buildroot}%{_sysconfdir}/smbldap-tools/ mkdir -p -m 0755 %{buildroot}%{_mandir}/man8/ cp -p *.8 %{buildroot}%{_mandir}/man8/ %clean %{__rm} -rf %{buildroot} %triggerpostun -- %{name} < 0.9.7 if [ "$1" -eq "2" ]; then ## Upgrade %{__perl} %{_docdir}/%{name}-%{version}/smbldap-upgrade-0.9.6.pl fi %files %defattr(-,root,root,-) %doc ChangeLog CONTRIBUTORS COPYING FILES INFRA INSTALL README TODO %doc doc/*.conf.example doc/migration_scripts/ doc/*.pdf doc/*.pl %dir %{_sysconfdir}/smbldap-tools/ %config(noreplace) %{_sysconfdir}/smbldap-tools/smbldap.conf %attr(0600,root,root) %config(noreplace) %{_sysconfdir}/smbldap-tools/smbldap_bind.conf %{_sbindir}/smbldap-groupadd %{_sbindir}/smbldap-groupdel %{_sbindir}/smbldap-grouplist %{_sbindir}/smbldap-groupmod %{_sbindir}/smbldap-groupshow %{_sbindir}/smbldap-passwd %{_sbindir}/smbldap-populate %{_sbindir}/smbldap-useradd %{_sbindir}/smbldap-userdel %{_sbindir}/smbldap-userlist %{_sbindir}/smbldap-usermod %{_sbindir}/smbldap-userinfo %{_sbindir}/smbldap-usershow %{perl_vendorlib}/smbldap_tools.pm %{_mandir}/man8/smbldap-groupadd.8* %{_mandir}/man8/smbldap-groupdel.8* %{_mandir}/man8/smbldap-grouplist.8* %{_mandir}/man8/smbldap-groupmod.8* %{_mandir}/man8/smbldap-groupshow.8* %{_mandir}/man8/smbldap-passwd.8* %{_mandir}/man8/smbldap-populate.8* %{_mandir}/man8/smbldap-useradd.8* %{_mandir}/man8/smbldap-userdel.8* %{_mandir}/man8/smbldap-userinfo.8* %{_mandir}/man8/smbldap-userlist.8* %{_mandir}/man8/smbldap-usermod.8* %{_mandir}/man8/smbldap-usershow.8* %changelog * Tue Aug 7 2012 SATOH Fumiyasu - 0.9.9-1 - New upstream version * Mon Mar 5 2012 SATOH Fumiyasu - 0.9.8-1 - New upstream version * Mon Sep 26 2011 SATOH Fumiyasu - 0.9.7-1 - New upstream version * Thu Jul 7 2011 SATOH Fumiyasu - 0.9.6.svn-3 - Run smbldap-upgrade-0.9.6.pl in %%triggerun %%{name} < 0.9.6.svn * Wed Jun 22 2011 SATOH Fumiyasu - 0.9.6.svn-2 - New upstream version * Fri Aug 10 2007 Jerome Tournier 0.9.4-1 - see Changelog file for updates in scripts smbldap-tools-0.9.9/build/0000775000175000017500000000000012010203214015307 5ustar fumiyasfumiyassmbldap-tools-0.9.9/build/subst.pl.in0000664000175000017500000000273011716736232017442 0ustar fumiyasfumiyas#!@PERL_COMMAND@ ## ## Substitute for @TAG@ in STDIN stream and output to STDOUT ## Copyright (c) 2000-2011 SATOH Fumiyasu, All rights reserved. ## ## License: GNU General Public License version 2 ## Date: 2011-06-22, since 2000-10-27 ## use strict; use warnings; use English; use IO::File; my $tag1 = qr/\@([A-Za-z]+(?:_[0-9A-Za-z]+)*)\@/; my $tag2 = qr/\$[{(]([A-Za-z]+(?:_[0-9A-Za-z]+)*)[)}]/; my $fh_in = *STDIN; my $fh_out = *STDOUT; if (defined($ARGV[0]) && $ARGV[0] !~ /=/) { my $file = shift(@ARGV); if ($fh_in = IO::File->new($file, 'r')) { die "Cannot open file: $file: $OS_ERROR"; } } if (defined($ARGV[0]) && $ARGV[0] !~ /=/) { my $file = shift(@ARGV); if ($fh_out = IO::File->new($file, 'w')) { die "Cannot open file: $file: $OS_ERROR"; } } my %text = (); ## Read tag names and values while (defined(my $line = DATA->getline())) { if ($line =~ /^(\w+)=(["']?)(.*)(\2)$/) { $text{lc($1)} = $3; } } ## Override tags by command-line arguments if specified foreach my $arg (@ARGV) { if ($arg =~ /^(\w+)=(.*)$/) { $text{lc($1)} = $2; } } sub subst { my $str = shift; $str =~ s/$tag1/exists($text{lc($1)}) ? subst2($text{lc($1)}) : "XXX Unknown: $1 XXX"/ge; return $str; } sub subst2 { my $str = shift; while ($str =~ s/$tag2/exists($text{lc($1)}) ? $text{lc($1)} : "XXX Unknown: $1 XXX"/ge) {}; return $str; } while (defined(my $line = $fh_in->getline())) { $line = subst($line); $fh_out->print($line); } exit(0); __DATA__ smbldap-tools-0.9.9/build/autogen.sh0000775000175000017500000000045311716736232017341 0ustar fumiyasfumiyas#!/bin/sh set -u set -e rm -rf autom4te*.cache grep AC_CONFIG_HEADER configure.in >/dev/null && autoheader autoconf rm -rf autom4te*.cache sed -n \ -e "s/^/ /;s/$/ /;s/'/ ' /" \ -e "/^ ac_subst_vars=/,/'/s/^.* \([A-Za-z_][A-Za-z0-9_]*\) .*/\1=@\1@/p" \ configure \ >build/subst.vars.in smbldap-tools-0.9.9/build/Makefile.package.in0000664000175000017500000000052211725076524020775 0ustar fumiyasfumiyas## Makefile.package ## ====================================================================== PERL_COMMAND= @PERL_COMMAND@ PERL_LIBDIR= @PERL_LIBDIR@ PERL_DIGEST_SHA= @PERL_DIGEST_SHA@ POD2MAN_COMMAND= @POD2MAN_COMMAND@ SAMBA_BINDIR= @SAMBA_BINDIR@ SAMBA_SYSCONFDIR= @SAMBA_SYSCONFDIR@ SAMBA_SMB_CONF= $(SAMBA_SYSCONFDIR)/smb.conf smbldap-tools-0.9.9/build/Makefile.maintainer0000664000175000017500000000327212010203200021074 0ustar fumiyasfumiyas## Makefile.maintainer ## ====================================================================== PACKAGE_NAME_cmd= grep '^AC_INIT' configure.in |sed 's/.*(//;s/,.*//' PACKAGE_NAME= $(shell $(PACKAGE_NAME_cmd))$(PACKAGE_NAME_cmd:sh) PACKAGE_VERSION_cmd= grep '^AC_INIT' configure.in |sed 's/.*, *//;s/)$$//' PACKAGE_VERSION= $(shell $(PACKAGE_VERSION_cmd))$(PACKAGE_VERSION_cmd:sh) PACKAGE_DIST= $(PACKAGE_NAME)-$(PACKAGE_VERSION) ARCHIVE_DIR= .. ARCHIVE_NAME= $(PACKAGE_DIST).tar.gz ARCHIVE_COMPRESS= $(GZIP) TAR= tar GZIP= gzip -9 GPG_cmd= type gpg >/dev/null 2>&1 && echo gpg || echo : GPG= $(shell $(GPG_cmd))$(GPG_CMD:sh) RPMBUILD_cmd= type gpg >/dev/null 2>&1 && echo rpmbuild --sign || echo rpmbuild RPMBUILD= $(shell $(RPMBUILD_cmd))$(RPMBUILD_CMD:sh) ## ---------------------------------------------------------------------- default: @echo "Please read file 'INSTALL' and run ./configure && make." ## ---------------------------------------------------------------------- dist: dist-conf dist-archive dist-rpm dist-conf: [ -f Makefile ] && $(MAKE) distclean || : build/autogen.sh dist-archive: rm -rf .dist.tmp $(PACKAGE_DIST) mkdir .dist.tmp cp -rp * .dist.tmp find .dist.tmp -type d -name .svn -exec rm -rf {} \; -prune rm -rf .dist.tmp/vendor/rails .dist.tmp/tags mv .dist.tmp $(PACKAGE_DIST) $(TAR) cf - $(PACKAGE_DIST) |$(ARCHIVE_COMPRESS) >$(ARCHIVE_DIR)/$(ARCHIVE_NAME) rm -rf $(PACKAGE_DIST) $(GPG) --sign --detach-sign $(ARCHIVE_DIR)/$(ARCHIVE_NAME) ls -l $(ARCHIVE_DIR)/$(ARCHIVE_NAME) ls -l $(ARCHIVE_DIR)/$(ARCHIVE_NAME).sig 2>/dev/null || : dist-rpm: $(RPMBUILD) -ta $(RPMBUILD_OPTS) $(ARCHIVE_DIR)/$(ARCHIVE_NAME) configure: configure.in autoconf distclean: smbldap-tools-0.9.9/build/Makefile.common.in0000664000175000017500000000671511725076524020704 0ustar fumiyasfumiyas## Makefile.common ## ====================================================================== PACKAGE_NAME= @PACKAGE_NAME@ PACKAGE_VERSION= @PACKAGE_VERSION@ PACKAGE_TARNAME= @PACKAGE_TARNAME@ ## Path ## ---------------------------------------------------------------------- INSTALL_ROOT= $(DESTDIR) package_subdir= @package_subdir@ prefix= @prefix@ exec_prefix= @exec_prefix@ bindir= @bindir@ sbindir= @sbindir@ libdir= @libdir@ libexecdir= @libexecdir@$(package_subdir) sysconfdir= @sysconfdir@$(package_subdir) localstatedir= @localstatedir@ datadir= @datadir@ datarootdir= @datarootdir@$(package_subdir) mandir= @mandir@ infodir= @infodir@ docdir= @docdir@ vardir= $(localstatedir)/lib$(package_subdir) rundir= $(localstatedir)/run$(package_subdir) logdir= $(localstatedir)/log$(package_subdir) ## Commands, Flags and so on ## ---------------------------------------------------------------------- SUBST_SRC= $(SOURCE_BUILD)/subst.pl SUBST_VARS= $(SOURCE_BUILD)/subst.vars SUBST_COMMAND= $(SOURCE_BUILD)/subst SUBST= @PERL_COMMAND@ $(SUBST_COMMAND) $(SUBST_ARGS) CC= @CC@ CPPFLAGS= @CPPFLAGS@ CFLAGS= @CFLAGS@ CP= cp -p RM= rm -rf LN_S= ln -s INSTALL= $(SOURCE_BUILD)/install-sh -c CHMOD_FILES= chmod 0644 CHMOD_CMDS= chmod 0755 ## Package local ## ---------------------------------------------------------------------- include $(SOURCE_BUILD)/Makefile.package ## Suffix rules ## ====================================================================== .SUFFIXES: .pl .pm .cmd .example .tmpl .pl.cmd: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(SUBST) <$< >$@.tmp @$(CHMOD_CMDS) $@.tmp @mv $@.tmp $@ .pl.pm: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(SUBST) <$< >$@.tmp @$(CHMOD_FILES) $@.tmp @mv $@.tmp $@ .tmpl.example: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(SUBST) <$< >$@.tmp @$(CHMOD_FILES) $@.tmp @mv $@.tmp $@ ## Target rules ## ====================================================================== default:: build build:: $(BUILD_TARGETS) install:: $(INSTALL_TARGETS) install-dir: @echo "Creating directory $(INSTALL_ROOT)$(INSTALL_DIR) ..." @$(INSTALL) -d $(INSTALL_ROOT)$(INSTALL_DIR) install-files: install-dir @for f in $(INSTALL_FILES); do \ echo "Installing file $$f into $(INSTALL_ROOT)$(INSTALL_DIR) ..."; \ $(INSTALL) -m 0644 -t='s/\.substed$$//' $$f "$(INSTALL_ROOT)$(INSTALL_DIR)" \ || exit 1; \ done install-cmd-dir: @echo "Creating directory $(INSTALL_ROOT)$(INSTALL_CMD_DIR) ..." @$(INSTALL) -d $(INSTALL_ROOT)$(INSTALL_CMD_DIR) install-cmds: install-cmd-dir @for f in $(INSTALL_CMDS); do \ echo "Installing file $$f into $(INSTALL_ROOT)$(INSTALL_CMD_DIR) ..."; \ $(INSTALL) -m 0755 -t='s/\.cmd$$//' $$f "$(INSTALL_ROOT)$(INSTALL_CMD_DIR)" \ || exit 1; \ done clean:: $(RM) $(BUILD_TARGETS) $(BUILD_TARGETS_POST) $(CLEAN_TARGETS) *.tmp distclean:: clean build install clean distclean:: @if [ -n "$(MAKE_DIRS)" ]; then \ set - $(MAKE_DIRS); \ for subdir in "$$@"; do \ (cd $$subdir && $(MAKE) $@) || exit 1; \ done \ fi build:: $(BUILD_TARGETS_POST) $(BUILD_TARGETS):: $(SUBST_COMMAND) $(SUBST_COMMAND): $(SUBST_SRC) $(SUBST_VARS) $(SOURCE_BUILD)/Makefile.common $(SOURCE_BUILD)/Makefile.package cp $< $@.tmp cat $(SUBST_VARS) >>$@.tmp sed -n 's/^\([A-Za-z_][A-Za-z_0-9]*\)[ ]*=[ ]*\(.*\)/\1=\2/p' \ $(SOURCE_BUILD)/Makefile.common \ $(SOURCE_BUILD)/Makefile.package \ >>$@.tmp chmod 0755 $@.tmp mv $@.tmp $@ smbldap-tools-0.9.9/build/Makefile0000664000175000017500000000671011601102075016763 0ustar fumiyasfumiyas## Common Makefile ## ====================================================================== PACKAGE_NAME= smbldap-tools PACKAGE_VERSION= 0.9.6.svn PACKAGE_TARNAME= smbldap-tools ## Path ## ---------------------------------------------------------------------- INSTALL_ROOT= $(DESTDIR) package_subdir= /smbldap-tools prefix= /usr/local exec_prefix= ${prefix} bindir= ${exec_prefix}/bin sbindir= ${exec_prefix}/sbin libdir= ${exec_prefix}/lib libexecdir= ${exec_prefix}/libexec${package_subdir} sysconfdir= ${prefix}/etc${package_subdir} localstatedir= ${prefix}/var datarootdir= ${prefix}/share datadir= ${datarootdir}${package_subdir} mandir= ${datarootdir}/man infodir= ${datarootdir}/info docdir= ${datarootdir}/doc/${PACKAGE_TARNAME} vardir= ${localstatedir}/lib${package_subdir} rundir= ${localstatedir}/run${package_subdir} logdir= ${localstatedir}/log${package_subdir} PERL_LIBDIR= /usr/share/perl5 ## Commands, Flags and so on ## ---------------------------------------------------------------------- SUBST= $(BUILD_COMMON)/subst CP= cp -p RM= rm -rf LN_S= ln -s INSTALL= $(BUILD_COMMON)/install-sh -c CHMOD_FILES= chmod 0644 CHMOD_CMDS= chmod 0755 ## ---------------------------------------------------------------------- BUILD_TARGETS_TOP= $(BUILD_COMMON)/subst ## Package local ## ---------------------------------------------------------------------- include $(BUILD_COMMON)/Makefile.package ## Suffix rules ## ====================================================================== .SUFFIXES: .pl .pm .cmd .example .tmpl .pl.cmd: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(BUILD_COMMON)/subst <$< >$@.tmp @$(CHMOD_CMDS) $@.tmp @mv $@.tmp $@ .pl.pm: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(BUILD_COMMON)/subst <$< >$@.tmp @$(CHMOD_FILES) $@.tmp @mv $@.tmp $@ .tmpl.example: @echo "Building $@ from $< ..." @$(RM) $@ $@.tmp @$(BUILD_COMMON)/subst <$< >$@.tmp @$(CHMOD_FILES) $@.tmp @mv $@.tmp $@ ## Target rules ## ====================================================================== default:: build build:: $(BUILD_TARGETS) $(BUILD_TARGETS):: $(BUILD_COMMON)/subst install:: $(INSTALL_TARGETS) install-dir: @echo "Creating directory $(INSTALL_ROOT)$(INSTALL_DIR) ..." @$(INSTALL) -d $(INSTALL_ROOT)$(INSTALL_DIR) install-files: install-dir @for f in $(INSTALL_FILES); do \ echo "Installing file $$f into $(INSTALL_ROOT)$(INSTALL_DIR) ..."; \ $(INSTALL) -m 0644 -t='s/\.substed$$//' $$f "$(INSTALL_ROOT)$(INSTALL_DIR)" \ || exit 1; \ done install-cmd-dir: @echo "Creating directory $(INSTALL_ROOT)$(INSTALL_CMD_DIR) ..." @$(INSTALL) -d $(INSTALL_ROOT)$(INSTALL_CMD_DIR) install-cmds: install-cmd-dir @for f in $(INSTALL_CMDS); do \ echo "Installing file $$f into $(INSTALL_ROOT)$(INSTALL_CMD_DIR) ..."; \ $(INSTALL) -m 0755 -t='s/\.cmd$$//' $$f "$(INSTALL_ROOT)$(INSTALL_CMD_DIR)" \ || exit 1; \ done clean:: $(RM) $(BUILD_TARGETS) $(BUILD_TARGETS_POST) *.tmp distclean:: clean build install clean distclean:: @if [ -n "$(DIRS)" ]; then \ set - $(DIRS); \ for subdir in "$$@"; do \ (cd $$subdir && $(MAKE) $@) || exit 1; \ done \ fi build:: $(BUILD_TARGETS_POST) $(BUILD_COMMON)/subst: $(BUILD_COMMON)/subst.pl $(BUILD_COMMON)/Makefile $(BUILD_COMMON)/Makefile.package cp $< $@.tmp $(PERL_CMD) -ne 'print if s/^(\w+)\s*=\s*(.*?)\s$$/$$1=$$2\n/' $(BUILD_COMMON)/Makefile $(BUILD_COMMON)/Makefile.package >>$@.tmp chmod 0755 $@.tmp mv $@.tmp $@ smbldap-tools-0.9.9/build/subst.vars.in0000664000175000017500000000215212010203552017756 0ustar fumiyasfumiyasLTLIBOBJS=@LTLIBOBJS@ LIBOBJS=@LIBOBJS@ SAMBA_BINDIR=@SAMBA_BINDIR@ SAMBA_SYSCONFDIR=@SAMBA_SYSCONFDIR@ POD2MAN_COMMAND=@POD2MAN_COMMAND@ PERL_LIBDIR=@PERL_LIBDIR@ PERL_DIGEST_SHA=@PERL_DIGEST_SHA@ PERL_COMMAND=@PERL_COMMAND@ package_subdir=@package_subdir@ target_alias=@target_alias@ host_alias=@host_alias@ build_alias=@build_alias@ LIBS=@LIBS@ ECHO_T=@ECHO_T@ ECHO_N=@ECHO_N@ ECHO_C=@ECHO_C@ DEFS=@DEFS@ mandir=@mandir@ localedir=@localedir@ libdir=@libdir@ psdir=@psdir@ pdfdir=@pdfdir@ dvidir=@dvidir@ htmldir=@htmldir@ infodir=@infodir@ docdir=@docdir@ oldincludedir=@oldincludedir@ includedir=@includedir@ localstatedir=@localstatedir@ sharedstatedir=@sharedstatedir@ sysconfdir=@sysconfdir@ datadir=@datadir@ datarootdir=@datarootdir@ libexecdir=@libexecdir@ sbindir=@sbindir@ bindir=@bindir@ program_transform_name=@program_transform_name@ prefix=@prefix@ exec_prefix=@exec_prefix@ PACKAGE_URL=@PACKAGE_URL@ PACKAGE_BUGREPORT=@PACKAGE_BUGREPORT@ PACKAGE_STRING=@PACKAGE_STRING@ PACKAGE_VERSION=@PACKAGE_VERSION@ PACKAGE_TARNAME=@PACKAGE_TARNAME@ PACKAGE_NAME=@PACKAGE_NAME@ PATH_SEPARATOR=@PATH_SEPARATOR@ SHELL=@SHELL@ smbldap-tools-0.9.9/build/Makefile.top.in0000664000175000017500000000105211716736232020202 0ustar fumiyasfumiyas## Makefile.top ## ====================================================================== CONFIG_HEADERS= @CONFIG_HEADERS@ clean:: $(RM) $(SUBST_COMMAND) distclean:: clean $(RM) $(CONFIG_HEADERS) $(RM) Makefile config.log config.status config.cache autom4te.cache $(RM) $(SUBST_COMMAND) $(SUBST_SRC) $(SUBST_VARS) $(RM) $(SOURCE_BUILD)/Makefile.common $(SOURCE_BUILD)/Makefile.package $(SOURCE_BUILD)/Makefile.top echo "include $(SOURCE_BUILD)/Makefile.maintainer" >Makefile dist dist-conf: $(MAKE) -f $(SOURCE_BUILD)/Makefile.maintainer $@ smbldap-tools-0.9.9/build/install-sh0000775000175000017500000001273711057445361017352 0ustar fumiyasfumiyas#!/bin/sh # # install - install a program, script, or datafile # This comes from X11R5 (mit/util/scripts/install.sh). # # Copyright 1991 by the Massachusetts Institute of Technology # # Permission to use, copy, modify, distribute, and sell this software and its # documentation for any purpose is hereby granted without fee, provided that # the above copyright notice appear in all copies and that both that # copyright notice and this permission notice appear in supporting # documentation, and that the name of M.I.T. not be used in advertising or # publicity pertaining to distribution of the software without specific, # written prior permission. M.I.T. makes no representations about the # suitability of this software for any purpose. It is provided "as is" # without express or implied warranty. # # Calling this script install-sh is preferred over install.sh, to prevent # `make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written # from scratch. It can only install one file at a time, a restriction # shared with many OS's install programs. # set DOITPROG to echo to test this script # Don't use :- since 4.3BSD and earlier shells don't like it. doit="${DOITPROG-}" # put in absolute paths if you don't have them in your path; or use env. vars. mvprog="${MVPROG-mv}" cpprog="${CPPROG-cp}" chmodprog="${CHMODPROG-chmod}" chownprog="${CHOWNPROG-chown}" chgrpprog="${CHGRPPROG-chgrp}" stripprog="${STRIPPROG-strip}" rmprog="${RMPROG-rm}" mkdirprog="${MKDIRPROG-mkdir}" transformbasename="" transform_arg="" instcmd="$mvprog" chmodcmd="$chmodprog 0755" chowncmd="" chgrpcmd="" stripcmd="" rmcmd="$rmprog -f" mvcmd="$mvprog" src="" dst="" dir_arg="" while [ x"$1" != x ]; do case $1 in -c) instcmd="$cpprog" shift continue;; -d) dir_arg=true shift continue;; -m) chmodcmd="$chmodprog $2" shift shift continue;; -o) chowncmd="$chownprog $2" shift shift continue;; -g) chgrpcmd="$chgrpprog $2" shift shift continue;; -s) stripcmd="$stripprog" shift continue;; -t=*) transformarg=`echo $1 | sed 's/-t=//'` shift continue;; -b=*) transformbasename=`echo $1 | sed 's/-b=//'` shift continue;; *) if [ x"$src" = x ] then src=$1 else # this colon is to work around a 386BSD /bin/sh bug : dst=$1 fi shift continue;; esac done if [ x"$src" = x ] then echo "install: no input file specified" exit 1 else true fi if [ x"$dir_arg" != x ]; then dst=$src src="" if [ -d $dst ]; then instcmd=: chmodcmd="" else instcmd=mkdir fi else # Waiting for this to be detected by the "$instcmd $src $dsttmp" command # might cause directories to be created, which would be especially bad # if $src (and thus $dsttmp) contains '*'. if [ -f $src -o -d $src ] then true else echo "install: $src does not exist" exit 1 fi if [ x"$dst" = x ] then echo "install: no destination specified" exit 1 else true fi # If destination is a directory, append the input filename; if your system # does not like double slashes in filenames, you may need to add some logic if [ -d $dst ] then dst="$dst"/`basename $src` else true fi fi ## this sed command emulates the dirname command dstdir=`echo $dst | sed -e 's,[^/]*$,,;s,/$,,;s,^$,.,'` # Make sure that the destination directory exists. # this part is taken from Noah Friedman's mkinstalldirs script # Skip lots of stat calls in the usual case. if [ ! -d "$dstdir" ]; then defaultIFS=' ' IFS="${IFS-${defaultIFS}}" oIFS="${IFS}" # Some sh's can't handle IFS=/ for some reason. IFS='%' set - `echo ${dstdir} | sed -e 's@/@%@g' -e 's@^%@/@'` IFS="${oIFS}" pathcomp='' while [ $# -ne 0 ] ; do pathcomp="${pathcomp}${1}" shift if [ ! -d "${pathcomp}" ] ; then $mkdirprog "${pathcomp}" else true fi pathcomp="${pathcomp}/" done fi if [ x"$dir_arg" != x ] then $doit $instcmd $dst && if [ x"$chowncmd" != x ]; then $doit $chowncmd $dst; else true ; fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dst; else true ; fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dst; else true ; fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dst; else true ; fi else # If we're going to rename the final executable, determine the name now. if [ x"$transformarg" = x ] then dstfile=`basename $dst` else dstfile=`basename $dst $transformbasename | sed $transformarg`$transformbasename fi # don't allow the sed command to completely eliminate the filename if [ x"$dstfile" = x ] then dstfile=`basename $dst` else true fi # Make a temp file name in the proper directory. dsttmp=$dstdir/#inst.$$# # Move or copy the file name to the temp name $doit $instcmd $src $dsttmp && trap "rm -f ${dsttmp}" 0 && # and set any options; do chmod last to preserve setuid bits # If any of these fail, we abort the whole thing. If we want to # ignore errors from any of these, just make sure not to ignore # errors from the above "$doit $instcmd $src $dsttmp" command. if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; else true;fi && if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; else true;fi && if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; else true;fi && if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; else true;fi && # Now rename the file to the real destination. $doit $rmcmd -f $dstdir/$dstfile && $doit $mvcmd $dsttmp $dstdir/$dstfile fi && exit 0 smbldap-tools-0.9.9/smbldap-groupadd.pl0000664000175000017500000001204611725100200020000 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-groupadd.pl 121 2011-10-07 05:40:06Z fumiyas $ # This code was developped by Jerome Tournier (jtournier@gmail.com) and # contributors (their names can be found in the CONTRIBUTORS file). # This was first contributed by IDEALX (http://www.opentrust.com/) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Purpose of smbldap-groupadd : group (posix) add use strict; use warnings; use smbldap_tools; use Getopt::Std; my %Options; my $ok = getopts('abg:opr:s:t:?', \%Options); if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) { print_banner; print "Usage: $0 [-abgoprst?] groupname\n"; print " -a add automatic group mapping entry\n"; print " -b create a AIX group\n"; print " -g gid\n"; print " -o gid is not unique\n"; print " -p print the gidNumber to stdout\n"; print " -r group-rid\n"; print " -s group-sid\n"; print " -t group-type\n"; print " -? show this help message\n"; exit (1); } my $_groupName = $ARGV[0]; nsc_invalidate("group"); my $ldap_master=connect_ldap_master(); if (defined(get_group_dn($_groupName))) { warn "$0: group $_groupName exists\n"; exit (6); } my $_groupGidNumber = $Options{'g'}; if (! defined ($_groupGidNumber = group_add($_groupName, $_groupGidNumber, $Options{'o'}))) { warn "$0: error adding group $_groupName\n"; exit (6); } my $group_sid; my $tmp; if ($tmp= $Options{'s'}) { if ($tmp =~ /^S-(?:\d+-)+\d+$/) { $group_sid = $tmp; } else { warn "$0: illegal group-rid $tmp\n"; exit(7); } } elsif ($Options{'r'} || $Options{'a'}) { my $group_rid; if ($tmp= $Options{'r'}) { if ($tmp =~ /^\d+$/) { $group_rid = $tmp; } else { warn "$0: illegal group-rid $tmp\n"; exit(7); } } else { # algorithmic mapping $group_rid = group_next_rid($_groupGidNumber); } $group_sid = $config{SID}.'-'.$group_rid; } if ($Options{'r'} || $Options{'a'} || $Options{'s'}) { # let's test if this SID already exist if (my $account = account_by_sid($group_sid)) { warn "SID already owned by " . $account->dn. "\n"; exit(7); } } if ($group_sid) { my $group_type; my $tmp; if ($tmp= $Options{'t'}) { unless (defined($group_type = &group_type_by_name($tmp))) { warn "$0: unknown group type $tmp\n"; exit(8); } } else { $group_type = group_type_by_name('domain'); } my $modify = $ldap_master->modify ( "cn=$_groupName,$config{groupsdn}", add => { 'objectClass' => 'sambaGroupMapping', 'sambaSID' => $group_sid, 'sambaGroupType' => $group_type, 'displayName' => "$_groupName" } ); $modify->code && warn "failed to delete entry: ", $modify->error ; } if ($Options{'b'}) { my $modify = $ldap_master->modify ( "cn=$_groupName,$config{groupsdn}", add => { 'objectClass' => 'AIXAuxGroup', 'AIXGroupAdminList' => 'root', 'isAdministrator' => 'false' } ); $modify->code && warn "failed to delete entry: ", $modify->error ; } # take down session $ldap_master->unbind; nsc_invalidate("group"); if ($Options{'p'}) { print STDOUT "$_groupGidNumber"; } exit(0); ######################################## =head1 NAME smbldap-groupadd - Create a new group =head1 SYNOPSIS smbldap-groupadd [-g gid ] [-a] [-o] [-r rid] [-s sid] [-t group type] [-p] group =head1 DESCRIPTION The smbldap-groupadd command creates a new group account using the values specified on the command line and the default values from the configuration file. The new group will be entered into the system files as needed. Available options are : -g gid The numerical value of the group's ID. This value must be unique, unless the -o option is used. The value must be non- negative. The default is to use the smallest ID value greater than 1000 and greater than every other group. -a add an automatic Security ID for the group (SID). -b the group is also a AIX group -o gid is not unique -p print the gidNumber to stdout -s sid set the group SID. The SID must be unique and defined with the domain Security ID ($SID) like sid=$SID-rid where rid is the group rid. -r rid set the group rid. The SID is then calculated as sid=$SID-rid where $SID is the domain Security ID. -t group type set the NT Group type for the new group. Available values are 2 (domain group), 4 (local group) and 5 (builtin group). The default group type is 2. =head1 SEE ALSO groupadd(1) =cut #' smbldap-tools-0.9.9/smbldap-groupshow.pl0000664000175000017500000000345711725100200020236 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-groupshow.pl 121 2011-10-07 05:40:06Z fumiyas $ # This code was developped by Jerome Tournier (jtournier@gmail.com) and # contributors (their names can be found in the CONTRIBUTORS file). # This was first contributed by IDEALX (http://www.opentrust.com/) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Purpose of smbldap-groupshow : user (posix,shadow,samba) display # use strict; use warnings; use smbldap_tools; use Getopt::Std; my %Options; my $ok = getopts('?', \%Options); if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) { print_banner; print "Usage: $0 [-?] group\n"; print " -? show this help message\n"; exit (1); } # Read only first @ARGV my $group = $ARGV[0]; my $ldap_slave=connect_ldap_slave(); my $lines = read_group($group); if (!defined($lines)) { print "group $group doesn't exist\n"; exit (1); } print "$lines\n"; # take down session $ldap_slave->unbind; exit(0); ############################################################ =head1 NAME smbldap-groupshow - Display group informations =head1 SYNOPSIS smbldap-groupshow groupname =head1 DESCRIPTION The smbldap-groupshow command displays informations associated with the given group. =cut #' smbldap-tools-0.9.9/smbldap_tools.pl0000664000175000017500000011663712010174006017433 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap_tools.pl 140 2012-08-07 11:11:49Z fumiyas $ # This code was developped by Jerome Tournier (jtournier@gmail.com) and # contributors (their names can be found in the CONTRIBUTORS file). # This was first contributed by IDEALX (http://www.opentrust.com/) # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; package smbldap_tools; use Encode; use POSIX qw(:termios_h); use IO::File; use Net::LDAP; use Net::LDAP::Extension::SetPassword; use Crypt::SmbHash; use Digest::MD5 qw(md5); use @PERL_DIGEST_SHA@ qw(sha1); use MIME::Base64 qw(encode_base64); use constant true => 1; use constant false => 0; my %conf_renamed_by = ( password_hash => 'hash_encrypt', password_crypt_salt_format => 'crypt_salt_format', ); my $smbldap_conf = $ENV{'SMBLDAP_CONF'} || '@sysconfdir@/smbldap.conf'; my $smbldap_bind_conf = $ENV{'SMBLDAP_BIND_CONF'} || '@sysconfdir@/smbldap_bind.conf'; my $samba_conf = $ENV{'SMBLDAP_SMB_CONF'} || $ENV{'SMB_CONF_PATH'} || '@SAMBA_SYSCONFDIR@/smb.conf'; my $samba_bindir = $ENV{'SMBLDAP_SAMBA_BINDIR'} || '@SAMBA_BINDIR@'; use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS); use Exporter; $VERSION = 1.00; @ISA = qw(Exporter); use vars qw(%config $ldap); @EXPORT = qw( get_user_dn get_group_dn is_group_member is_samba_user is_unix_user is_nonldap_unix_user is_user_valid does_sid_exist get_dn_from_line add_posix_machine add_samba_machine add_samba_machine_smbpasswd group_add_user add_grouplist_user disable_user delete_user group_add group_del get_homedir read_user read_user_human_readable read_user_entry read_group read_group_entry read_group_entry_gid find_groups_of parse_group group_remove_member group_get_members get_user_dn2 connect_ldap_master connect_ldap_slave group_name_by_type group_type_by_name subst_configvar read_conf read_parameter subst_user split_arg_comma list_union list_minus account_by_sid user_by_uid user_next_uid user_next_rid group_next_uid group_next_rid print_banner getDomainName getLocalSID utf8Encode utf8Decode password_read password_set shadow_update nsc_invalidate %config ); sub print_banner { print STDERR "(c) Jerome Tournier - (jtournier\@gmail.com)- Licensed under the GPL\n" unless $config{no_banner}; } sub read_parameter { my $line = shift; ## check for a param = value if ( $line =~ /=/ ) { my ( $param, $val ); if ( $line =~ /\s*(.*?)\s*=\s*"(.*)"/ ) { ( $param, $val ) = ($1, $2); } elsif ( $line =~ /\s*(.*?)\s*=\s*'(.*)'/ ) { ( $param, $val ) = ($1, $2); } else { ( $param, $val ) = $line =~ /\s*(.*?)\s*=\s*(.*)/; } return ( $param, $val ); } } sub subst_configvar { my $value = shift; my $vars = shift; $value =~ s/\$\{([^}]+)\}/$vars->{$1} ? $vars->{$1} : $1/eg; return $value; } sub read_conf { my %conf; open( CONFIGFILE, "$smbldap_conf" ) || die "Unable to open $smbldap_conf for reading !\n"; while () { chomp($_); ## throw away comments next if ( /^\s*#/ || /^\s*$/ || /^\s*\;/ ); ## check for a param = value my ( $parameter, $value ) = read_parameter($_); $value = &subst_configvar( $value, \%conf ); $conf{$parameter} = $value; } close(CONFIGFILE); if ( $< == 0 ) { open( CONFIGFILE, "$smbldap_bind_conf" ) || die "Unable to open $smbldap_bind_conf for reading !\n"; while () { chomp($_); ## throw away comments next if ( /^\s*#/ || /^\s*$/ || /^\s*\;/ ); ## check for a param = value my ( $parameter, $value ) = read_parameter($_); $value = &subst_configvar( $value, \%conf ); $conf{$parameter} = $value; } close(CONFIGFILE); } else { $conf{slaveDN} = $conf{slavePw} = $conf{masterDN} = $conf{masterPw} = ""; } while (my ($new, $old) = each(%conf_renamed_by)) { if (exists($conf{$old})) { $conf{$new} = delete($conf{$old}); } } # automatically find SID if ( not $conf{SID} ) { $conf{SID} = getLocalSID() || die "Unable to determine domain SID: please edit your smbldap.conf, or start your samba server for a few minutes to allow for SID generation to proceed\n"; } return (%conf); } sub read_smbconf { my %conf; my $smbconf = "$samba_conf"; open( CONFIGFILE, "$smbconf" ) || die "Unable to open $smbconf for reading !\n"; my $global = 0; my $prevline = ""; while () { chomp; if (/^(.*)\\$/) { $prevline .= $1; next; } $_ = $prevline . $_; $prevline = ""; if (/^\[global\]/) { $global = 1; } if ( $global == 1 ) { if ( /^\[/ and !/\[global\]/ ) { $global = 0; } else { ## throw away comments #next if ( ! /workgroup/i ); next if ( /^\s*#/ || /^\s*$/ || /^\s*\;/ || /\[/ ); ## check for a param = value my ( $parameter, $value ) = read_parameter($_); $value = &subst_configvar( $value, \%conf ); $conf{$parameter} = $value; } } } close(CONFIGFILE); return (%conf); } my %smbconf = read_smbconf(); sub getLocalSID { open my $fh, "-|" or exec("$samba_bindir/net", "getlocalsid") || exit(1); my $line = <$fh>; if (!defined($line)) { die "Failed to get SID from Samba net command"; } my ($sid) = ($line =~ m/^SID for domain \S+ is: (\S+)$/); if (!defined($sid)) { die "Samba net command returns invalid output: $line"; } return $sid; } # let's read the configurations file... %config = ( masterLDAP => 'ldap://127.0.0.1/', slaveLDAP => 'ldap://127.0.0.1/', ldapTLS => false, ldapSSL => false, password_hash => 'SSHA', password_crypt_salt_format=>'%s', shadowAccount => true, nscd => "/usr/sbin/nscd", userHomeDirectoryMode => "0700", read_conf(), ); ## Backward compatibility with 0.8.4 and older if (!exists($config{userHome}) && exists($config{userHomePrefix})) { $config{userHome} = "$config{userHomePrefix}/%U"; } sub get_parameter { # this function return the value for a parameter. The name of the parameter can be either this # defined in smb.conf or smbldap.conf my $parameter_smb = shift; my $parameter_smbldap = shift; if ( defined $config{$parameter_smbldap} and $config{$parameter_smbldap} ne "" ) { return $config{$parameter_smbldap}; } elsif ( defined $smbconf{$parameter_smb} and $smbconf{$parameter_smb} ne "" ) { return $smbconf{$parameter_smb}; } else { #print "could not find parameter's value (parameter given: $parameter_smbldap or $parameter_smb) !!\n"; undef $smbconf{$parameter_smb}; } } $config{sambaDomain} = get_parameter( "workgroup", "sambaDomain" ); $config{suffix} = get_parameter( "ldap suffix", "suffix" ); $config{usersdn} = get_parameter( "ldap user suffix", "usersdn" ); if ( $config{usersdn} !~ m/,/ ) { $config{usersdn} = $config{usersdn} . "," . $config{suffix}; } $config{groupsdn} = get_parameter( "ldap group suffix", "groupsdn" ); if ( $config{groupsdn} !~ m/,/ ) { $config{groupsdn} = $config{groupsdn} . "," . $config{suffix}; } $config{computersdn} = get_parameter( "ldap machine suffix", "computersdn" ); if ( $config{computersdn} !~ m/,/ ) { $config{computersdn} = $config{computersdn} . "," . $config{suffix}; } $config{idmapdn} = get_parameter( "ldap idmap suffix", "idmapdn" ); if ( defined $config{idmapdn} ) { if ( $config{idmapdn} !~ m/,/ ) { $config{idmapdn} = $config{idmapdn} . "," . $config{suffix}; } } $config{sambaDomaindn} = "sambaDomainName=$config{sambaDomain},$config{suffix}"; $config{sambaUnixIdPooldn} ||= $config{sambaDomaindn}; if ( $config{ldapSSL} == 1 and $config{ldapTLS} == 1 ) { die "Both options ldapSSL and ldapTLS could not be activated\n"; } sub connect_ldap { my ($server, $port, $tls) = @_; my @params = ( version => 3, timeout => 60, ); my $uri; if ($server =~ m#^\w+://#) { $uri = $server; } else { if ($config{ldapSSL}) { $uri = "ldaps://$server"; push(@params, verify => $config{verify}, cafile => $config{cafile}, ); } else { $uri = "ldap://$server"; } $uri .= ":$port" if ($port); } my $ldap = Net::LDAP->new($uri, @params); unless ($ldap) { die "Cannot connect to LDAP server: $uri: $@\n"; } if ($tls) { my $mesg = $ldap->start_tls( verify => $config{verify}, clientcert => $config{clientcert}, clientkey => $config{clientkey}, cafile => $config{cafile}, ); if ($mesg->code) { $ldap->disconnect; die( "Cannot start TLS on LDAP connection: $uri: " . $mesg->error . "\n"); } } return $ldap; } sub connect_ldap_master { my $bind_dn = defined($_[0]) ? shift : $config{masterDN}; my $bind_pw = defined($_[0]) ? shift : $config{masterPw}; my $ldap_master = connect_ldap( $config{masterLDAP}, $config{masterPort}, $config{ldapTLS}, ); $ldap_master->bind($bind_dn, password => $bind_pw); $ldap = $ldap_master; return $ldap_master; } sub connect_ldap_slave { my $bind_dn = defined($_[0]) ? shift : $config{slaveDN}; my $bind_pw = defined($_[0]) ? shift : $config{slavePw}; my $ldap_slave; eval { $ldap_slave = connect_ldap( $config{slaveLDAP}, $config{slavePort}, $config{ldapTLS}, ); $ldap_slave->bind($bind_dn, password => $bind_pw); }; if ($@) { if ($config{masterLDAP} eq $config{slaveLDAP}) { die "$@"; } warn "$@"; warn "Trying to contact the LDAP master server...\n"; $ldap_slave = connect_ldap_master($bind_dn, $bind_pw); } $ldap = $ldap_slave; return $ldap_slave; } sub get_user_dn { my $user = shift; my $dn = ''; my $mesg = $ldap->search( base => $config{suffix}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { $dn = $entry->dn; } chomp($dn); if ( $dn eq '' ) { return undef; } $dn = "dn: " . $dn; return $dn; } sub get_user_dn2 { my $user = shift; my $dn = ''; my $mesg = $ldap->search( base => $config{suffix}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && warn "failed to perform search; ", $mesg->error; foreach my $entry ( $mesg->all_entries ) { $dn = $entry->dn; } chomp($dn); if ( $dn eq '' ) { return ( 1, undef ); } $dn = "dn: " . $dn; return ( 1, $dn ); } sub get_group_dn { my $group = shift; my $dn = ''; my $filter; if ( $group =~ /^\d+$/ ) { $filter = "(&(objectclass=posixGroup)(|(cn=$group)(gidNumber=$group)))"; } else { $filter = "(&(objectclass=posixGroup)(cn=$group))"; } my $mesg = $ldap->search( base => $config{groupsdn}, scope => $config{scope}, filter => $filter ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { $dn = $entry->dn; } chomp($dn); if ( $dn eq '' ) { return undef; } $dn = "dn: " . $dn; return $dn; } # return (success, dn) # bool = is_samba_user($username) sub is_samba_user { my $user = shift; my $mesg = $ldap->search( base => $config{suffix}, scope => $config{scope}, filter => "(&(objectClass=sambaSamAccount)(uid=$user))" ); $mesg->code && die $mesg->error; return ( $mesg->count ne 0 ); } sub is_unix_user { my $user = shift; my $mesg = $ldap->search( base => $config{suffix}, scope => $config{scope}, filter => "(&(objectClass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; return ( $mesg->count ne 0 ); } sub is_nonldap_unix_user { my $user = shift; my $uid = getpwnam($user); if ($uid) { return 1; } else { return 0; } } sub is_group_member { my $dn_group = shift; my $user = shift; my $mesg = $ldap->search( base => $dn_group, scope => 'base', filter => "(&(memberUid=$user))" ); $mesg->code && die $mesg->error; return ( $mesg->count ne 0 ); } # all entries = does_sid_exist($sid,$config{scope}) sub does_sid_exist { my $sid = shift; my $dn_group = shift; my $mesg = $ldap->search( base => $dn_group, scope => $config{scope}, filter => "(sambaSID=$sid)" ); $mesg->code && die $mesg->error; return ($mesg); } # try to bind with user dn and password to validate current password sub is_user_valid { my ($user, $dn, $pass) = @_; my $ldap = connect_ldap( $config{slaveLDAP}, $config{slavePort}, $config{ldapTLS}, ); my $mesg = $ldap->bind(dn => $dn, password => $pass); $ldap->disconnect; if ($mesg->code) { return 0; } return 1; } # dn = get_dn_from_line ($dn_line) # helper to get "a=b,c=d" from "dn: a=b,c=d" sub get_dn_from_line { my $dn = shift; $dn =~ s/^dn: //; return $dn; } # success = add_posix_machine($user, $uid, $gid) sub add_posix_machine { my ( $user, $uid, $gid, $wait ) = @_; if ( !defined $wait ) { $wait = 0; } # bind to a directory with dn and password my $add = $ldap->add( "uid=$user,$config{computersdn}", attr => [ #'objectclass' => ['top', 'person', 'organizationalPerson', 'inetOrgPerson', 'posixAccount'], 'objectclass' => [ 'top', 'account', 'posixAccount' ], 'cn' => "$user", #'sn' => "$user", 'uid' => "$user", 'uidNumber' => "$uid", 'gidNumber' => "$gid", 'homeDirectory' => '/nonexistent', 'loginShell' => '/bin/false', 'description' => 'Computer', 'gecos' => 'Computer', ] ); $add->code && warn "failed to add entry: ", $add->error; sleep($wait); return 1; } # success = add_samba_machine_smbpasswd($computername) sub add_samba_machine_smbpasswd { my $user = shift; system($config{smbpasswd}, "-a", "-m", $user); return 1; } sub add_samba_machine { my ( $user, $uid ) = @_; my $sambaSID = 2 * $uid + 1000; my $name = $user; $name =~ s/.$//s; my ( $lmpassword, $ntpassword ) = ntlmgen $name; my $modify = $ldap->modify( "uid=$user,$config{computersdn}", changes => [ #replace => [objectClass => ['inetOrgPerson', 'posixAccount', 'sambaSAMAccount']], replace => [ objectClass => [ 'posixAccount', 'sambaSAMAccount' ] ], add => [ sambaPwdLastSet => '0' ], add => [ sambaLogonTime => '0' ], add => [ sambaLogoffTime => '2147483647' ], add => [ sambaKickoffTime => '2147483647' ], add => [ sambaPwdCanChange => '0' ], add => [ sambaPwdMustChange => '0' ], add => [ sambaAcctFlags => '[W ]' ], add => [ sambaLMPassword => "$lmpassword" ], add => [ sambaNTPassword => "$ntpassword" ], add => [ sambaSID => "$config{SID}-$sambaSID" ], add => [ sambaPrimaryGroupSID => "$config{SID}-0" ] ] ); $modify->code && die "failed to add entry: ", $modify->error; return 1; } sub group_add_user { my ( $group, $userid ) = @_; my $members = ''; my $dn_line = get_group_dn($group); if ( !defined( get_group_dn($group) ) ) { print "$0: group \"$group\" doesn't exist\n"; exit(6); } if ( !defined($dn_line) ) { return 1; } my $dn = get_dn_from_line("$dn_line"); # on look if the user is already present in the group my $is_member = is_group_member( $dn, $userid ); if ( $is_member == 1 ) { print "User \"$userid\" already member of the group \"$group\".\n"; } else { # bind to a directory with dn and password # It does not matter if the user already exist, Net::LDAP will add the user # if he does not exist, and ignore him if his already in the directory. my $modify = $ldap->modify( "$dn", changes => [ add => [ memberUid => $userid ] ] ); $modify->code && die "failed to modify entry: ", $modify->error; } } sub group_del { my $group_dn = shift; # bind to a directory with dn and password my $modify = $ldap->delete($group_dn); $modify->code && die "failed to delete group : ", $modify->error; } sub add_grouplist_user { my ( $grouplist, $user ) = @_; my @array = split( /,/, $grouplist ); foreach my $group (@array) { group_add_user( $group, $user ); } } sub disable_user { my $user = shift; my $dn_line; my $dn = get_dn_from_line($dn_line); if ( !defined( $dn_line = get_user_dn($user) ) ) { print "$0: user $user doesn't exist\n"; exit(10); } my $modify = $ldap->modify( "$dn", changes => [ replace => [ userPassword => '{crypt}!x' ] ] ); $modify->code && die "failed to modify entry: ", $modify->error; if ( is_samba_user($user) ) { my $modify = $ldap->modify( "$dn", changes => [ replace => [ sambaAcctFlags => '[D ]' ] ] ); $modify->code && die "failed to modify entry: ", $modify->error; } } # delete_user($user) sub delete_user { my $user = shift; my $dn_line; if ( !defined( $dn_line = get_user_dn($user) ) ) { print "$0: user $user doesn't exist\n"; exit(10); } my $dn = get_dn_from_line($dn_line); my $modify = $ldap->delete($dn); $modify->code && die "failed to delete entry: ", $modify->error; } # $gid = group_add($groupname, $group_gid, $force_using_existing_gid) sub group_add { my ( $gname, $gid, $force ) = @_; nsc_invalidate("group"); if ( !defined($gid) ) { $gid = group_next_gid(); } else { if ( !defined($force) ) { if ( defined( getgrgid($gid) ) ) { return undef; } } } my $modify = $ldap->add( "cn=$gname,$config{groupsdn}", attrs => [ objectClass => [ 'top', 'posixGroup' ], cn => "$gname", gidNumber => "$gid" ] ); $modify->code && die "failed to add entry: ", $modify->error; return $gid; } # $homedir = get_homedir ($user) sub get_homedir { my $user = shift; my $homeDir = ''; my $entry; my $mesg = $ldap->search( base => $config{usersdn}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; my $nb = $mesg->count; if ( $nb > 1 ) { print "Aborting: there are $nb existing user named $user\n"; foreach $entry ( $mesg->all_entries ) { my $dn = $entry->dn; print " $dn\n"; } exit(4); } else { $entry = $mesg->shift_entry(); $homeDir = $entry->get_value("homeDirectory"); } chomp $homeDir; if ( $homeDir eq '' ) { return undef; } return $homeDir; } # search for an user sub read_user { my $user = shift; my $lines = ''; my $mesg = $ldap->search( # perform a search base => $config{suffix}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { $lines .= "dn: " . $entry->dn . "\n"; foreach my $attr ( $entry->attributes ) { my @vals = $entry->get_value($attr); # my $val_utf8 = eval { # Encode::decode_utf8($val, Encode::FB_CROAK); # }; # $val = "**UNPRINTABLE**" if ($@ || $val_utf8 =~ /\P{IsPrint}/); $lines .= $attr . ": " . join( ',', @vals ) . "\n"; } } chomp $lines; if ( $lines eq '' ) { return undef; } return $lines; } # search for an user and print in a human readable format sub read_user_human_readable { my $user = shift; my $lines = ''; my $mesg = $ldap->search( # perform a search base => $config{suffix}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { $lines .= "dn: " . $entry->dn . "\n"; foreach my $attr ( $entry->attributes ) { my @vals = $entry->get_value($attr); foreach my $val (@vals) { my $val_utf8 = eval { Encode::decode_utf8($val, Encode::FB_CROAK); }; $val = "**UNPRINTABLE**" if ($@ || $val_utf8 =~ /\P{IsPrint}/); } if ( $attr eq "sambaPwdLastSet" or $attr eq "sambaPwdCanChange" or $attr eq "sambaPwdMustChange" or $attr eq "sambaLogoffTime" or $attr eq "sambaKickoffTime" ) { my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday ) = gmtime( $entry->get_value($attr) ); $year += 1900; $mon += 1; $lines .= $attr . ": $year/$mon/$mday\n"; } elsif ( $attr eq "shadowLastChange" or $attr eq "shadowExpire" ) { my ( $sec, $min, $hour, $mday, $mon, $year, $wday, $yday ) = gmtime( $entry->get_value($attr) * 24 * 60 * 60 ); $year += 1900; $mon += 1; $lines .= $attr . ": $year/$mon/$mday\n"; } else { $lines .= $attr . ": " . join( ',', @vals ) . "\n"; } } } chomp $lines; if ( $lines eq '' ) { return undef; } return $lines; } # search for a user # return the attributes in an array sub read_user_entry { my $user = shift; my $mesg = $ldap->search( # perform a search base => $config{suffix}, scope => $config{scope}, filter => "(&(objectclass=posixAccount)(uid=$user))" ); $mesg->code && die $mesg->error; my $entry = $mesg->entry(); return $entry; } # search for a group sub read_group { my $user = shift; my $lines = ''; my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(cn=$user))" ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { $lines .= "dn: " . $entry->dn . "\n"; foreach my $attr ( $entry->attributes ) { { $lines .= $attr . ": " . join( ',', $entry->get_value($attr) ) . "\n"; } } } chomp $lines; if ( $lines eq '' ) { return undef; } return $lines; } # find groups of a given user ##### MODIFIE ######## sub find_groups_of { my $user = shift; my @groups = (); my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(memberuid=$user))" ); $mesg->code && die $mesg->error; my $entry; while ( $entry = $mesg->shift_entry() ) { push( @groups, scalar( $entry->get_value('cn') ) ); } return (@groups); } sub read_group_entry { my $group = shift; my $entry; my %res; my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(cn=$group))" ); $mesg->code && die $mesg->error; my $nb = $mesg->count; if ( $nb > 1 ) { print "Error: $nb groups exist \"cn=$group\"\n"; foreach $entry ( $mesg->all_entries ) { my $dn = $entry->dn; print " $dn\n"; } exit 11; } else { $entry = $mesg->shift_entry(); } return $entry; } sub read_group_entry_gid { my $group = shift; my %res; my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(gidNumber=$group))" ); $mesg->code && die $mesg->error; my $entry = $mesg->shift_entry(); return $entry; } # return the gidnumber for a group given as name or gid # -1 : bad group name # -2 : bad gidnumber sub parse_group { my $userGidNumber = shift; if ( $userGidNumber =~ /[^\d]/ ) { # make a search based on the group name my $gname = $userGidNumber; my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(cn=$gname))" ); $mesg->code && die $mesg->error; my $entry = $mesg->shift_entry(); my $gidnum; if ($entry) { $gidnum = $entry->get_value('gidNumber'); #my $gidnum = getgrnam($gname); } else { $gidnum = ""; } if ( $gidnum !~ /\d+/ ) { return -1; } else { $userGidNumber = $gidnum; } } else { # make a search based on the group gidNumber # we check that the gidNumber is attributed to a real group my $mesg = $ldap->search( # perform a search base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixGroup)(gidNumber=$userGidNumber))" ); $mesg->code && die $mesg->error; my $entry = $mesg->shift_entry(); if ( !$entry ) { return -2; } } return $userGidNumber; } # remove $user from $group sub group_remove_member { my ( $group, $user ) = @_; my $members = ''; my $grp_line = get_group_dn($group); if ( !defined($grp_line) ) { return 0; } my $dn = get_dn_from_line($grp_line); # we test if the user exist in the group my $is_member = is_group_member( $dn, $user ); if ( $is_member == 1 ) { # delete only the user from the group my $modify = $ldap->modify( "$dn", changes => [ delete => [ memberUid => ["$user"] ] ] ); $modify->code && die "failed to delete entry: ", $modify->error; } return 1; } sub group_get_members { my ($group) = @_; my $members; my @resultat; my $grp_line = get_group_dn($group); if ( !defined($grp_line) ) { return 0; } my $mesg = $ldap->search( base => $config{groupsdn}, scope => $config{scope}, filter => "(&(objectclass=posixgroup)(cn=$group))" ); $mesg->code && die $mesg->error; foreach my $entry ( $mesg->all_entries ) { foreach my $attr ( $entry->attributes ) { if ( $attr =~ /\bmemberUid\b/ ) { foreach my $ent ( $entry->get_value($attr) ) { push( @resultat, $ent ); } } } } return @resultat; } sub group_name_by_type { my $groupmap = shift; my %type_name = ( 2 => 'domain', 4 => 'local', 5 => 'builtin' ); return $type_name{$groupmap}; } sub group_type_by_name { my $type_name = shift; my %groupmap = ( 'domain' => 2, 'local' => 4, 'builtin' => 5 ); return $groupmap{$type_name}; } sub subst_user { my ( $str, $username ) = @_; $str =~ s/%U/$username/ if ($str); return ($str); } # all given mails are stored in a table (remove the comma separated) sub split_arg_comma { my $arg = shift; my @args; if ( defined($arg) ) { if ( $arg eq '-' ) { @args = (); } else { @args = split( /\s*,\s*/, $arg ); } } return (@args); } sub list_union { my ( $list1, $list2 ) = @_; my @res = @$list1; foreach my $e (@$list2) { if ( !grep( $_ eq $e, @$list1 ) ) { push( @res, $e ); } } return @res; } sub list_minus { my ( $list1, $list2 ) = @_; my @res = (); foreach my $e (@$list1) { if ( !grep( $_ eq $e, @$list2 ) ) { push( @res, $e ); } } return @res; } sub account_next_id { my $attr = shift; my $domain = shift || $config{sambaDomain}; my $checker = shift; my $base = $config{sambaUnixIdPooldn}; my $oc = "sambaUnixIdPool"; my $filter = "(objectClass=sambaUnixIdPool)"; my $scope = "base"; my $id_bias = 0; if ($attr =~ /rid$/i) { $base = $config{suffix}; $oc = "sambaDomain"; $filter = "(&(objectClass=sambaDomain)(sambaDomainName=$domain))", $scope = "sub"; ## NOTE: sambaNextRid has "latest RID", not "next RID"! $id_bias = 1; } for (;;) { my $search = $ldap->search( base => $base, filter => $filter, scope => $scope, attrs => [$attr], ); if ($search->code) { die "Failed to search $oc to get next $attr: " . $search->error; } if ($search->count != 1) { die "Failed to find $oc to get next $attr"; } my $entry = $search->entry(0); my $id = $entry->get_value($attr); my $modify = $ldap->modify($entry->dn, changes => [ replace => [ $attr=> $id + 1 ] ] ); if ($modify->code) { die "Failed to update $attr in $oc: " . $modify->error; } $id += $id_bias; unless ($checker && !$checker->($id)) { return $id; } } } sub account_next_rid { my $domain = shift || $config{sambaDomain}; my $checker = shift || \&rid_is_free; return account_next_id("sambaNextRid", $domain, $checker); } sub account_base_rid { my $domain = shift || $config{sambaDomain}; my $search = $ldap->search( base => $config{suffix}, filter => "(&(objectClass=sambaDomain)(sambaDomainName=$domain))", scope => "sub", attrs => ["sambaAlgorithmicRidBase", "sambaNextRid"], ); if ($search->code) { die "Failed to search sambaDomain object to get sambaAlgorithmicRidBase: " . $search->error; } if ($search->count != 1) { die "Failed to find sambaDomain object to get sambaAlgorithmicRidBase"; } my $entry = $search->entry(0); my $rid_base = $entry->get_value("sambaAlgorithmicRidBase"); if (!defined($rid_base) && !defined($entry->get_value("sambaNextRid"))) { return 1000; } return $rid_base; } sub account_by_sid { my $sid = shift; my $search = $ldap->search( base => $config{suffix}, filter => "(sambaSID=$sid)", scope => "sub", ); if ($search->code) { die "Failed to search entries by SID: $sid: " . $search->error; } return ($search->entries)[0]; } sub account_by_rid { my $rid = shift; my $domain_sid = shift || $config{SID}; return account_by_sid("$domain_sid-$rid"); } sub rid_is_free { my $rid = shift; my $domain_sid = shift || $config{SID}; return !defined(account_by_rid($rid, $domain_sid)); } sub user_by_uid { my $uid = shift; my $search = $ldap->search( base => $config{suffix}, filter => "(&(objectClass=posixAccount)(uidNumber=$uid))", scope => "sub", ); if ($search->code) { die "Failed to search entries by UID: $uid: " . $search->error; } return ($search->entries)[0]; } sub uid_is_free { my ($uid) = @_; return !defined(user_by_uid($uid)); } sub user_next_uid { my $domain = shift || $config{sambaDomain}; my $checker = shift || \&uid_is_free; return account_next_id("uidNumber", $domain, $checker); } sub user_next_rid { my $uid = shift; my $domain = shift || $config{sambaDomain}; my $checker = shift || \&rid_is_free; if (defined(my $rid_base = account_base_rid($domain))) { ## Use legacy algorithmic RID generator return $uid * 2 + $rid_base; } return account_next_rid($domain, $checker); } sub group_by_gid { my $gid = shift; my $search = $ldap->search( base => $config{suffix}, filter => "(&(objectClass=posixGroup)(gidNumber=$gid))", scope => "sub", ); if ($search->code) { die "Failed to search entries by GID: $gid: " . $search->error; } return ($search->entries)[0]; } sub gid_is_free { my ($gid) = @_; return !defined(group_by_gid($gid)); } sub group_next_gid { my $domain = shift || $config{sambaDomain}; my $checker = shift || \&gid_is_free; return account_next_id("gidNumber", $domain, $checker); } sub group_next_rid { my $gid = shift; my $domain = shift || $config{sambaDomain}; my $checker = shift || \&rid_is_free; if (defined(my $rid_base = account_base_rid($domain))) { ## Use legacy algorithmic RID generator return $gid * 2 + $rid_base + 1; } return account_next_rid($domain, $checker); } sub utf8Encode { my $encoding = shift; my $string = shift; if ($encoding eq "UTF-8") { return $string; } Encode::from_to($string, $encoding, "UTF-8"); return $string; } sub utf8Decode { my $encoding = shift; my $string = shift; if ($encoding eq "UTF-8") { return $string; } Encode::from_to($string, "UTF-8", $encoding); return $string; } sub password_read { my ($prompt, $timeout) = @_; my $termios = POSIX::Termios->new; my $term_flag = defined($termios->getattr(STDIN->fileno)) ? $termios->getlflag : undef; my $pass; for (;;) { my $sig_handlers_orig = {}; my $sig_sent = {}; my $sig_hander = sub { $sig_sent->{shift(@_)} = 1; die; }; for my $sig_name (qw(ALRM INT HUP QUIT TERM TSTP TTIN TTOU)) { $sig_handlers_orig->{$sig_name} = $SIG{$sig_name}; $SIG{$sig_name} = $sig_hander; } $sig_handlers_orig->{'PIPE'} = $SIG{'PIPE'}; $SIG{'PIPE'} = 'IGNORE'; print $prompt if (defined($prompt)); $pass = eval { if ($term_flag && $term_flag & ECHO) { $termios->setlflag($term_flag & ~ECHO); $termios->setattr(STDIN->fileno, TCSANOW); } alarm($timeout) if ($timeout); STDIN->getline; }; alarm(0) if ($timeout); if ($term_flag && $term_flag & ECHO) { print "\n"; $termios->setlflag($term_flag); $termios->setattr(STDIN->fileno, TCSANOW); } while (my ($sig_name, $sig_handler_orig) = each(%$sig_handlers_orig)) { $SIG{$sig_name} = $sig_handler_orig || 'DEFAULT'; } my $restart = false; for my $sig_name (keys %$sig_sent) { kill($sig_name, $$) unless ($sig_name eq 'ALRM' && $timeout); $restart = true if ($sig_name =~ /^T(STP|TIN|TOU)$/); } last unless ($restart); } chomp($pass) if (defined($pass)); return $pass; } sub password_set { my ($dn, $pass, $pass_old, $hash, $salt_format) = @_; $hash ||= $config{password_hash}; if ($hash eq "exop") { password_exop($dn, $pass, $pass_old); } else { password_modify($dn, $pass, $pass_old, $hash, $salt_format); } shadow_update($dn); } sub password_exop { my ($dn, $pass, $pass_old) = @_; my %values = ( user => $dn, newpasswd => $pass, ); $values{oldpasswd} = $pass_old if (defined($pass_old)); my $set = $ldap->set_password(%values); $set->code && die "Failed to modify UNIX password: ", $set->error; } sub password_modify { my ($dn, $pass, $pass_old, $hash, $salt_format) = @_; my $pass_hashed = password_hash($pass, $hash, $salt_format); my $modify = $ldap->modify ($dn, changes => [ replace => [userPassword => $pass_hashed], ] ); $modify->code && die "Failed to modify UNIX password: ", $modify->error; } sub password_hash { my ($pass, $hash, $salt_format) = @_; return ($config{with_slappasswd}) ? password_hash_by_slappasswd($pass, $hash, $salt_format) : password_hash_internal($pass, $hash, $salt_format); } # Generates hash to be one of the following RFC 2307 schemes: # CRYPT, MD5, SMD5, SHA, SSHA and CLEARTEXT sub password_hash_internal { my $pass = shift; my $hash = shift || $config{password_hash}; my $crypt_salt_format = shift || $config{password_crypt_salt_format}; my $pass_hashed; if ($hash eq "CLEARTEXT") { return $pass; } elsif ($hash eq "CRYPT") { my $salt = sprintf($crypt_salt_format, password_salt()); $pass_hashed = crypt($pass, $salt); } elsif ($hash eq "MD5") { $pass_hashed = encode_base64( md5($pass),'' ); } elsif ($hash eq "SMD5") { my $salt = password_salt(4); $pass_hashed = encode_base64(md5($pass . $salt) . $salt, ''); } elsif ($hash eq "SHA") { $pass_hashed = encode_base64(sha1($pass), ''); } elsif ($hash eq "SSHA") { my $salt = password_salt(4); $pass_hashed = encode_base64(sha1($pass . $salt) . $salt, ''); } else { die "Unknown password hash scheme: $hash\n"; } return "{$hash}$pass_hashed"; } sub password_hash_by_slappasswd { my $pass = shift; my $hash = shift || $config{password_hash}; my $crypt_salt_format = shift || $config{password_crypt_salt_format}; # checking if password is tainted: nothing is changed!!!! # essential for perl 5.8 ($pass =~ /^(.*)$/ and $pass=$1) or die "$0: user password is tainted\n"; my $pass_hashed; if ($hash eq "CLEARTEXT") { return $pass; } elsif ($hash eq "CRYPT") { open BUF, "-|" or exec "$config{slappasswd}", "-h","{$hash}", "-c",$crypt_salt_format, "-s","$pass"; $pass_hashed = ; close BUF; } else { open(BUF, "-|") or exec "$config{slappasswd}", "-h","{$hash}", "-s","$pass"; $pass_hashed = ; close BUF; } defined($pass_hashed) or die "Failed to generate password hash!\n"; chomp($pass_hashed); length($pass_hashed) or die "Failed to generate password hash!"; return $pass_hashed; } # Generates salt # Similar to Crypt::Salt module from CPAN sub password_salt { my $length= shift || 32; my @seeds = ('.', '/', 0..9, 'A'..'Z', 'a'..'z'); return join "", @seeds[map {rand scalar(@seeds)} (1..$length)]; } sub shadow_update { if (!$config{shadowAccount}) { return; } shadow_update_internal(@_); } sub shadow_update_internal { my $dn = shift; my $time = shift || time; my $pass_maxage = shift || $config{defaultMaxPasswordAge}; my $shadowLastChange = int($time / 86400); my $modify = $ldap->modify ($dn, changes => [ replace => [shadowLastChange => $shadowLastChange], ] ); $modify->code && die "Failed to modify shadowLastChange: ", $modify->error; if (($< == 0) && ($pass_maxage)) { my $modify = $ldap->modify ($dn, changes => [ replace => [shadowMax => $pass_maxage] ] ); $modify->code && die "Failed to modify shadowMax: ", $modify->error; } } sub nsc_invalidate { my ($dbname) = @_; return unless (defined($config{nscd}) && length($config{nscd})); system("\Q$config{nscd}\E -i \Q$dbname\E 2>/dev/null"); } 1; smbldap-tools-0.9.9/Makefile0000664000175000017500000000004411725100241015656 0ustar fumiyasfumiyasinclude ./build/Makefile.maintainer smbldap-tools-0.9.9/doc/0000775000175000017500000000000012000572603014767 5ustar fumiyasfumiyassmbldap-tools-0.9.9/doc/migration_scripts/0000775000175000017500000000000012000572603020527 5ustar fumiyasfumiyassmbldap-tools-0.9.9/doc/migration_scripts/smbldap-migrate-unix-accounts0000775000175000017500000002667411530750561026352 0ustar fumiyasfumiyas#!/usr/bin/perl -w # $Id: smbldap-migrate-unix-accounts 11 2010-10-21 13:13:53Z mm1 $ # Created by P.Wieleba@iem.pw.edu.pl in 2004 use strict; use Getopt::Std; use FindBin; use FindBin qw($RealBin); use lib "$RealBin/"; use smbldap_tools; # function declaration sub migrate_user; sub migrate_shadow_user; sub get_user_entry; sub exist_in_tab; sub del_from_tab; sub add_to_tab; sub read_shadow_file; # smbldap-migrate-unix-accounts (-? or -h for help) # # my %Options; my $ok = getopts('M:P:S:vn?hd:a', \%Options); if ( (!$ok) || ($Options{'?'}) || ($Options{'h'}) || (!keys(%Options)) ) { print "Usage: $0 [-PSMvn?hda]\n"; print " -?|-h show this help message\n"; print " -P file import passwd file\n"; print " -S file import shadow file\n"; print " -M file import FreeBSD master.passwd\n"; print " -v displays modified entries to STDOUT\n"; print " -n do everything execpt updating LDAP\n"; print " -d obj_nam delete and add (not just update) existing entry in LDAP\n"; print " -a adds sambaSamAccount objectClass\n"; exit (1); } my $INFILE = undef; my %shadowUsers; if ( $Options{'M'} ) { open($INFILE,$Options{'M'}) or die "I cannot open file: " . $Options{'M'} . "\n"; } elsif ( $Options{'P'} ) { open($INFILE,$Options{'P'}) or die "I cannot open file: " . $Options{'P'} . "\n"; # if defined -S option also read shadow file if ( $Options{'S'} ) { %shadowUsers = read_shadow_file($Options{'S'}); (%shadowUsers) or ( close($INFILE) and die "I cannot open file: " . $Options{'S'} . "\n" ); } } elsif ( $Options{'S'} ) { open($INFILE,$Options{'S'}) or die "I cannot open file: " . $Options{'S'} . "\n"; } my $ldap_master=connect_ldap_master(); while ( my $line=<$INFILE> ) { chop($line); next if ( $line =~ /^\s*$/ ); # whitespace next if ( $line =~ /^#/ ); next if ( $line =~ /^\+/ ); my $entry = undef; if ($Options{'M'}) { my($user,$pwd,$uid,$gid,$class,$change,$expire,$gecos,$homedir,$shell) = split(/:/,$line); # if user is not in LDAP new entry will be created $entry = get_user_entry($ldap_master,$user); $entry = migrate_user($entry,$user,$pwd,$uid,$gid,$gecos,$homedir,$shell); # for master.passwd file (nss_ldap) if ($entry) { my @objectClass = $entry->get_value( 'objectClass' ); $entry->replace( 'objectClass' => [add_to_tab(\@objectClass,'shadowAccount')] ); } } elsif ($Options{'P'}) { my($user,$pwd,$uid,$gid,$gecos,$homedir,$shell) = split(/:/,$line); # if user is not in LDAP new entry will be created $entry = get_user_entry($ldap_master,$user); $entry = migrate_user($entry,$user,$pwd,$uid,$gid,$gecos,$homedir,$shell,undef); # should I delete next functionality # add shadow entries if also -S defined if ($Options{'S'} and $shadowUsers{$user}) { my($user,$pwd,$lastchg,$min,$max,$warn,$inactive,$expire,$flag) = split(/:/,$shadowUsers{$user}); $entry = migrate_shadow_user($entry,$user,$pwd,$lastchg,$min,$max,$warn,$inactive,$expire,$flag); } } elsif ($Options{'S'}) { my($user,$pwd,$lastchg,$min,$max,$warn,$inactive,$expire,$flag)=split(/:/,$line); # if user is not in LDAP new entry will be created $entry = get_user_entry($ldap_master,$user); $entry = migrate_shadow_user($entry,$user,$pwd,$lastchg,$min,$max,$warn,$inactive,$expire,$flag); } if ($entry) { # objectClass $Options{'d'} will be removed # from entry if it exists if ($Options{'d'}) { my @objectClass = $entry->get_value( 'objectClass' ); $entry->replace( 'objectClass' => [del_from_tab(\@objectClass,$Options{'d'})] ); #$entry->delete( 'objectClass' => [ $Options{'d'} ] ); } # if used "-a" and sambaSamAccount doesn't exist. if ( $Options{'a'} and !exist_in_tab([$entry->get_value('objectClass')],'sambaSamAccount') ) { my @objectClass = $entry->get_value( 'objectClass' ); $entry->replace( 'objectclass' => [add_to_tab(\@objectClass,'sambaSamAccount')] ); # the below part comes from smbldap-useradd and # maybe it should be replaced by a new subroutine. my $userUidNumber = $entry->get_value('uidNumber'); # as rid we use 2 * uid + 1000 my $userRid = 2 * $userUidNumber + 1000; # let's test if this SID already exist my $user_sid = "$config{SID}-$userRid"; my $test_exist_sid = does_sid_exist($user_sid,$config{usersdn}); if ($test_exist_sid->count == 1) { print "User SID already owned by\n"; # there should not exist more than one entry, but ... foreach my $entry ($test_exist_sid->all_entries) { my $dn= $entry->dn; chomp($dn); print "$dn\n"; } } else { $entry->replace( 'sambaSID' => $user_sid ); } } if ($Options{'v'}) { $entry->dump(); } if (!$Options{'n'}) { my $mesg; if ( $Options{'d'} ) { # delete entry from LDAP if it exists $mesg = $ldap_master->search( base => $entry->dn(), scope => 'sub', filter => '(objectClass=*)' ); if ( $mesg->count() == 1 ) { $mesg = $ldap_master->delete($entry->dn()); if ($mesg->is_error()) { print "Error: " . $mesg->error() . "\n"; } $entry->changetype('add'); } } $mesg = $entry->update($ldap_master); if ($mesg->is_error()) { print "Error: " . $mesg->error() . "\n"; } } } } $INFILE and close($INFILE); # take down the session $ldap_master and $ldap_master->unbind; # returns updated $entry sub migrate_user { my($entry,$user,$pwd,$uid,$gid,$gecos,$homedir,$shell) = @_; my($name,$office,$wphone,$hphone)=split(/,/,$gecos); my($cn); # posixAccount MUST ( cn $ uid $ uidNumber $ gidNumber $ homeDirectory ) my @objectClass = $entry->get_value( 'objectClass' ); @objectClass = add_to_tab(\@objectClass,'posixAccount'); @objectClass = add_to_tab(\@objectClass,'inetOrgPerson'); $entry->replace( 'objectClass' => \@objectClass ); $entry->replace( 'uid' => $user ); if ($name) { $cn = $name; } else { $cn = $user; } $entry->replace( 'cn' => $cn ); # perhaps I should delete it if ( exist_in_tab(\@objectClass,'inetOrgPerson') ) { # 'sn' is required by person objectClass from core.schema my @tmp = split(/\s+/,$cn); my $sn = $tmp[$#tmp]; $entry->replace( 'sn' => $sn ); # perhaps 'telephoneNumber' 'roomNumber' 'homePhone' # and 'givenName' also should be modified ??????? } ($pwd) and $entry->replace( 'userPassword' => "{crypt}" . $pwd ); ($uid ne "") and $entry->replace( 'uidNumber' => $uid ); ($gid ne "") and $entry->replace( 'gidNumber' => $gid ); ($gecos) and $entry->replace( 'gecos' => $gecos ); ($homedir) and $entry->replace( 'homeDirectory' => $homedir ); ($shell) and $entry->replace( 'loginShell' => $shell ); return $entry; } # returns updated $entry sub migrate_shadow_user { my($entry,$user,$pwd,$lastchg,$min,$max,$warn,$inactive,$expire,$flag) = @_; # shadowAccount MUST uid my @objectClass = $entry->get_value( 'objectClass' ); # if the entry doesn't exist, it needs structural objectclass (@objectClass) or push(@objectClass,'account'); $entry->replace( 'objectClass' => [add_to_tab(\@objectClass,'shadowAccount')] ); $entry->replace( 'uid' => $user ); ($pwd) and $entry->replace( 'userPassword' => "{crypt}" . $pwd ); ($lastchg) and $entry->replace( 'shadowLastChange' => $lastchg ); ($min) and $entry->replace( 'shadowMin' => $min ); ($max) and $entry->replace( 'shadowMax' => $max ); ($warn) and $entry->replace( 'shadowWarning' => $warn ); ($inactive) and $entry->replace( 'shadowInactive' => $inactive ); ($expire) and $entry->replace( 'shadowExpire' => $expire ); ($flag) and $entry->replace( 'shadowFlag' => $flag ); return $entry; } # creates a _new_entry_ if user doesn't exist in ldap # else return's ldap user entry sub get_user_entry { my($ldap_master,$user) = @_; # do not use read_user_entry() my $mesg = $ldap_master->search( base => $config{usersdn}, scope => 'one', filter => "(uid=$user)" ); my $entry; if ( $mesg->count() != 1 ) { $entry = Net::LDAP::Entry->new(); $entry->dn("uid=$user,$config{usersdn}"); } else { $entry = $mesg->entry(0); # ???? } return $entry; } # Check if a $text element exists in @table # eg. exist_in_tab(\@table,$text); sub exist_in_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; foreach my $elem (@tab) { if ( lc($elem) eq lc($text) ) { return 1; } } return 0; } # Delete $text element from @table # eg. del_from_tab(\@table,$text); sub del_from_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; my @new_tab; foreach my $elem (@tab) { if ( lc($elem) ne lc($text) ) { push(@new_tab,$elem); } } return @new_tab; } # Add $text to tab if it doesn't exist there sub add_to_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; if ( !exist_in_tab(\@tab,$text) ) { push(@tab,$text); } return @tab; } # reads shadow file entries and places them in a hash sub read_shadow_file { my($shadow) = @_; my $shadowUser; my %shadowUsers; open(SHADOW,$shadow) or return ; while (my $line=) { chop($line); next if ( $line =~ /^\s*$/ ); # whitespace next if ( $line =~ /^#/ ); ($shadowUser) = split(/:/, $line); $shadowUsers{$shadowUser} = $line; } close(SHADOW); return %shadowUsers; } ######################################## =head1 NAME smbldap-migrate-unix-accounts - Migrate unix accounts to LDAP =head1 SYNOPSIS smbldap-migrate-unix-accounts [-P file] [-S file] [-M file] [-n] [-v] [-h] [-?] [-d] =head1 DESCRIPTION This command processes one file as defined by option and creates new or changes existing ldap user entry. New attributes are added, and existing are changed. None of the existing attributes is deleted. -P passwd_file Processes passwd_file and uptades LDAP. Creates new ldap user entry or just adds posixAccount objectclass and corresponding attributes to the ldap user entry or just uptades their values. -S shadow_file Reads shadow_file and uptades LDAP. Creates new ldap user entry or just adds shadowAccount objectclass and corresponding attributes to the ldap user entry or just uptades their values. -M master.passwd_file Reads master.passwd_file and uptades LDAP. Creates new ldap user entry or just adds shadowAccount and posixAccount objectclass and corresponding attributes to the ldap user entry or just uptades their values. -h show the help message -? the same as -h -v displayes modified entries to STDOUT -n do everything execpt updating LDAP. It is useful when used with -v switch. -d objeClass_name In spite of just updating existing user entry, the entry will be deleted from LDAP and a new one will be added. It is essential to use this option if you update users in LDAP and want to change their structural objectClass. Use it in the example schema: There are no users in LDAP, and you migrate samba first. # pdbedit -e ldapsam:ldap://localhost # smbldap-migrate-passwd -P passwd -d 'account' -a adds sambaSamAccount objectClass and generates sambaSID attribute =cut #' # The End smbldap-tools-0.9.9/doc/migration_scripts/smbldap-migrate-unix-groups0000775000175000017500000001273711530750561026045 0ustar fumiyasfumiyas#!/usr/bin/perl -w # $Id: smbldap-migrate-unix-groups 11 2010-10-21 13:13:53Z mm1 $ # Created by P.Wieleba@iem.pw.edu.pl in 2004 use strict; use Getopt::Std; use FindBin; use FindBin qw($RealBin); use lib "$RealBin/"; use smbldap_tools; # function declaration sub exist_in_tab; sub add_to_tab; # smbldap-migrate-unix-groups (-? or -h for help) # # my %Options; my $ok = getopts('G:nv?ha', \%Options); if ( (!$ok) || ($Options{'?'}) || ($Options{'h'}) || (!keys(%Options)) ) { print "Usage: $0 [-Gnv?ha]\n"; print " -?|-h show this help message\n"; print " -G file import group file\n"; print " -v displays modified entries to STDOUT\n"; print " -n do everything execpt updating LDAP\n"; print " -a adds sambaGroupMapping objectClass\n"; exit (1); } my $INFILE = undef; if ( $Options{'G'} ) { open($INFILE,$Options{'G'}) or die "I cannot open file: " . $Options{'G'} . "\n"; } my $ldap_master=connect_ldap_master(); while ( my $line=<$INFILE> ) { chop($line); next if ( $line =~ /^\s*$/ ); # whitespace next if ( $line =~ /^#/ ); next if ( $line =~ /^\+/ ); my $entry = undef; if ($Options{'G'}) { my($group, $pwd, $gid, $users) = split(/:/,$line); # if user is not in LDAP new entry will be created $entry = get_group_entry($ldap_master,$group); $entry = migrate_group($entry,$group, $pwd, $gid, $users); } if ($entry) { # if used "-a" and sambaGroupMapping doesn't exist. if ( $Options{'a'} and !exist_in_tab([$entry->get_value('objectClass')],'sambaGroupMapping') ) { my @objectClass = $entry->get_value( 'objectClass' ); $entry->replace( 'objectclass' => [add_to_tab(\@objectClass,'sambaGroupMapping')] ); # the below part comes from smbldap-groupadd and # maybe it should be replaced by a new subroutine. my $groupGidNumber = $entry->get_value('gidNumber'); # as rid we use 2 * gid + 1001 my $group_rid = 2*$groupGidNumber+1001; # let's test if this SID already exist my $group_sid = "$config{SID}-$group_rid"; my $test_exist_sid=does_sid_exist($group_sid,$config{groupsdn}); if ($test_exist_sid->count == 1) { warn "Group SID already owned by\n"; # there should not exist more than one entry, but ... foreach my $entry ($test_exist_sid->all_entries) { my $dn= $entry->dn; chomp($dn); warn "$dn\n"; } } else { $entry->replace( 'sambaSID' => $group_sid ); $entry->replace( 'sambaGroupType' => group_type_by_name('domain') ); } } if ($Options{'v'}) { $entry->dump(); } if (!$Options{'n'}) { my $mesg = $entry->update($ldap_master); if ($mesg->is_error()) { print "Error: " . $mesg->error() . "\n"; } } } } $INFILE and close($INFILE); # take down the session $ldap_master and $ldap_master->unbind; # returns updated $entry sub migrate_group { my($entry,$group, $pwd, $gid, $users) = @_; # posixGroup MUST ( cn $ gidNumber ) my @objectClass = $entry->get_value( 'objectClass' ); $entry->replace( 'objectClass' => [add_to_tab(\@objectClass,'posixGroup')] ); $entry->replace( 'cn' => $group ); ($pwd) and $entry->replace( 'userPassword' => "{crypt}" . $pwd ); ($gid ne "") and $entry->replace( 'gidNumber' => $gid ); my @users = split(',',$users); # choose only unique users my %unique_users; foreach my $user (@users) { $unique_users{$user} = 1; } @users = keys(%unique_users); ($users) and $entry->replace( 'memberUid' => [ @users ] ); return $entry; } # creates a _new_entry_ if group doesn't exist in ldap # else return's ldap user entry sub get_group_entry { my($ldap_master,$group) = @_; # do not use try read_user_entry() my $mesg = $ldap_master->search( base => $config{groupsdn}, scope => 'one', filter => "(cn=$group)" ); my $entry; if ( $mesg->count() != 1 ) { $entry = Net::LDAP::Entry->new(); $entry->dn("cn=$group,$config{groupsdn}"); } else { $entry = $mesg->entry(0); # ???? } return $entry; } # Check if a $text element exists in @table # eg. exist_in_tab(\@table,$text); sub exist_in_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; foreach my $elem (@tab) { if ( lc($elem) eq lc($text) ) { return 1; } } return 0; } # Add $text to tab if it doesn't exist there sub add_to_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; if ( !exist_in_tab(\@tab,$text) ) { push(@tab,$text); } return @tab; } ######################################## =head1 NAME smbldap-migrate-unix-groups - Migrate unix groups to LDAP =head1 SYNOPSIS smbldap-migrate-unix-groups [-G file] [-n] [-v] [-h] [-?] [-a] =head1 DESCRIPTION This command processes one file as defined by option and creates new or changes existing ldap group entry. New attributes are added, and existing are changed. None of the existing attributes is deleted. -G group_file Processes group_file and uptades LDAP. Creates new ldap group entry or just adds posixGroup objectclass and corresponding attributes to the ldap group entry or just uptades their values. -h show the help message -? the same as -h -v displayes modified entries to STDOUT -n do everything execpt updating LDAP. It is useful when used with -v switch. -a adds sambaGroupMapping objectClass, generates sambaSID and adds sambaGroupType attribute =cut #' # The End smbldap-tools-0.9.9/doc/migration_scripts/smbldap-migrate-pwdump-groups0000775000175000017500000001167311530750561026374 0ustar fumiyasfumiyas#!/usr/bin/perl # $Id: smbldap-migrate-pwdump-groups 11 2010-10-21 13:13:53Z mm1 $ # # This code was developped by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2002 IDEALX # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose of smbldap-migrate-groups : to parse a Windows # group dump and populate Unix groups # Reads group dump on stdin use strict; use FindBin; use FindBin qw($RealBin); use lib "$RealBin/"; use smbldap_tools; use Getopt::Std; sub process_rec_group { my ($group, $mb) = @_; my @members; if (!(@members = group_get_members($group))) { return 0; } foreach my $m (@members) { if ( !($m =~ m/^\*/) ) { push @{$mb}, $m; } else { my $gname = $m; $gname =~ s/^.//; if (!process_rec_group($gname, $mb)) { print "recursive group not added : $gname\n"; } } } } # given a group dn and a list of members, update the group sub modify_group { my ($group, $dn_line, @members, $recgroup) = @_; my $m; my @new_mb; foreach $m (@members) { if ( ($m =~ m/^\*/) ) { my $gname = $m; $gname =~ s/^.//; if (!$recgroup) { print "recursive group not added : $gname\n"; } else { if (!process_rec_group($gname, \@new_mb)) { print "recursive group not added : $gname\n"; } } } else { push @new_mb, $m; } } # new_mb contains flat members from group dump # now append them to existing members push @new_mb, group_get_members($group); # uniq them my %saw; @saw{@new_mb} = (); @new_mb = keys %saw; my $nmb = $#new_mb + 1; print STDERR "Group $group now has $nmb member(s)\n"; my $mbs; foreach $m (@new_mb) { $mbs .= "memberUid: $m\n"; } my $mods="$dn_line changetype: modify replace: memberUid $mbs "; #print "$mods\n"; my $tmpldif = "$mods "; die "$0: error while modifying group $group\n" unless (do_ldapmodify($tmpldif) == 0); undef $tmpldif; } sub display_group { my ($group, @members) = @_; print "Group name $group\n"; print "Members\n"; my $m; my $i = 0; foreach $m (@members) { print "$m "; if ($i % 5 == 0) { print "\n"; } $i++; } } sub process_group { my ($group, @members, $nocreate, $noupdate, $recgroup) = @_; my $dn_line; if (!defined($dn_line = get_group_dn($group))) { # group not found, create it ? if (!$nocreate) { system "PATH=/sbin:/usr/sbin:/usr/local/sbin:/opt/IDEALX/sbin/ smbldap-groupadd \"$group\"; sleep 5"; if (!defined($dn_line = get_group_dn($group))) { return 1; } modify_group($group, $dn_line, @members, $recgroup); } else { # don't create print "not created:\n"; display_group($group, @members); } } else { # group found, update it ? if (!$noupdate) { modify_group($group, $dn_line, @members, $recgroup); } else { # don't update print "not updated:\n"; display_group($group, @members); } } } ################################################### my %Options; my $ok = getopts('CUr?', \%Options); if ( (!$ok) || ($Options{'?'}) ) { print "Usage: $0 [-CUr?] < group_dump\n"; print " -C don't create group if it doesn't exist\n"; print " -U don't update group if it exists\n"; print " -r recursively process groups\n"; exit(1); } my $group_name; my $group_desc; my $has_members = 0; my @members = (); while (<>) { my $line = $_; chomp($line); next if ( $line =~ m/^\s*$/ ); if ($group_name eq "") { if ( $line =~ m/^Group name\s+(.+).$/ ) { $group_name = $1; next; } } if ($group_desc eq "") { if ( $line =~ m/^Comment\s+(.*)$/ ) { $group_desc = $1; next; } } next if ( $line =~ m/^-+.$/ ); if (!$has_members) { if ( $line =~ m/^Members/ ) { $has_members = 1; next; } } else { if ( $line =~ m/^The command completed successfully/ ) { last; } else { push(@members, split(/\s+/, $line)); next; } } #print; } if ( $#members > -1) { process_group($group_name, @members, $Options{'C'}, $Options{'U'}, $Options{'r'}); } #print "gn=$group_name\n"; #print "gd=$group_desc\n"; #my $m; #foreach $m (@members) #{ # print "$m "; #} #print "\n"; smbldap-tools-0.9.9/doc/migration_scripts/smbldap-migrate-pwdump-accounts0000775000175000017500000001624711530750561026676 0ustar fumiyasfumiyas#!/usr/bin/perl -w # $Id: smbldap-migrate-pwdump-accounts 11 2010-10-21 13:13:53Z mm1 $ # # This code was developped by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2002 IDEALX # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose of smbldap-migrate-accounts : add NT sam entries from pwdump # to ldap use strict; use Getopt::Std; use FindBin; use FindBin qw($RealBin); use lib "$RealBin/"; use smbldap_tools; # smbldap-migrate (-? or -h for help) # # Read pwdump entries on stdin, and add them to the ldap server. # Output uncreated/unmodified entries (see parameters -C -U) # in pwdump format to stdout. # Errors, debug and stats are output to stderr. sub modify_account { my ($login, $basedn, $lmpwd, $ntpwd, $gecos, $homedir) = @_; my $modify = $ldap_master->modify ("uid=$login,$basedn", changes => [ replace => [sambaLMPassword => "$lmpwd"], replace => [sambaNTPassword => "$ntpwd"], replace => [gecos => "$gecos"], replace => [sambaHomePath => "$homedir"] ] ); $modify->code && die "failed to modify entry: ", $modify->error ; } ##################### my %Options; my $ok = getopts('awA:CUW:?h', \%Options); if ( (!$ok) || ($Options{'?'}) || ($Options{'h'}) ) { print "Usage: $0 [-awAWCU?]\n"; print " -a process only people, ignore computers\n"; print " -w process only computers, ignore persons\n"; print " -A option string passed verbatim to smbldap-useradd for persons\n"; print " -W option string passed verbatim to smbldap-useradd for computers\n"; print " -C if entry not found, don't create it and log it to stdout (default: create it)\n"; print " -U if entry found, don't update it and log it to stdout (default: update it)\n"; print " -?|-h show this help message\n"; exit (1); } my %processed = ( 'user' => 0, 'machine' => 0); my %created = ( 'user' => 0, 'machine' => 0); my %updated = ( 'user' => 0, 'machine' => 0); my %logged = ( 'user' => 0, 'machine' => 0); my %errors = ( 'user' => 0, 'machine' => 0); my %existing = ( 'user' => 0, 'machine' => 0); my $specialskipped = 0; # bind to a directory with dn and password my $ldap_master=connect_ldap_master(); while (<>) { my ($login, $rid, $lmpwd, $ntpwd, $gecos, $homedir, $b) = split(/:/, $_); my $usertype; my $userbasedn; my $entry_type = 'user'; if ($login =~ m/.*\$$/ ) { # computer $processed{'machine'}++; $entry_type = 'machine'; if (defined($Options{'a'})) { print STDERR "ignoring $login\n"; next; } $usertype = "-w $Options{'W'}"; $userbasedn = $config{computersdn}; } else { # people $processed{'user'}++; if (defined($Options{'w'})) { print STDERR "ignoring $login\n"; next; } if ($rid < 1000) { $specialskipped++; print STDERR "$login seems to be a special Win account (rid=$rid), skipping\n"; next; } $usertype = "-a $Options{'A'}"; $userbasedn = $config{usersdn}; } # normalize homedir # uncomment to replace configured share with share from pwdump # if ($homedir eq "") { $homedir = $config{userSmbHome}; # } # normalize gecos if (!($gecos eq "")) { $gecos =~ tr/ÁÀÂÄáàâäÇçÉÈÊËÆéèêëæÍÌÏÎíìîÏÑñÓÒÔÖóòôöÚÙÜÛúùüûÝýÿ/AAAAaaaaCcEEEEEeeeeeIIIIiiiiNnOOOOooooUUUUuuuuYyy/; } else { $gecos = $config{userGecos}; } my $user_exists = is_samba_user($login); if (!$user_exists) { if (!defined($Options{'C'})) { # uid doesn't exist and we want to create it my $addcmd = "PATH=/sbin:/usr/sbin:/usr/local/sbin:/opt/IDEALX/sbin/ smbldap-useradd $usertype $login > /dev/null"; print STDERR "$addcmd\n"; my $r = system "$addcmd"; if ($r != 0) { print STDERR "error adding $login, skipping\n"; next; } # lem modif... a retirer si pb if ($entry_type eq "user") { modify_account($login, $userbasedn, $lmpwd, $ntpwd, $gecos, $homedir); } $created{$entry_type}++; } else { # uid doesn't exist and no create => log print "$_"; $logged{$entry_type}++; } } else { # account exists $existing{$entry_type}++; if (!defined($Options{'U'})) { # exists and modify modify_account($login, $userbasedn, $lmpwd, $ntpwd, $gecos, $homedir); $updated{$entry_type}++; } else { # exists and log print "$_"; $logged{$entry_type}++; } } } # take down the session $ldap_master->unbind; my $sum; $sum = $processed{'user'} + $processed{'machine'}; print STDERR "processed: all=$sum user=$processed{'user'} machine=$processed{'machine'}\n"; $sum = $existing{'user'} + $existing{'machine'}; print STDERR "existing: all=$sum user=$existing{'user'} machine=$existing{'machine'}\n"; $sum = $created{'user'} + $created{'machine'}; print STDERR "created: all=$sum user=$created{'user'} machine=$created{'machine'}\n"; $sum = $updated{'user'} + $updated{'machine'}; print STDERR "updated: all=$sum user=$updated{'user'} machine=$updated{'machine'}\n"; $sum = $logged{'user'} + $logged{'machine'}; print STDERR "logged: all=$sum user=$logged{'user'} machine=$logged{'machine'}\n"; print STDERR "special users skipped: $specialskipped\n"; ######################################## =head1 NAME smbldap-migrate - Migrate NT accounts to LDAP =head1 SYNOPSIS smbldap-migrate [-a] [-w] [-A opts] [-W opts] [-C] [-U] [-?] =head1 DESCRIPTION This command reads from stdin account entries as created by pwdump, a tool to dump an user database on NT. Depending of the options, some account entries may be output on stdout. All errors and informations are sent to stderr. -a process only people, ignore computers -w process only computers, ignore persons -A opts a string containing arguments to pass verbatim to smbldap-useradd when adding users, eg "-m -x". You don't have to specify -a in this string. -W opts a string containing arguments to pass verbatim to smbldap-useradd when adding computers, eg "-m -x". You don't have to specify -w in this string. -C if NT account not found in LDAP, don't create it and log it to stdout (default: create it) -U if NT account found in LDAP, don't update it and log it to stdout (default: update it) -? show the help message =cut #' # The End smbldap-tools-0.9.9/doc/smb.conf.tmpl0000664000175000017500000000330511630116634017401 0ustar fumiyasfumiyas[global] workgroup = DOMSMB netbios name = PDC-SRV deadtime = 10 log level = 1 log file = /var/log/samba/log.%m max log size = 5000 debug pid = yes debug uid = yes syslog = 0 utmp = yes security = user domain logons = yes os level = 64 logon path = logon home = logon drive = logon script = passdb backend = ldapsam:"ldap://ldap.example.com/" ldap ssl = start tls ldap admin dn = cn=Manager,dc=example,dc=com ldap delete dn = no ## Sync UNIX password with Samba password ## Method 1: ldap password sync = yes ## Method 2: ;ldap password sync = no ;unix password sync = yes ;passwd program = @SBINDIR@/smbldap-passwd -u '%u' ;passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n" ldap suffix = dc=example,dc=com ldap user suffix = ou=Users ldap group suffix = ou=Groups ldap machine suffix = ou=Computers ldap idmap suffix = ou=Idmap add user script = @SBINDIR@/smbldap-useradd -m '%u' -t 1 rename user script = @SBINDIR@/smbldap-usermod -r '%unew' '%uold' delete user script = @SBINDIR@/smbldap-userdel '%u' set primary group script = @SBINDIR@/smbldap-usermod -g '%g' '%u' add group script = @SBINDIR@/smbldap-groupadd -p '%g' delete group script = @SBINDIR@/smbldap-groupdel '%g' add user to group script = @SBINDIR@/smbldap-groupmod -m '%u' '%g' delete user from group script = @SBINDIR@/smbldap-groupmod -x '%u' '%g' add machine script = @SBINDIR@/smbldap-useradd -w '%u' -t 1 [NETLOGON] path = /var/lib/samba/netlogon browseable = no share modes = no [PROFILES] path = /var/lib/samba/profiles browseable = no writeable = yes create mask = 0611 directory mask = 0700 profile acls = yes csc policy = disable map system = yes map hidden = yes smbldap-tools-0.9.9/doc/smbldap-tools.pdf0000664000175000017500000066441111530750562020267 0ustar fumiyasfumiyas%PDF-1.4 3 0 obj << /Length 1524 /Filter /FlateDecode >> stream xÚåYÛnÛF}×Wð­P®÷~É›sE‚¤h¤-ÑJT(*†ÿ¾3»KŠvè Ú‰í'r¹ÃÙÙ3sfgȧ³ÉÑK¦fg*™%œ*¢¥K´±D‘ÌŸÒë)×éi5eé"ßfm=Í`\ðÚM3AyzW–M½Ë7øÂòjúeö&š8ç’Œ3â˜õJ?SEqÖ·ƒõ5¡N'Ô‹¼Ÿf.-pX§E¾+âC‹µ ²øÊ4&ÓÌÀ£z¹ïI¢­ˆónD!ÖÝö>ó¶Ç¢ŒIl[y™ÌBÞ áÚyÙ7Sn.¦R ñï©t4­×  0Φ–y°÷ͦˆ{ÃJ5%Tº’Xe.C÷ ”˜´Ü•õfÄéàÎ ±³)Yq"ùÕ½ ÂU·wó{0|YlŠ&ÚbOLz¼m`XVaÄážGYN)ŒlÔ¬F‰£ÎoŽipœfI&±:ÏlUBÄI§Ò£MçûuAgÓ6<î¦ÛUn¶M½Åý(©hF‹âa¶> ××Ï_ÀÌñÛÁAÁéÎx^0E$8LxÀÐ6b¬$Fppn/D‚Þ?q­¢Y—;Ot<—ÑL€ ÊÃ,ozwXîÚ¦„ùÓ½Ç2¼Ñ®ÉgWÆ…!LÀJ%ÃÊ“Îq=|qíÚa$8<Ý ¡=i]^aïÁÔ]¸Edü#˜]ÅéWœ /§Vx,=¨qöùUä­ß/¾ð¶œ›]è¢T&à‘á^örp3Ìcáw #@fh:X…z6Ê>T2Ç!º‚|SãþÓÅ~ÞCMň­²„–—¶È(càû®‰Q|Ž$ŽB¦Mñu!ÓC·ƒK䓊Қn0½Ü$òoç~Äëœj0Dì/Æ#`'!,ò¶Ø˜|p Ñ“É?¼™8ÚÚG™ˆ›*æe•ŸúÄ]vIQGoЇ•OãZªdWøžuT°žw¬ßµyU!}&Ôp&Ë»ž÷„ïsÎW¬Ê>é®c"âÎó[9õË øSœ#Gâ™÷) ú"Ç î]16® úfW±óȤìÐÃe³ Ü?Ã@¬×ñÔÙF¶Sf~þ¾~`4ùxº "y¸`¸åÍi^…^Fs{¯¹šû 0—J]Ê}"ä¾g5Ö˜Ÿ)“Ë}Szˆ¬ E¹€Òq·Æ‚è´Â®ÓX*£ÛJ.pSÝ-IŠ>IÎV±ÝpŠã±Uá™”oɼÞÄ ‰"t<žÝj$ŒEŸ¯‡ _›¼˜M°»'Ì*Â!Ap§‰"™¯'_'Ÿ¾Ðd1¡É› %ÂÙäî)aÐî¯'°ˆqTM>LþêUe®l ì©ÿqÉ×ÖÎî„ÐòSO7´øÃÇØÀ³U¬ƒ©ùe¼ðç¼ÝhÙAÇ'p/4Ç2pïd‡‡œ¯–n‘wàh˜™7å+î8ôߌÞB4T÷<{½A/´e^à‡’dÞÖÍÅo0Š%a(»ëíK §õýåÄ#bWH%ÍÆ.~hðè¬óM¾,.ÂܨGTeÌØue†”Ç äv‰¬^ŽQ‘î˜rùko÷Dë»ë«Ð¬k ¨ocx†³æö¢ã^‚$®IDÞ…v~Qâ×’‹£J ú€!ʆ´ëÒy×è¿òUë~{}º1ñ2”¸>C‰Û3Ô²©‘t£Õ95³NÜ95€27|P{(lë’Ýwµë¨ŒÿšEì"¡bòånüÔÖô9½ Or_Ïë}ø•c÷%uµ·°Ð^HJŒ°··Ì@eêÌxcaôƒ&ßS–(âŒõ?‘Â$LÀ)aõðWŽÒ‰%P™†?9L1ü“c©þˆxýüÅñÛÐK®F*fNÆ&É4ƒ;øO„;ý v"4endstream endobj 2 0 obj << /Type /Page /Contents 3 0 R /Resources 1 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 1 0 obj << /Font << /F16 6 0 R /F18 9 0 R /F17 12 0 R /F15 15 0 R /F30 18 0 R /F57 21 0 R /F59 24 0 R /F60 27 0 R /F31 30 0 R /F56 33 0 R >> /ProcSet [ /PDF /Text ] >> endobj 37 0 obj << /Length 2071 /Filter /FlateDecode >> stream xÚíYm¯Û¶þî_a*MR$%(†Û¤ÙRdI»ëÚ~е_íÊ’+Éñ²_¿sxHY²å¦M“4öáZyøöœ·‡ç~µš-Ÿ>œ¥<¯^Í1 gŠëùjóCðv!‚bŠ Ú.Â(‰‚î>Ç`Ïn‰à^JÙdû°«¡WµmhiJ®›bßµ‹ŸVß,Ÿ 1OYj"\/J8:žs»Üßaä¯a˜ »t]¹1ú4FI¦ãÄ ùbÊ8 ÄåÔp(-L/v1d±ñ³ÄØ=ûz5ÐxX´f©’óõnöó쇟ø|3ãóofœEi2?Â;ìÜqá¯n +PÈ£ÇYõjŠ$JŒ pÐ$X£lÖžØõìåò¶¶¬qÝ· ]Þ‚Ôís¿ûÝ£E±ñ½AOB¡ ½¢þ>ëœTn½ÈÊâß=9õmŠÞJÖ]ݼ¡ÖcPYÛ„´6°ÍT1 y€òM»»+1]îëý¡Ìº|˜Ó²œ—ÿ@!tM(SÁ¡ÎRoCèŸuáœÉšˆiSï2ß~´Þ{¡| D2c< h꺛@DØ—v2ÙÚn¥F·ªÐ„p;¿Õ^ÞkøƒÉS&…<SÁ¼âeSņîÉL›íî2È 7ëu}¨¦ JRXU9ñ»ƒ÷KðlD.ª¸K} $[º«!5‚Âoè/qä0ö¼ËO1°„Ç#œUšØXDo»¼»'R°Á†8x´uÙâ¬æEœ)‘ÌUÂY"ÕÛ O£éÒ“Ÿ+LfëO#퀮™pã…‚× màNxÈÑöÑ p×YEß6¼l|ÊÃz£RŸ¯ŸdÃ[—÷Þ”ÎîŠø½´(£»Úlák%å5]œ®ÜeQœ_h¸¿ÄZb¾›^ö""û[Ùëø¾XûâÛðÎÝžâÓɧO\÷TŠ¢t@ôå8åïu3†„êÍÖæÇÃfôñù¥¥˜XÕ òƒ-+Ï•L ×_¥ ˆ}ëplBcoª*ÿW~}ð9QB^Ðɤ¯/=Å«Á¡WJQ ‡A¥»°½Ì1‰ró?ÌÁ.M ³  ¥,í¼Ì1:f”ÓÅ2ïÖËzß-Ÿ=ùúæù÷=sìêºlý¼_MU ”b"NÝTyòƒ4NÞá0ÀÞÓg·z<|Ïç¹È ©dQ"çàLñk2ƒ‚H;Ü\á`2›F{ŽRÍÈ^ÈÖ€·^CZk çò脘â¦Úa ®‡esL£¦6µƒ’ù îÕÚèß­ÀÙ†ž†9ÃÿâJÝI÷·«[\AE\;ª ã‰ùýœf ç̘KÓRç0¼Äê(øêùÌ7ßN÷ï³SÐ9¥Å)($OX,ã±™æšã²-³ýUÕ %Y¢¢kxÐ)Ý<Â:–9¡¾ ýxt½:ãñÙfWT…ÏùÓõ°xvíô#×|òÀéàÀÖíìýÓ.D¯›jâ¼1¨ß‡”¢š2* ó&'Š| 8 ÒªçÆ ¡9kÄ2¾§#L‘‚‹Â«¯i?Tý%³Ü~¶€Ÿâÿ…"À1²v1bˆÐ&B’ WÆ•4¶î†,—$‡ù?ayçendstream endobj 36 0 obj << /Type /Page /Contents 37 0 R /Resources 35 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 35 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 43 0 obj << /Length 2100 /Filter /FlateDecode >> stream xÚ•XY“ÛD~÷¯pñ$Wá±æÐÅ ›P¡xS¤ xÐZ²-°$9fÿ=}ÌHòZ!äÅž£§§§¯»õÍãbó:ô—Ò‰Ÿ,÷ËX.£ÐÆ–ÙoÞ»n%½bµ–^uX­u¬½þ˜ãÀx¸S®´ôž`pB’,mÖ} »Ê«i¡ã#H¹k‹¦ïV<~¿y-å2I¨ñ>ûBÑÒ§ë~Y­c/ÿǯ «ëÊž Æ3F‰ Ší‘¯VkÅž¼e d8ݰQ" —·¯@¤‡ ‰QË]¹ø{ñÛþ2[øËï¾ÐI¼¼À$O’e¹0FÚñi±]ü<ðX“õ„Ë7¨í YJ#´ ¶h;bmKPšT÷¦Zûu j=ïút1QÅh/ $"Q11Ø–+{O§Õh ˜×8[¥P«ð/½”ÿ:4SÞó¤ÞÛÅ®¶¨þ¦f0ÌɬšÊ3¦Å+ðÿè6ñ®†×Š ¥éóC›ö9/mS–Ð^ŸV(é•D÷Hp÷–gxgÑæ$ŠR·Ï+ð(šÀ·K-“ÐÛù3èKƒ‹¦íߤµç÷ðêþÈ[ç•{sÛ1wÓ¬,pZtî>¼v”¨ vyàwÿáCÝs×ÓËËnKIv´D›ÌD{ô¸ÓN€Ï‘$8ä| „WÑòn“vÝe…Ò·ß\Øs)ÿÑfŠ<ìÃIì‚âhŠÔ2£¸$þl(w}ZeDcßÿ»Ô¦Áb—¯Ù_Ld¯ËÒ>öæ|7(±´ç«ÉÃ}r³'³–Lu¶Úb2‡¶>7<oO¬öœÝlr È8=UÎ[)„Q]Yq†}zê3òÛ¡:Q=m½žñ¯ª|‡Õ·EJ<„˜ZwÚíêó ( $AIê|ºÎ‚VŽçÀ¼·T'ptãÍ)øñXXgÊ8¾wçòŠuÓæÝä¾ÎbŸÑܡСðð…ŸHâû»/£„±#ÆIëyYÞ§Åé”[¿ùP¸è¿ð‡ŠKèjƒžNLð7b“®[йzm‡k¥Ú?Sj«ß†gOÓÀá¶;ù?(á çp÷êQÇO^lÁÏ7s¹@i1x-§…‘0IxU£¾Am'¨5|ç'¢˜qÊ‚=—šhòÈ•‘$Ôçàâà9¸ø [p:ÆHÌ‹=³˜€ø¤Üµ=¯ŒÞp}Ãù… 0µåü¢«…¥Ž›Ž|ÆjiF-¬Å¼P! £d»¯;:ˆ=‚¨1C EFþÐð¤¤Eƒ•d€!Àåâ‰g—+$so¥jÃη.Þ¸œªÛž×7uË܆&(­V”JÄÜvÄD“^¹'üO*„Ï-u~yûõ¡ÅJÛÛ+ 2›„ÿ›+Ü”?¬(@Ór‘Ä ÇÐNg¾­LÑ·•ëÔ%tZ©Pø&=ö%ÀÙ[njhmñ펒Q¨‡h£¿‚Šêç[´ƒ!ç"‡v¾mШ¢þt5ýŸÍq¢ýVà¾ÚÉ`Õ±«Èã\½(ûb㊆7÷Àî¾ðáý\cD”¸ì5è ¼¡Œš  €Ëåroî_Ý=¼G˜ÃЫH’dä,˜˜HÄT.Ž`ò–*¶,:n•©¶ÃAqäA0Ú°Ìx¾wÀ†Ÿ! „>·[¬b85ð iv1ªl,Iìa[[A?T'åðµ3ä6‘(-Ùw@ð#¼ã×Xµ¹Ý½wÌ}s¸B¡«Æä¡ØÙ½ëd$émó|ÆTX¶ŸëP)ìêæù”ïûÍ>;‰c_žæR€‚·Þš.‚4]‰ð_f,½Ñ¾‚€¹yendstream endobj 42 0 obj << /Type /Page /Contents 43 0 R /Resources 41 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 41 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F59 24 0 R /F43 46 0 R /F66 49 0 R /F65 52 0 R /F57 21 0 R /F67 55 0 R >> /ProcSet [ /PDF /Text ] >> endobj 58 0 obj << /Length 2187 /Filter /FlateDecode >> stream xÚ¥X[sÛ¶~ׯÐÛ¡:&àÍoî%sÒqšœØ™N§í,R2kŠTH*÷ן½eÓM2}‘pw±ØË· |»X¿JäRI‘Ë|y»]fj™&R/o‹ßƒýJÕ*TA³[…:ÓÁp_âÀøe¿Ò*¸ƒA$…=„C _£ ¥…žYrÓU‡¡_ýyûóú•RË\䉯ýt&…ŠÓ¥¤íÞ¯Â,(?[T´uÛ8žøÄc"§™c¹\…Qšê¹h8T¬’‘왘H¤‰—’âçÅO·  `²C‹ÜDËÍ~ñqñûŸrY,äòç…:Ï–Ÿa šçùr¿0F¹q½¸Yüo”‚p"å{´vœ/•Ú$ÞÚX;ekG`4ÅÁëÏ>Ø-k²ü8S %ò8F r æ:JX€2夼/?+˜wèŠr_6è,Ö¶8ùäD™P©"9·èd“€ƒmÕð¨Æ%}<¢>¤°XElÛŽi´Iˆ‘Ëý~¥,(ð"Æ ,·uÏTÝ^&‰H_¯Ì€{}F)-/ˆ·ô,µÓEfAZÔ%ÄG*eðK9\^^ÿˆ®Þ±º¶)Ðxt¥Elr:úÝ#*Ô7àNçÿZ:Ð= °N‚0…Pß·ôeÀÄ9ŽmO:õLñˆ»¶ÇÿÔ¬#.ÙºoyÔ”D[0;g,¿~Þð96Èý€?D8„7¨Ø5“½£õ®öªðÉáû±v‚·Ï±§Ü^ßÌ{‹Öj6& l®ðô+HváY"% ¶ˆåõÓ[úãñ„Üc}TàJoÙˆ–§¤O†²uíVQÀ^ïIÀŠ•ƒI­§µÃÌ®lõ†'|ÒLèËŽGoVHgw~þ‡Œ%,µnŠŠç š&ípïcuR5c¸#Ú«@yFêàÍì_ñ º¢ÅãÆø–ÆoˆVÀ©E‚âÄD¤Ôìbþð}ïΊj ë¼Ï±õr‚1šéÓÛãÁç ê}ÁŸL3^ËDèT9¼±í!ùA‹Èx¼$—Ži>ðÎw>QŸª¿2Žù07ÊA@—Q"Qù™A½ÕµR;¡›—[šáÉŽCÙaê$xE;A4Q ÎTéThåU{ $)›k`ûÏqƒw3'䎓ȱm(¼@‹ñ”8©šŽW—O[¤‘¹K€GžPp¶ûškÝFÚ§°/š†ÁÅuCf,‰¢Ÿ §òHdÛ³±8½YOÍÞ Ì UÒÓÒnÒ—hœš0ÆüÔPÖKm;GsMTWå˜ÝZ»äÜ®¦èlÇZ!f¼q"_w*õ^p˜ýD$ÈË ú~³KãØžÅ«E,DÊ“àsE`£¦xp ƒsÓ3oŽ=û²`²û²+ÁÕ ˜ê·ôB„X°ÎnÂóŒã§¢å¶`üB!-Ù@ƒ^‡–aš5¾  í§Uœ¶ªíK=üÒºÈ3 Ö0™:àò¿Æs¾=N2¡7é4±’T$‰oÞî‡áp¹^÷í±Û”Ð ìJÑ”Ãúе•›¡_÷û;¬ü!V_@(ùë§D‰†ÞƉDì3]¤G ’ˆal~¾®…ú‡Öç û *tG…÷¾úäJ/.B Ó?zæybNæÚ©ÞAýB»ó\‘$ÆŒü\ 1°°q†m]nãþ'¤…ÕSÁ(ª[[`𑺎¼=rˆãy;À'ºq“oWÎø8Ò9›9÷1Ç¡‘@¥ÎÂðß:?Ò"‹}&»Fëªqt:á‡ê{W]°QN‘mzb2ìÊÞñuå?eŠC- §Ìô|ÔóÀ~§î‘³s(KEw×Ù‚ÀdwÁ«5we탣|–³)%…L|U~ýËÍíÕõõŒ¥Œi”Ži¢L}Êiêf`‡®´Åi/Ö…4{`º„n ÚƒôôFRSba‚éÜådXèî±Ä¨‰ÃFÇÝ·¾¼a©Æ[bw |9ëø¾AЈE.ò%•'¬8ôg½aÏk\m#ª\ð÷4ë±çŠ»¿à êr ]^8_žìõ‹ò^<œ‡Œ‘cTéØx Î °¾mëšwâ`˜¶Ž\ú\;³·Ô%^Î^î rF¦îô1`[øáÓ=|VQB…À't¨D¥³D õs¿Ê9‡FßâP램ãÆw–8ê/ùø-‚Üë›Ö žø {9*c!.É@|­{sÌc+ ÏÊÝ¿J÷å„Ã"A8üK¿-¾P`ÉèàâÁ=صâЩmH~7v?/îPõó®4“f¸+{ÿÚ‚-éà{ÐbÚüÍH\zåd n,]ï9¹OÂòS»pÇ;W$ŒˆôöúØwëþ®š+¶<¹0ñyóBíSç RÛÑ5bÌá'Q̹ ±Ëw›YàÚžMÛ bª‘£¨}c¾ <²•€¼š¼§œDæ"3¾­Ëa³>óÖ\Õ‚†Žä ÷Ìaær;ÔQ$4ÎR|ÿPT§ö [?¹}nLý€óo'œ_Ïê ¿sÜÞyëù„&m£Ó+Ñl_9{7àÅ9uû§NYëSw:}åÁ2(È×Dí°÷)íË…»w††&jZQ…NÌ™™)«½<’Óe»Îöjitz\¤F¥(Q›æTˆwuKèHÍ4¸³üj·×MÃ4‰Ž±ó —ËoTõé¦2¹¨³I”}ùS @–ù‡L'*œÈâÇÌ3bHƒ,7DÕ ŽŠ—L­}lâ/˜Ðßfm±§:ZõCáuÖn6íqz'\àÜU“Ñ/Ž­dt¦m÷H¹¥R$pïñ­.…¨“¿ÿèÀ¬µôæý?猴|endstream endobj 57 0 obj << /Type /Page /Contents 58 0 R /Resources 56 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 56 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F59 24 0 R /F65 52 0 R /F57 21 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 61 0 obj << /Length 2155 /Filter /FlateDecode >> stream xÚXI¯ãƾëW¾< [ì…›µtS¤ÄñÌI­^ª«kùê+¾{Þìß'ÑVF"òíóË6“Û4‰„‰âísñkðŸ~'ƒjÊ yÝ…:ÓÁp*q`\9ï´ 0¨qKa/áЪ Zšèùîj ô¨<šPëáU¨óeâÄ<=½kApÂ$‘ŽA«Ô³—±#Y3‰dAm5᳡q)#\¢„ð<%]‚s|D©ˆËGfÊŒñœÇ;ÀѦºXÞ…iJÌꤘ/5Béu厲+tçŸíàâvÆ"ôœ•h‡1+C{™}‚k* Ðã¢Kœ/Ê6ÞPÚ‘Ëöì{Ÿ<øüçŠË ^Kk•i!3Q?vC×Ú<Kœ“WÒŒ_6‘$"ÔF$®ç|Gºpb¸ÇŒ¾‰ðí+U¹ÂÕc/Ïíþu©nô‚F¹1‹ÄG¤+꺫<·è‚,L^ F½`½ms«¼.P{d©RRèëM2”Bß7ɨÏeBóþÁ{Ä^þÌw49Z;±+íÑša¤°ôgÔG›‡¹ÂP)¨çñ7[ýˆFž’ŠÊ Â%>ï„AŒ# LàŒ§0”Ž–IvkðiÏ„]0îÆ†HõnˆmqD_P†w¼º‘ŸJx`¯vaUŽSàï«çjÆ:~øàŽ«· >½v´pyêç(ÀV*Ú³­|~só6:{“{ bÀäeðñ§¿qAt*Tª—5¨™DËŒ‘%ÍÑ”;CØv¡–Årß ¬Ó¥™í7¼#ÓN™ 4¯» ßÒü³ŠŸÊë_¿{³õX~÷'%•Kô{ìƒFjZáÞò{¾ÔîÎ{ßßåc=kh»ÑEf½cšb ›™` óGhÓÑW¬Z"ÒÌ}$pRº/Ï+Ÿp /-ÜtZ}³‚;Sé¾Ä1ÚÍÏP‡ê§Çþæ ãúÖxé*Ü~ß°ºÓœX8r&‰ç&‰××øVpaì×îÊÇܧ1ÿÝʘ[Üø2:Æ@§PêS°]|‘ÕÉò ã]ôÀ着lUO ïÃÝ}ñŸ$œ?åZÏòrxrPÆ”¾‰`@ðšãû@5Y_]}\~Y¹°:×ô?:%&%].öÕÝïuäÛñÿ¢¸¤endstream endobj 60 0 obj << /Type /Page /Contents 61 0 R /Resources 59 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 59 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F59 24 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 64 0 obj << /Length 2252 /Filter /FlateDecode >> stream xÚÅYmoÛFþ®_!ŽBŠûÆFáÔiëÂI}‘Ðö-Q2ŠTHÊIpþfvv)R¢ÏNj£0`íëìÌìÌ33Ë׋ÑìçÀ3ß‹ýx¼X#6ß“¾/V8ê)s²©Ëœb3uE$œæ.ņtpf;̹…FŽKVÉÎmJ˜åN©jÚ‚+—U¶kêé_‹ßf?36޽8xžˆ|©pìëãÞOÝÈIïa›r2}tY˜=ê°GrO…‘Ùr6uy9ì”4¥XÐ.;!ý0°TBœ½YŒ €>´”òbÉÇËíèÓè¿üñjäùžˆ£ñghçq<ÞŽ¤d¦æ£·4\ âv¨¼FmKÑÑvz"ãƒÆCÒøŸ> ‰WÐÊa¥i·®.ùe<ðcI=Ê´ð¤†Ù¶´Ü1Í{Ÿ#ëkè2?_\¼_´š>¬Üã!7Ü'Åj@@Î<΄YòË©€Ü‡¥‚=‹€–Öÿûnç;“B8»¤ N¶è i“â Sé¬Òöôð2iR£“ž3ºŒžKàè bá¿Ç3æ…Ü:Ñ⮬S:䈅ʜ½òÈÙ× õnу³£åi[â¢{ü§û+ª¬èwYj¢Û´ÀÀ¾7Ì¿æËe¡Ç•|û÷S8I–'XàpÎ…³G0Xa›ƒM5?ØÞ´ƒUJB3þ™:«üI©Y”øËÄh~ìs ×Ð1…ßì7âU_‡,6Š=á[“­“ímò¡È¾\­nÊ2_ç=tYn“¬x—lÓóˆH¸¾fQh=pŠò$h®s XV6y5ÄÜTꩌì×ëìË.óö”É€)¨Ž%h“»`^$X‘ð”ŒÉSc¯yÒØ+3–¹†>XééѼ²ñ`HݳŸ÷*z"ÆàÒìq,ä“Sõ=wõ £Æ‘Ð  Êǘã Ðu9„¼B­àÉamN¨Ä oÄ¢>´ÎÓ%žŽ PC¸ZY;—&C~ScÝ‹ê#T&¥¾ _ß|i1u§êl@0k­`瓹Ë\åræŠÐ2d±Œ¡É"³HD.\ªHq0âŒÌ7!é{ò¤úl‚æ q¾"ž•û©+£âNÈÙè• u48âô¶Á•è¶ñ*ݶ4´Ë᪞âA’MñôèÞ‰ÛÐ`sGׄíÉéÇ‘N‰H‚"žWÀ`“—Ë$¯³Õ€Ô‘êXÑ„PRTИ衆 Zèuh»®R‘–nB Æ› &äݲN„„)kGãH¯Ó©öè…çÖ:RÂ\s—Õ4¤sãc P+1Ò~¤?}ågæ,}'zuò‘‚ï©5æª,”Õ0CÊêPŸ¨Çµë»ºØf:´¡4”›“’ûÄ·d1jûóDëâÖtë69¤fЇK´kjñ*rÓ&ÿJ+ŠtS6Y‚çá¬1gj+i4’ïÍÐgk8`0z ´–Óž‡Æ¡#ýA›xó~OLÃ/1[Õ i6ˆY†ØüVÈ: =ňCâJ)»úì “nSi…ðÖ_£Õ“Zh,3©œÝ»ÄÉ»¤Ú Ù‹«ê_æ:Ê8Ÿ\þþvþöõ‹a™”J›ÇšÄ/ʆ‡8e²Væ¼jÓqHšnªÒqð¶ wm¨‹pW!Z`§nÑÁ[–ÅÚ&Àž„[ö•6] ‹z ÇóôQ+{z½WçÉ}z}yq3”0)ÈY?PÇõ•«Ù8à#¬þ•^ìt<‚.UNÐØ–º¸ð±´I²¼¦VKC•cˆQϾgÜ5Íîl6[•Ÿ‹¼LVÞ¦HÌs’]ו¨¬6³z{‹füÉbc™×°{YÏtV‹£Ê9Ìß•ÀîlèµBøžj¹ rà |(¤Q5Qp(ÀE¤œÄ<·Š(<-—qõB{ ¬¬í{Çn§m å•‘ÇœxzC¹)¿Lþk÷Qàè$ è˜Dî ÈkeùçIâ€ÙšP¿'déïHß™+ß§U¶þ:ôD{~µïÄZÀ’8ïF `™ÊÌÜÓIúcó=òµŠžð{—~ iÛÐj‹²Õ°)JJ(t$(Ü{ïëí;ü§=i­S¹öÁ‰Ócà #$©õ|R¥ŸöÀÍóÃd~ÈÌ;àCõ’^—LÌy—6gg-†0gbjaz{j-°I(±8ú’$@S!Ƥô˜>åKŠ5ø%ÉÒr;Äô—¤£¯C糨=oòº É)LTå1³,«Ž÷Ð3~dË‹ Î!¯ùŽlb™¬3[²öY½8ŽûžÓ¾Sܼy œhD§÷ÁmÒôJà~Z ï§[e/[O#¿Áï`&hÐu½Ÿ.ì˜=çPéR*i›,§Ò¼* ¥9OðÒi i÷|2K›å¬Ü5³«Ë7×ÿiCE›eâíÒíÐGsÂBÁ=Á„¦¹K6æ‚™ð­ÿ¬Ì —endstream endobj 63 0 obj << /Type /Page /Contents 64 0 R /Resources 62 0 R /MediaBox [0 0 595.276 841.89] /Parent 34 0 R >> endobj 62 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 67 0 obj << /Length 2003 /Filter /FlateDecode >> stream xÚíYKÛ6¾ûWFÈ@Ì%R¢øg»A¤‰´HsàZ²­Æ’\IÎ3$%K^nö•MzÈIÃáÌ|3ÃáÓùèèeè9Ô#±;ó¥#¨…awæÉG÷C=¡n6™R·XM¦Üfbƒ¹8’Oêž@cƒS¹6%Œún©:j½g.ªlÛÔ“OóWG/)ub‡îP9žÚîÝd*Üô ,ãn¦¶. ³†ï×0ŸðH˜%'S?.½HÅiØM»@Æ'QØR‰pxôb>¢ÐòPràœÄÌwùèŸÑÇOž“Œ<çÕÈ#A,œShçqìä#ƨioFïG¿w4¦@dÚ£ò¥Í‚ž´ãˆ!s"$i‰ÿåÑHó RÙÏ4-Ííb“¥E³H«¦;Õ~fˆ­žtcFiA€ÔÙFµ±,=°@}°}á6ص™k³Bí«§ìÌAÊê_âŠT360­)$ ¸3õ}BE øû×rJIä·ñ⠹ɑðí,}lŽƒ‹Â™ÒfqTn›£ãç/ž¼þã¨ÎO6ÚJËM=ü#™Üld‘ÕdQæd›æc½Ñ@_SÁ„9»¡Â>§ç–ãrFDÄzú <£/k})yÂoýJ_0°0º’({¥+5¼ŸŠÒª²/‚F µÏ¸$EYžë޽ ÀO®µ·ÀIëÔBr¡–VÐÑdJ݆pèÖMY¥‰&“)Ä:Ss®) g±:]G m iáÑ2EN»MkP=c½Ä˜¨Oü(ø>¶z»ƒ)ÁêoiJõn¹ÌÎ,G "Çñ÷ó¹ ºÆ“+°«]×atî[K½PB2ëÊ¥îìˆZ’Ê ¬$‚¥ª€Ô6ØûtÞ‡ªb°,>Ëlœ,fY’ÊÍÙ#hüí²g„qvcÙïê´ª“ÂÂ< zÌ០RdÑ—”’½nž®34ý ¤[pÇ+ånàqeÑÊÂ^‹¥e‰ê,ŒËJs\·«=g°@¢=$€X‹ºړͽ©Ëˆr6.w³Ø~ôÀ¢(ê "h»ËÒB”³Ü™€A˜ ̬ÕTÆV¦HøàÍ"â{×”Ê;¥Ò\VŸA&Ê(¸§YÝê4.p#©mþÜh¶”‹Òù}ؼK¥ªt#ðÿÚã+ —½¸o ¡Þ݇gz îJô¸»Ô†Aî îµ¢_™owÍeÐ CÈ Â;@G§.°¦¯¡(v n‹"½@\E\›Ü=£¨'YÒ³ö×& m]fx˜ØµÀÄ®û*˜8Nù ¦[iU•»í%A(îIþ6HR´ûØÑÐR°8LûíšàôkC(]…" Dè{ÀO+L†~Q?vèÀÍüÿtübh ãß:*Oë®…& Tø9´ÿ2ð@¢ù£±ÃT̸)v²$—Ûkço§ë´j=}ÕOá²s3'ª‚°ØêsO®º NÝÞi¸gr½dÇeºTp9‘ÿÒèߤÌájn`¥Õªf· ÄØ§IuðKwé«`szeÊ÷ÍÁ¥¯°vŒí;¤|ì{§|?¡v3¨Õ2?‘Šìì8y wb+è¨Ì÷n¬\Än ¦ ýª !ƒé’|C@$ ±ŽéY£ÇÔ…6y³S@„ CHà\‰q « áúf×AÄUi*»tÑ$ÛHUÙLÍH•꺆áZÕ5tÉÎT?¾g‘¢« ¢žÅì Hæe•¦zÀ 5Ì+ ؇Zà3B•LB-¼yEhQnS[AÈïå,ÃB0pvPéuª·Õ¨!6-ÑX˜îÛšñ4³q½;¹¼rÃo,£µ¬×‡%~ aO„±ãCÄñÀ€¯¬ó„áEÕVéoiM{ÄT¹ÈR!ÅãÝŽÈYZ,ªómsÍœD£gnéô0³€Ƥ «´H+°W¼­ Öatk+k…¢S´é²J¬6ÀaâÞky6mù¸Ê*8âNÊjIM÷´.ê u$8m÷ë©j6~ÿþ×'VG&„Òïíý˜¹ØÎû.,«mÊUW­jPe*‚¿7 íʲõ)"]e­I?U$sQ©CÑǤLôjw0ñ­ÊVk|¦;UΣšp¤d)ñÄÄëJ<²ÑYñɾ^ClH‡Ü‹D] åo--œ†XC‡²°˜ÝëšÖ´GÌ‚uFáÐ~·£ŽÔ›‹œ…àõ}ñm83´®à,DïÜ-Ë*—`Ùë±MœÄ]G¥`*K ž«0IéM΄y’¬†Ö…3 cs’Œ¤& ׉Ê"ýHã ¿ú¥Ât¢Åï³w¸¾?ÒÿçÊ îôs‰ø9×?ƒå²GR…vÓ¿T`3/jÄ$Ž w}’ý‹Øót)Ìb¹¾îáwüPáv Ü0àKcEåR]-Ïõ_}®¡œæj%ÜZ³Í[>8}ý°f®ª•y˜U³~{Îõúuç$úï@¸ü0è, £êqF'#$´k³0&{ƒcŽÐ‰PãcÒ¾MeûRÓVV]H›þE¶7©ÜªÇ«²«Ç0ÍÛ¼ê¼.WYñ~‚ì.š?¾Ôу@œô×9ÔN„¨wM†X cöð±Çø?Ç>äðCÄÑ!g+W&´GG×âì?Χ"¢endstream endobj 66 0 obj << /Type /Page /Contents 67 0 R /Resources 65 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 65 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R /F68 70 0 R >> /ProcSet [ /PDF /Text ] >> endobj 74 0 obj << /Length 1543 /Filter /FlateDecode >> stream xÚíY[›F~÷¯@–¢‚TcæÆ@¤}h®mÚTÛxó”äl£`pDZúç{ÎÌ€qÌ®×Û:ZU}Y0sæÌw¾s›}v3¿ò=‹xnè…ÖÍÜ ˆ%}Ïåž°nâöûÊ!vꌈ/œ ˜]/p¿¬Fì) 2œGëQ]ÀWjêE¥—àÌY™®ëÊùtófüŠ+tCŸá~,ð\"¤å©íÞ9£ÀN¾À2a§jë"7kÄ~ §®YòÔQØäX4J¿v$†ºÒo¤HüØ3œÕÍäØiÑ8´?“.Aæ*0.ÊIÄظ„Ÿñ“÷‡Œ‡Wdlêú"- õ±"2p[z ýpדôc¡¢ûCè÷:™UuЈü[h’Õ·ì2ÇŸ¥ty×gÀ¡è{!†¨ã] '»ªN`­ RRRû` ¸r¹.oòʬF±¯Ó¸çs"ïv嵊3êtÚ|§!^à¸Ø¬ Ýþf…J”ˆu… «ÙÑL¹h‚s<¶îE_B°âüÒèÂr5„]ÔA1.-[ÕÄaã£û°¥]UaÔ—:˜KhCüEÿ¾YMAÊý^" ;;[0Wòó³…Aôy±ZoêÛÈF<ˆ6Ô¿ÛfEËÔá<â…è`ìÒ‰á& Ÿðþ'ß?"_õ9É’ºÈ!wõ¨âû®ÏÄ!éÔÙ?#ôÊ»ª{¦’sÈ&¸Ë|zé(× ‘¤žñÍŸ&‰ ”©D¸ÚźF«#ºøØ¼>ÀSÍËñ<;3 Æs=Ü!€%<vdL¦”p€ Œ¤§*>,]t\€]K#pV&Qj%{«jìÆÊŠçpœOðP“5V¢P§…1ª¶vžl*×^3®† ¡o£¯×QUm‹2þiÑW}£#b…rgýâaGX§qÔšAEËteªç–ÇÍ,*U»é¯H2 zµÅO*Pøè /mœF-KíÔdøDúF€;è†ß'Àv@Ä{º¤:¯0¬¦·´F*Øø=Áñ ìiÔ)Α†Ñq;fµjÏèf*hpÿŽé¶ðþGd€ºê3€ä.2ÏOá~ýâùhòöë‘ıCäíeI'uvZ¶†;eôâOzö¡7j²ãû¾JˆÑèØƒ)—.£5áWf{ Úó:mEàÞ†‚úòÜ&‘Cþ Ö$^—Å<̓/¢_”èÍ•ƒœô¼‹6—–ÇàyZëR]ÕÞ‰'ï2xƒlD¼¥³Ð ™<á“â<Ÿ<8æiŸ„ÂÈ£ác÷Éëõ2tÎ^Ço8Û-¹ûMž8çæðE™~IN\#·„:UëQÞRs7ÕË6ÍcuéGM-×½í2)ˆk㱺T]#5×ûÍš¾PW%ßÁw[𮆿>ý×kõߊ¾pI](Òövñ}¡Š;…ÊϱÁê’s}¯£ —7ju»Pu67öÀÕ¦7S5‰ Ý‚ö/s=9/ör›ÛÛ±¬'`ï,Óߦø¿Ü eE›ºXA];‹²l×ã'#s˜na¯”·Š”w¢Þîl÷XšPh†.VùG¶¸Þu?ÌLðÿñàcF]ÉภÂ:”*eD ã¡Á˜yÍÿ±þYQËïendstream endobj 73 0 obj << /Type /Page /Contents 74 0 R /Resources 72 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 72 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F68 70 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 77 0 obj << /Length 2110 /Filter /FlateDecode >> stream xÚÕY[oãÆ~ׯPü (ÇÎ…¤£Øt AZlç)Í%ѱ©’”½Fÿ|Ïe†¢,Êk7Þ }±‡s9÷ó3£onf—ßÙh.#‘EÙüævžÊyb#¡#3¿YÿüÒ-dP.BÔw‹P¥*è7t€+Û…’ÁnYç»°o`5šèøî\µå®ï¿Ýüpù”óLdV!?•FBšd»Ÿa÷pÌ%±njwÆÎèX˜$uG®aœ¤<% Ji‡m'db‘XO%ÁåÙ·73 `²ƒ1"Óñ|µý{öëoÑ|=‹æ?Ì"¡²tþc<ËæÛ™ÖÒ«Ùϳ4B ލ|ƒÖÖjdí,ÊêyƒÅ¶ø¿"™°¬`•ÃN7bi·yY½oàïÁ8‡G#ëh­·9TJùn‡& ò*Øx]¬y…|§¼‹a°ïhSÛñçÅ¿òý}S:Èû¾Úc`ß‚å9ЍP§Â*3cp›d%ÿ3!·”"‰} |û æÄo‡ìŠ« ›èLmNlr}Q®‹¼ú$šöî‚=LµÐF;ì‹­þPö›§a"•©Íæ61 ýùXQB+;-žV8"F!s,’2BAvúM(Y·]îò®{XO˜Â/‰Õ! „C·iöhUô{ ÌUr9¦7è*a’ý™Žc6bG9/ ¸êw+"’7¯rè6¯c 8˜.z0Ę„@)y±ýÚ *Š3 t4-1WªTÄŠŒ1‘9Ÿš¨¬=…¾È]˜7·>ÌÏh˜(eÒÇÕǺß=¼Mè§-¸ÌíÜc*”UÙ£dÀ]2Ÿ¿N%…ŒaÄÆAø²b*fã"Gê¹U™PIö»bÖÓ GÄNc6ŽR‘9p<ŠÙë‹èbÊBiJqÊD¥_f Ÿ °ö#˜‡°Ï@w컞±ìK‡o9ƒØ’ð°¡•¦*r”÷ cƒ¼Ú»ÍNhZž’èd11JÓðµó™D–©<Æõ]îå`…–n×G¬,øÊ˜×²Z"Þ×yû8ÆóMipËå¾k/—e}9ÌýQoŒ1¤Æ›`üˆØyŒ÷›Èîs³ e:ùÄ8ÔÃPhöô:µŒ™ŽÓ´âwr edEZ¡ïÈuÏ"d’L? ‚ÀL¹¿èÝ䯉òK]~â)߀ϯ;‡ôÐ9>Fz² 1¬±Ãþn ô'u„,–¾¨ý ù=îú«« Å¢A±ŠŸ6/ñDY=?ü:DäΘç€ßH,–úm€Dì<ðûM¯~óÿ ü/ïèŸÏ~„üÍi;ó 쿘Ñ󸟀žÙo_žâ~GÀ?¨àÂÇdÈ'¹³ŠD*A4eE’2x*üb`,cÜÐõ&1@}P±¬àÞz‚ù„‰Læ7}äkA¨NC¾#hq¢Œ¥–ÜFMìù±ýë5нjjÄ®Dc 骘°2è%é82À®¤ó7¸ASåÏÁX%Ã>›ºzä ‡Z°æ‰%µ°“@ ›ù†¾Å ÐП~B¬X‰4ò®$ÈÒw彯BRÓÛAY;®y›o¹(­“Óµ64tw¯Q•–ö®ú¦uªËÇ•ƒ‘þÜ#9 “®hý'6h5Zݧ-øëK3“S•Âà»’=¶áõŪ¾þ{^çwEû—õêš_‚p=èd·‘˜[õºkæ)ã—Kùf¢œ4>IÊ(Iùȼ¢®ÆD®Ù)øƒ½ † ”;çJèa² §ä[5{u4IM4vO4C xµ.WêœyõJð?¯¹˜…ßcf¾ûpÊ$ ú1>qZ#ÌR-9ºóŽÇ”{FvKDÊÂKªeì¸Ûk·%¿!‚¸Â'])Šuó5øêK·øŽ‰h€³“ªáv„?§>»¿tŒ¡âÒä)ÃEÇåß­ï1Q:JÌ;n6©í{W7d«Gò[³÷µB?©TéÆo¸ÝÑÛ€Ë`¶¾Ï|ñ]U bl߸Á½/><¼ãPÍ|žVG Êë2À½bO—žªp‡KåŸÁ><\_tŪ-ú? X¡@Ÿå¼¥™È"Òš§÷x«ð—ÚS„!«GHg:È4Ê«õ¯=ФŸ=¬‹¤ÊoÈ[>ùN‘è·nà„ƒãþv²$¡X9òþzyšÚ˜Ç‡V"ñ}·J†6›Æ­»†ö_,Àþõ$°×CPg=\aN²Þ/i÷’{°ƒÚ8ޣƪñY“p¶ó 3¦\Ú‰SµüÏI$ƒ,Ú|n2xK$ÙRS;Ý.e”¯GíÒ%GùÆÃ-·å˜G— ãöè9|!q|áÄvé¸Ì^¡5´î—¾U\<“]ªÈß@ÿ ¹V$0endstream endobj 76 0 obj << /Type /Page /Contents 77 0 R /Resources 75 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 75 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R /F68 70 0 R /F59 24 0 R >> /ProcSet [ /PDF /Text ] >> endobj 80 0 obj << /Length 2527 /Filter /FlateDecode >> stream xÚÝZmÛ¸þ¾¿ÂÝ~¨ D\Q¤Þh‚äЮ¹4Ý-Ò|àZZ¯p¶äJr6{ýóR’mÙ»í9EÐ/6E‘Ãg†Ï ‡¤^]_\ý3ˆ,Èf×·³TÎ’8:ˆf×ù'ïc;—^9÷¥W-ç¾J•×ÝXоYÏ•ôn °Â&¹Ùø] oC¯¦Š–»`ËESnºvþùúÇ«¤œe"‹ާÒ@È(™4܇¹ŸzÅèy% ]W¶O4ôÑ¡ˆ’Ôvy>÷Ã$õä¡hP*’qßì@L(’ØIIðõÅ›ë `²C‰L‡³Åú⟟>³ü"˜ýx•¥³{(ò,›­/´–¶¼ºøëÅ_z>ñGR^X[†€QdzþuÂ&ÿWtÔNŠ$tFzó cÖhà š¾°º‡:Á‘í±6mW4¯ß½¸\T/þl*³,šgùâE™fõK‹z}ÉRvðù±aÎ|™Àò4| „¶6Í/€¦GÃôtw8™È‡¸`*,À˜;¯à&H3h?KÕ@½Î<³À‡E½­æ!HäÊúÖõ†öËÏq¬¦ æ]ÝÀÓ7ªþ7$á%üôz ^¾?$ƒA@WPË— Ì™‘z4’ÁáíQ¹å2aEØõvy‡U æÇ*ˆJHÖ¬l[`µíCî éMM­óòÖ"Nœ·AÃEÍZ½òPIÊS+«<Ôå%”rÊ?ÌÁUÅÜâÈ{IàX÷u½mÇÊ1÷Ì‚Ô/Zç½J“5YJÕXSÕ8¾ÔæVpõ`UxÕöÖ Y¶‰ÅÉÖ ‚`6i5fÒTôÃP„QJÈþÈd‚æ¶4¦ùûû ‚‚;èH!Ckmm XIç¦È­mÑ€feu¥ ‚67%ê’󃫴4ì¨ÚkJ~±§ ÿR‰%HÓìÛúÿûû—m±hŠî›¹zDÜ”³6ò6¦¥é¿G+ÔMÎ]£Ãm5:n:Äx(+Ëzl°*LÃÕcÍ׎(z¯¹àm»ml‰½*"ó4ug#õ¸; Cð(¥É~øC°18óUÛúÅ–¢Ñ–ü¬nÊ_ K„¦0y?Õ¤Íïì\d3©…‚ÐŽ¦Ð´jæk)Ò0&‰Ë0ò>bGw9èxg!ñÂIAJýú‰Â¥ÈÛ-âT¡P!ϘÐPZÙo+ìfù좃 ¤ÉÃlÚðª£lWÆõ-¾`À0’ÇûûÖ÷z ½cɳE±È_Ê®4+”ô«›§8´^Œ¼)G^xšŽÚðbÛ’¬åÐûD’¹@ЮoV˜ŒljÔ¦+&´È"¥. ´ØÈÈ,xפ٭vÛîS‡쯤€¤11ó<|¢Í½EÄiØ‚Ãÿµýdƒ+…0†åÂõt¬ aCï†Úý`#µ‡Ò3•³‚ø7'Ë ; 6Râ÷>!Ö$}¾çô¼É×|×vé\v¹ª—£±Â}È1¦žþÀÔSð{¦Žà¿Ü‡Œµgù=g*2|,V±)o9ü›G3S¬†;kOïY;¿ÜmÇ; ªËò)T=檧0÷Ta®j^xÈÝaã$[Ï‚ô{ޱo Ô#lÅ‹/eóäb:Æ¢•Fç4ÅQ¾žƒ¯§à÷|Á/¾nhÖé ÖíÐí‘(ïò¸n8l:Æá3è‘ÂáÃÿ/½ cEÐ+HEÈgb~9Å.¹Î Æ7 ×o\iÇ´P 59F ÙX“àÈ7˜tÏ·s$'í÷?oì%¨=3x:yˆ·{h7y™w¦ÿ£ëI¼ŒŸ¸žtWŽ@pP ù¨æmÜ·wú[7C؍ІnƒÝ‡†?Vx¶»“i‹ñhÃÿtOgÜ\1õ±‰ÔºkëáCûiȶuÇ‘# ·µÝ:Áêyßß÷:Œõz¸@˧>wÆ'­ŸšºîþXtu‰…‘‡ŸÏå)ëï}âó±-ñ:[ßlËU‡™>àí9ëÉ’ºf»è𫃉‹Â4å;€•¦¼Blèî•’Á•êw_ÿ¥üGendstream endobj 79 0 obj << /Type /Page /Contents 80 0 R /Resources 78 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 78 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F43 46 0 R /F59 24 0 R /F31 30 0 R /F69 83 0 R /F68 70 0 R >> /ProcSet [ /PDF /Text ] >> endobj 86 0 obj << /Length 1882 /Filter /FlateDecode >> stream xÚµXIoÛF¾ëWèP `Qœ!‡Kœ¦)R´i›8@‹´ZID¹•Kl÷×÷-3$•°±Q8qÖ·¿ï½Ñ‹ëÕîUè­…ç&^²¾>¬c±ŽBÏ <µ¾Î>8ï»pòÍV8Õq³õcßéOƒ;åÆÎ <’¥Í¶¯aW:5-t|OîÛ¼é»ÍŸ×?ì^ ±NÜ$ô‘Ÿ{®PÑÚ#vo7ÛØÑášrrb]W掚îÒUQl®<ßle;âsÒ ”áxì32ÒBK%ÂíÕw×+ `²ƒRnÈõ¾\ý½úð§·ÎVÞú‡•çúI¼¾…1Hž$ërÂŒ‹Õ»Õ¯#-ÙΨ¼@kƒ®çÖ–`툭fYŽvVR9•¾å®úöþ9³ýežé´¸»€Ñ¾.Qj`µ¾«‚äq4êáò}§Ûî≈}ßÖCódÔ¾­ËfèO=šÞë¬L›sZu{ü?Âí«Ë7ú®Õjý¾Êï^gOBuȳ˫¬Ì«¼ëÛ´¯Û‹'õ’¯ê›:»Zº`Œ—u™æOIƒîâqÑ þ –ýiãíߺë¿_Ú¼êyös£ÉË_Ë‹tÿ×Ð|u6ouSä{©_ÍÝ|™ Aú¨ÀS&®ôcbzu衆h,E-” ÛŸò Õ%)Cü§×ÍLƒÈÁ»ßÈЃe°^WÏà·ç…[ÜM+üí Ùšw&NÍ ëEמà-É|}Zô§p“(œÜùˆJñ©W“ÈM„oHh6_{Ò&{!úÖUaV¦HËxÌßLÿበš|«‚»6™øÎ¸qgâÖVŽV~3”[)7Ž“yß`£5&“/;G{…¾!7i:#ÁÇ0ù¸Qy‘’?5ïPPàm 1œ8àþÐ^ÜG Cš"– “Ÿ¶kX9¼éC:¬#ÎY„b°êwŸA™Z›Üý<.Èu¼–3S0­¨·šÂó<IÂù}ý/&•ÄáL,žÅSZÍ¥ÜÈ ÃÛ¤¡Cÿ2vã 0Ѳa OèªÅ¨U¡’íñ!"ucòÊ(÷jÏ2 ­ïÒ²)4`©ùN~`FP!½æ¸Éa W”ÍMmtÞ^ì`(·ÖË=®EcD)ˆ( §ô¦Ð¼Ã‹èôÁÜ·»ÃrI d‘b6;3Ô±Œq„Æü™ v*>/åp¢_Ä}ᮈm‚XÓ¢@Ðð,Èdz7iGÞkÑŸMwe±ÍF‘Ì!órêB:#5B <§À÷mþψõ~ì` EÛrŠc¢E9'é†Irc’¸GÎkì vƒØŠ}Þ ¥4•}DT\íùÌ<ÛP,å±`ºSð#¬g¼EÒ)9I§|Nù¼¥ÂÄ4AuYÁ®ˆÖ=_…—Rn¢o›l<æ.R!ÁS„¢ =.¶GÒù†?äáû$à¸1vL‡©ƒ4£oÚ=ii5i›–ºŸúL9õHˆ`£úÒ¨/Gõ—0²Ê³!²Óý~Þß½~ùÝÕ¿íl„õ5ôAvæîëê°l[KkVÅá(ŠtDëÂ£Š¡× ½ÔóL@Ǹ{@°ŸšJÚ Ì‡ï„ù09ï•q…þ!‚/&ø30dÀ¨kr<3FÄg…/€ ²5ËfþüŸ_†ÐZÇ`HåŠ ~øïßõµüŽ¥µ£qÎdò]ƒÐ9ò{^Ä >ñדjV•AcɸN΋âPyçÞ Aœ½pÀgÑRÙæsÁæ‰;ßRîd\OÌÖ lÍ¢°T=š+5Jìv#ïYI-(òŽç1Á.‚@GÌ6ìðh¹6‘Å}æ¥ÒF¬òžÙW#.\eÔ¢a‘¬,ëg殥ˆ9©ÄƒšÖô”v³@Ø¥)¸žå#šìáÝ|ÿ„¼³z²¨ñ%*^{ŸL³„½ÎYõÑÚ¬;é¢xBÇÁ/?5  gb#a—é»±ëf×~((ú㘣¿IÆÄBì|Ï"Á¿Ÿßà:endstream endobj 85 0 obj << /Type /Page /Contents 86 0 R /Resources 84 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 84 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F59 24 0 R /F68 70 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 89 0 obj << /Length 3014 /Filter /FlateDecode >> stream xÚí\[Û6~Ÿ_a"1G¤H]ò²Ûlšf»m“Ý™¢ ¤yPlÍŒÙòJžLòï—‡7Q‘“D\ÀäÉ´D}<:Ï…”ž^ž?OãŽQ‹Ë«EŽY#³Ååæuô{¿ÄQ½\áhw½\%yn*hÐÎl— ŽÞòF]6å~uhùYµâ@//žë®Þúå›ËŸÏŸc¼(P‘&p¿$fÙ"·û×r•GÕ{~‹jqëv§®aÃ5” –åê’'ËÉòßÍÅpjºÝCP–j)œ>ûñò ó\BŒ¡‚’Åz{öŸ³×oâÅæ,^ü|£¤Èw¼Í‘Åb{F)VíæìâìŸFF¼Xe\•8ûC±S N£…SЏ(æRdKõKYñ­Ò £"KAÐSxò\Ö“ÏPÂÏ¥YŠb*”ÒîÃ#°•ƒ FÙÂ’öå°¤(?2Lr¡mª?cLwï00‰) Q óƒLÀÜxÓY}(·@ƒ=¤:ÆHIò,F-Ì‘&)"4+òª¼|Nº$‰Þ/Y•Íí=¸Œ³!åô 7£BØ .+æÒƒd(æ|""Õ{Š”"š~z¤„_žÝ­J19_HÇÉõî*°¹¨Ë[|ö‰JøI£?jà˦]’<ºëÕ©õº½ÝÁ‘Z®Ò‚D/7òJu¼±‚!ê9Hú„»º§ÃÌ˧ú]Ãû}䘸ü¼‰m_PG×k¸ C“7“Çù/~×ún zµq:€j1a(£¼9[HRÌ”rªDÀ)*râ'BB+RI„;9ó‰àÃdˆ`:&‚´NÊ€`‡àØ’*m÷n)¢Êôâ®Eœ.×#"ðMÜBsÇi®ðÍ\2W–ˆæÌo®1\.Ûªž6WKÎlsõb2æj:2WÂͪÜÁ/Ÿ&¥‘Uݦݖµ:x€ùò¶?¨®÷fX4a¯Äî ÝŽÖ"tnŸÏª²qFßɶ^Z5/Ãe›êPÖMï²öúûz­=TÏø]X’y­eJc"­ýÖa태Ùồ¶v”4@s–òç¶ÞŒcPax.[ ÞDö^ü:²?Rª€Šã8qöA šÀÞ Qö6DH:ãΔŠ!aÚh­ói‚«šE%xº¦|Û8ƒþ0C±é”Ÿ RÌC?›R®&ó¥ÕµƒMFÌ|2y.Y¦¸t}Ì%7‘xänh4Ö¦p,^8°ÈÐÈ8E¢ëcqל>“Y¾aPˆQõG4F)ýäèKõž"áÏ•&~1nÙq&ŸùO r¾¦“áªÜÀ3McUÞLyUÝÉF)"+êÂøAQæL!?PÝEÌÄ%ßOgÎUW6<^ƒ’è-…öM%b¬J†le§iÞằܾ—ÿŒY,#¼í¶œJEä}AhÙAÍ/ÀNʇÐôÀyŸ® éÇ èÃ0yÌXìä}”ŸNõD=WœŠd×K<~$M±ÔûÆA¼AÎ|ßåÃdˆg9/I>Þ¸i·:倨¤SéJÛ}tÚtˆA 6톱é±nðséºóÛ^•Ð\ÖïàÖ|x_³ð~Ïñu/„–qôʨÜÿóàwNWúIæV´ Ú):)E‹eXU€ûiJYrfSÊ‹ISÊ5M©¦½®U²ßßTMã"Rè†H^ðšHG¼?+Štçïú…‚ 5ò"Õ²‘ ý"´Š£‹)•j„ܱ|Érä¯DЖYeø³Z;Ø¢¥ÌçŠaŠhš)fê–Ñ~%ã.gÕ+ú.nü†,c… ²|Wn¶šÜ·:[©ºïœÌ™yà²aY°æ'—N c Ê—P¥jÊã`S?eÒå8—Oxë Ì gv©Ú‹ÉÐÆuTªöÆ“fÛô‰CTrpRrâÁZ•éÀ‰R¬JÞO–Öí¾®´7¨âÂóþdJ⦴÷Z¦e­ì7q®Æ„PÚ·úôƒ>!Éaþ´„RŒ¢BçwäÌ÷ >LÆÄ-PÓžA·´ÀFuK„prS+¹ú] §nätÝú2ò c¼ˆo´ÆŒÌ^ä Öçö@‰Ó‹„=øhãI,ÐßÛsAuhwÏ ¸íÌZ =ÉõO({ †M üªû•ƒqƒœùNŇÉ0ÎUí6PëJHôëGÙ–KŸïÅv’w"#¸–'„…náøÛfU¯ýj_öâèÝFvá>ÁU's…|¤Ob¤‰{wÎ)!”öm‰ÿ!OxIRÿŽ—O%jGÊÓ&nÉ™mâ^LÚÄmP¢¨Â‹Eër§`]7"º¶˜Ê®0½žÛ^&à7²û_–+Jó(–ÿê+iª»öñ„¥c]Éßb²tf1AcL†!(Éؘ(¦v±½¶.®M Ã½ùYt,ÕGëv.? E¨]0DÒ‹Iz ÌzÉÅþÏcTEŒò©Ò0jü|`T|'ɨP‰LBc‘òzE)Êsµ'äoF rf'2^L†Q(O"SÊð©<^réoÊι] È`«ö ÇXõ=Ÿ?§‰=n†0ÃêMŽÝðˆÕC¶dW(LÉ! Jý*Ê”†(£ê<è«wr+„–LjäÕ’Nl-‰"Û…|¼b‘Ç‘…yš# ™¢—¼ ?’¨Rê3y9óÝ¡“!¯Ê—$…ØZŸäêt}þ+7ØÂ>h]‹Íó¢¿)AÀ½©Ú7Ê"Æå6?ëCha`½O†õã‡#f¦Oœ„ p œ !œp´œú ú½,N¸˜ïIÖÿë!©÷2/NMT‰ûÇiæYrf»M/&Ã< ÔÈm>{y¡Ü¦yQ¥Þk—ÚÊ_Ñÿƒ.ˆ¯oÊÓêê \~uÐ+ÈP ½¼ƒ5ô?Qo0jw6³•Û‚à5lóâ5l³ðJ÷o”NUû5Å€Hša¦é¸tßµj J£÷ÿˆ¢îxÙÈÅ¢ÃXäfÑ=%G¦”ßœŠLÓ"S¦ÎïAKBMÕOK(Š“OŒr§ö™Y „¾‡YÀ§o= Xú“À+k¨Îy Ì“¬ù–¡‚ø3T[÷©Êž^8&‚AÎì ׋ÉL(3PJLœJ)÷¶ fâó¥Ç(ÿ¯¢:žPƉ?q"༠¶_8Œr3ß(}˜ŒQZ <õFØÔ=`ˆÃ"§-ÝÉÚâéD1A,ñoâ!>Ý#MñW‡)bæ>HÆL*‰Á˜E´-køPÅ›ùÒ”ÎàÔèíyH¿OÃ5êø† &zÙ&ˆ †€Á§0ŒŒ$™ï‚æÇeS›5fãL4`_õÒ+†»$þý7ö€3µÿærš-–œÙlñbÒl±A]‰äZì8(ÕŽÂkx+¯Èé÷Dú^ž=" Fœ Ú0ÄñêCçè!­HšÚÌÑ£ù«úŽPÛ]»hÿéÑF<—G]¡jʧ‹”c§T,Ë2/áë*ú YáéÉÈÒhôRcLm»š|§VœÑ•V/ˆºËF7ƈeºJÒoß6ðA:˜ñÀtï×9ò‚Û¢.t¨Ò.LŒ{¹_€ñ¬«à–“¥('òÍÅ}y­LÎóæâIë©€endstream endobj 88 0 obj << /Type /Page /Contents 89 0 R /Resources 87 0 R /MediaBox [0 0 595.276 841.89] /Parent 71 0 R >> endobj 87 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 92 0 obj << /Length 1878 /Filter /FlateDecode >> stream xÚÍXKsÛ6¾ëWhz 5Áċܜ¶ÉL&mÓÔ=tÒL‡2)› %*e×ÿ¾»Ø6eÇz!A\ìóü¾˜½‰Â¹ E¦ó‹õ<‘ó8 … íü"ÿü¾_È \,e°½Z,u¢ƒöºÀ† pd³Ð2XA£Â)y¶[¶5Œª v{úg^6å®Ý/>_¼;{#å<i¤q=„BÚxºå>.–IPÜÀo6(ÝÒõ–ÿ±ý?F 'üË«ÅRÅI Š£¬ŒºiÄ(G^JŒÃ³/f:ÀÎÖŠÔ¨ùåföuöés8ÏgáüÝ,:Mæ·ÐÍÓt¾™#¹]Í~›ýÚÉX‚å@Êkô¶Ño§±Ð‘™Ç <“Çÿ eÜéÚÏäi›×htPxklÁYu‹m\g •7ø(h4£¦Î6¥ $|ìü–3UA ŽT[rs º¥QúͺeÛå«`]7´Ðíu½áÖ‚´F•nQ½l‹OVÛ¥ŽÆt³Šv¤9ª ê6nŒçWõU }[6'Û»A'·nrÔ”…Š5¼#¡Tä¼sô×?{^ŒÄyßÕ_؃Ògäiou8’ºß¬*Ìÿþh²\`• –¿ßÒÛJÅ~ïé}¶*·gë¬ÚÜÏÎòâæl{¨*î~Cïï¾ãïôÆEÿÊrˆ-é9ªhÐS[EÒéi„h("¥ ¡âÀ×ì©´›Ò×yFU~À*,š‰¨£ý‰1ɽXÀ?ÀÆ œÎBÔ–;./ë¥ÀK[HŽ?Íháûº˜ð¾Œ"a¯î¡÷ó¢šÐ6IaºñÓ/q‰ýkÁƘàüfa£ +«Ìá¯_ïZB!.³ ‹¦¸2‰EÇs¸¤òiÄP—!j?àW©…µG¥¸BB-œl@Wiim$ <þŒ+75B[ ŠV†”ÉÉ÷­T:‘6óÄÿ®Ÿö¸~JƒŸäH½¼@,@¸+Û %4"R§R <2àDúía…ENWØMjžˆ«*±‰sܲ9Ð^Ô)ú˜b> ½-jÜz¤€¬Þpæ%UÔëe[7wGã}†ñNÿgñ°EÀ{<ÞZ‰H"/?w/êñ~L1ï^ÏŒ·‡M¥Aëºqcûý8ëüMËqk Jsð†3V1kÉꤳš­2BêÔs§Fµ¯ŸâÔ·‚¨sG­®ËýÃâCŽ]PqÕhÅfÛËŽ·qÞ\÷RÖpÒƒh9?ßâŽCóƒÜ³Ùð™@?Ê£íd²Ïmzž+PÑžŠÿ\·…+ ¼e–4^0–0•Ë3$W¦ÔÏñØ/eëÏ0ÃUÓ]ïÌ–íßõpU²töv™±ĂחÎNn<žgmÆÞí“>ó~^ùS~8_fÝjkh*ñßW#¾¯™ïÿDçóÜë×w£Ó}F/WÇ)ÿ˜ñÛ8àZƒQ’¼v©C®Bq†Kt´û"ü&òŸù̘üÛÄçÙùE¢¦Èÿ¦Î§ñ) “#äßÊøùß“@…‘bÒ!miX³ªôª¶.”`½ÀA€n_ä]—ôcT´€Ãý—àôüáàð€–C½ÅƒÕÍÎÅ¡¡‹ð»ÆïXœ™ ÿ”Ûu=á ª'ž<ñ2~yJ_HÛÞ„.²Pa{êr°vBÅÃ' Á.‚ðE*¹è‚à(V÷—Ç®Kt6ê µrÉVШûn.Sìí|Õ°hð–Óg_T=mðc,ø¾‰:Ö]ü¯±Çí+qp»¥p*âG³ÉZ>)‚œªÜ·^+ÎpˆÚCís¢»Ï±þÞÆY^|E[²–ÇÎQ÷ïßÓÇøcûbp[RnéZ†îïÿxû‚ýàþ¥!5 |êˆL´c|Dvm÷À©¤HÑr§H„6e|Z08Az½mjt¿Ž-˜…%]ï˜-Þ5¶Ó€7¸ˆ"ìO2àç9!‚=Ýi0È]¹Õ¾å0ûݽŽkPšo½j·ÔM]“/¦|‰ºéýîÝÇ÷Zc**“®"ß+p·>*y¤Àã#+ÙÇý¾¢AÜHR!Ã1˜¹qí.黄ÓG¿"ñ ×UúY×UW´“ïNr_5Ô}‹þ¢?¶Ù¦È§€W'BÅ~vñ˜d‘Æ]ûÒ,Þÿÿîàª=r6d]heŬ«|ÝZÊÎbatôö²c]ÇÕOºU…S–Ä3vÙŸ.¤>Ó¡?‰ý $»endstream endobj 91 0 obj << /Type /Page /Contents 92 0 R /Resources 90 0 R /MediaBox [0 0 595.276 841.89] /Parent 93 0 R >> endobj 90 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R /F68 70 0 R /F59 24 0 R >> /ProcSet [ /PDF /Text ] >> endobj 96 0 obj << /Length 2732 /Filter /FlateDecode >> stream xÚíœ[sÛ¸Çßý)4ûjÁÄ$üÒ&õºÞ´ÞÝÖÞi;Ù<Ðc«‘D•’sùöÅÁEet7ȌƳy E‘G?œsúõÍÉéE‘pŽD.F7ïG•EŽXÎG7³·Ù/›1Îæã ÎVwã ­h¶½oà€eðÍrLqv+pɬ^O¶­ü–d­:±Ñ·À•Ón¾ÞnÆïnÞœ^`<H~V9¼åêçþ1žTYóQÞÆ³¹úéveîáîF/+sËÙxBÊ*ÃMËFq\ì.{d† ²°VJøúäû›,OÈþPýÀ9ŒŒ¦Ë“ÿž¼}—f'ùèÍIލ¨FŸä±T.ÄhyÂ6Ç‹“ë“¿ïlàR ¨F“J ÆŠ'ØÉ¹ÒvÈV>š`Š8A3ê¦\šÑGæê¾•‰¨´¤‚Ù¶Œ½d¿8pÎP%بà%Ê1QÔ®·n8üŽÂT "Mz»“9QŒ‘äpPÌ.„îÁ‡  ÎT @£Â, ž° µ†<ÐÜ ¹ñœj‚p¦h‚ƒ3Ö g¿k•Rœç4Èc …G¼¨sQÊ8¾à1Lj¬;í.Ä£g*qa–GOØ!ïÀIîñ„1‰þŒQýÆ~¿*É1“(Lì‰ “ŸO¨«« Œ…@ˆ0yU"RRÝi ÂèLýv]ƨ0£/¬žIê®ôÊÍHž­””„~‚/DV«ðrÚ>¬ÆD¶p²p¸¸5W«ãN§ùþ8&2Óîê…9ù9ÉzÑL #<ç"–êŽܱ­;yÝÚv­ºm£‰û5çù´U βžèr­®¯·ÊÂLÊ‹ppâ¤èk7qb}m&ΪU“—œçÁ¹“Bäñ,GP„ùDRŽIñ•V¼ä•˜Ä T–Eo'ÀÚÐ(:ÛÏi9>ÆQd•E<˜âÒóUDôFñC#èì>Ï€JzŽ TœbTUfáß×0g*E@f×0OØá tÑÞÙzÃæ¾Y,‚‹B ñŽÆ˜xKc¿SÕÚvz àêôÃæ>d ¡Ç[áò모xÄ%Ô¬§?yt¦Rðfyô„æQ…Q5ÄKíj>…¸ήj['ißÛtH¥ÒÔ@bÇn‚†b"W**¾Öq)ƒ ¨µñœ"Q™…þ:D–g*Yqa–,OØa²T$ å‹n€&Wv •¢}ß(‘&ý«Ò¤¬$ˆ‘Ú9Êi¥ú9”3• ý‹ 3@ùšÕLÁ+žÝBöõE«¥>«$®ý0¯u§¿S-áüíb¬É®ëÍæ“οä%L%‡êRK+|0 >Nþ¤ë^˜U’½Zý‚4HJH)ÁjÖ}÷Ãú„|ë¸â<Æ+ÄÊ8DÚ0!I„Õ™Jáý¢Â,¬ž0U«P¯^°/ ¾~u%ÿ{å)*ë Û[‰Ïþc Ó­º °­cÁGf)zœëjÊ*£r¸Ê*còja"¶&H–3• F…Y²ûîïÈ‚?˜ç” @J°l– þ^!u¦R¸¿¨0 ©' J½LNë•Í)¤„…µ^Ý™`ð1ƒpöã c<Ëõ§¹ U2òÒ<[Ò¦uóíUÁÕÛ¬B¦è‘]îí“;ï”~ʘ“È;â8”VqÊØÎK„³™¼±í™Jà€ãÂ,Ûž0öô–jeße*[}rŸsyêçòlmn€½ZmÌgöèÈvo©“rR&Åc¯›!ê+ò”鑤SwÓ#Ú©vzô;>=’È;âÈ—–RZ5°‘–ð¸EoŸ›ü98=œ©®?.ÌL_X$ï¯u.Vïo»ÙÜ×]ð r’æ80cÍ1`>îæÓ Fýfs„96»eWnS®?bêH_ñ󹜙‡ìŠ j·û2ÃãÌ|ݵ NttõÖ#|‚C ,Ç,þ •2PÍ™åGo) nô,>ËŠ&e%*Ä@PK9F%/u—=›3•³E…YÏæ ;´faöí¶1›\ÍbßÊŒªÊ¦s™ƒ™ÀöÓ|{ÿ¸ÒùT7˜¢íãXÛ-Æý1Q/Ï‚§Ð÷ûCä§Œ¥¨dñ‡È”–¨ÊEoì".ÈY|ŽOë(¨UEJàñ”©*~ô@ÎT f='¬çκ6±ÕT?xÃÙ|mã®Vÿ¯®ÿ¼+*>lM8Ö®üÏ!—“¢±ÛXc-¶ýApÏ"Ûå²]!UDÝ)N!÷÷ÍHOJÙèŠ A¹@³ÞPF<³ø,7°eÿ <Ö%ô˜zÑEÈy¦¸ ¸0ã‚|a‡Ó»uך2ÆÂ¾J¡êÑú}Ÿm«7JüL’íàŒ¶ÈÀù¸§÷3<&œ%ÊðŠ ›ï×ÐKªÍæ€1*ç }¢-U¤ L¶$ý½›lÏÓÅ8àñ™T1\ZŠ\œgñYx ÏQÅ ¼¤¨³oŠ\]œ3• Àf]œ'lçâ0«°öqêh¯†¥ÎÕûsÕÙi«?vêÕo8s«^ÆÝ(ß.æTuöÅÛÏ/o~çiÿ¼þÛ_x'^]fŠr°ÇzÈÂÞ9åãßJ‰ÿz>…ÆãÍ*-d Tl ƒçž¦”øCwg*Å’fy÷„©·5Ü·Þ ^zƒ·žêxüÁn»ÙMÑ(‡h¬QÑ~gÇ($‘wÄe7BÊy Ì9bbô7A:w–RÀ“eÙôd5«úváŠeõ“w¦Pí苨¶ðõûr¾âŽ9Û‘¹_ŽJ¾DÚÈK=]ás¦RÐfñó„-L×nV/tÕà/¯f3õ²øÆþqóÖü}S²P›M£ÿÖ… ¹²Æ–kžø*X’>p,ÇúÀÂÜëéçÇ[È,^Ö‹ùnûcd2îxOÑ‚#Ë|2/6ÙJ32E1ÔMxÏTàã ð¾°÷*UWZëνçëqo1@;ëleqsèµGïÉo³Vó¨éàiHŒõ$Íß±m¾a}oX&¤(|Öí\ýÓ¬]Öjs1j»»èIä§Œ*> endobj 94 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 99 0 obj << /Length 2915 /Filter /FlateDecode >> stream xÚÍ[[Û¸~Ÿ_al*1#Þ©Ú-º‹.°)º™¢I4¶gƈmy%y§óï{Î!©‹GÒ$¥˜<Œ%Š<üxô •ﯯ^ÿ`ÒOY–f‹ëÛ…ã kR¦R½¸Þ¼Oþ]-y²[®xr¼[®¤“I}¿Å •à“ÃRòä.öØe“ŸVuOERPCå‡`Ïu¹;ÕÕòãõO¯à|‘±ÌHœOº”qm)M÷Ërå’ío0L';šº8†1º£ÓÖ…!o–+a]ÂŸŠ†EinšnOÄfM”bññÕ߯¯84€>HZ³L‰ÅúpõëÕûébs•.~ºJ™ÌÜâ®y–-WJñp½¿zwõ¯F·À-VBvÍgÈI5a’•.V\2­G¥Ð˜¤ø+ì¬.…¬2çY€¦Aú)ji)ÀSÅ\¦Vp˜“~ŠSݾ®ž¸Ì˜‘‰¿^ö >¥™¾À·Ù~H¹:"Æz¥´ŽI¥æA…M£aVô@nÿ›Ð,Nh0ÛKŒÔž:9F¤’6z±òÃæ L2÷Rx,³g¸—ZfREj[ÝŽ’®5é&EÒu€U[|›5x+ý"\Üž÷Þ!âÍ1?P§?VþþìÇ”£cE-A§V Ú×4¡üùñ-â#è{Í^AËàUói‚šL2£W[9FÐŽ¨: ,´ l˜ %„há’‷*9.E–œKhº¡ÛQvβœ†“Ë ì¼P3áϲ1f΂ï¸Î™¢¶±š%Ÿ!¦Í˜MרÃ(1[QssX$fØ01–Â&EùÉßa”¼/0¤o¢ºäLY'ôC®Údڛβʖ¯S«Œ|íkŸpóøo”¶sÀ|ÁßÎLöL¶iŒ†|Ü+î~”¶­¤9h;‰+Ò¶Å5ÌÚûâzºrÇí—ûÕ9–ÕòtjY‘§=mÓ:Dü7JÓ9P¾ä¸¯,³Ê=CSÍ™ãÒk®åi+jžN‹<í뵦†È¹Coz[”‡œ6IÔö!Õ)n›Âí ]•'ñÆ»_žàö ®°½"’Ã0>Jç9VßÒyjõ‘Îý·Bп«ÂRŽlX¥äwÛïF>ðœ?HÉž£·´Ì_ûYU£ôŽ‚æ ÷¨Hí¨a¼ÙÞæ´íªý»Ç’TNïû~”¤_¿†–¢ãkˆíë•@¾¾AS:¾þTÝòëAÎIÇ“T*F^›Î NØ…I˸ 5_/Lò_ø Õë7Ë•R*ùç)x” •æoKm’|·ï Ò"½urJTÏÓ¶;1(mců:Üì±" [îrw¼-š`; ÓLÀË ý×”K"˜Sý¤J”j¡c~Ÿ×¢ä,“â[†­i¥­bÚéáw‘  5o¼g ƒDtÑ÷Ö„MƒãV2#]xÏÕñTÆxjç…Mƒ”Z3åTä3uøMã…xÈv³¦äóQ&´Âì-°Tr ŠÙV.£ð½Âˆò2Ï ¼Öåö•×{›Çí¿ö•:ái*Fî g¶“Yý-ÝerÒP„dàœÆ6§Ñ ZAsøÛ)Xt€!Åxòö¢2â÷§U,€ç ©ü™v¿Âßóv”š3¬èøÙ¯!±j:OL3&yçLãÒÏÂâTãŸÀÜVå„·m'œƒgSðžµ hÜ­ÈLÜ2ÀµõþÆ··OŸwâ>>òœ\€‡2¼QÄRãt·CúhX:‡>Zz¡aÚ{¡Ï{Ð9~ªç±,‡7þÁ__"¢FPýïV§ é½0PìÛíƒïtÊ«ê¡(ÃÐ7þçOþßÀ¸_¶”Q¯ãçÊxJsZ`8ˆ£#S°Š¾ÈÇk™<ìö{Vu ¯ò:ôóǨŸbí;QÅ/rÿC€ü·[›Ð#ºy¿ó Ci—¦"ÑTðŽÜ¿ç?ƒA²uío/јýqþÙWÝ}# ÛZÕ„˜§z\—dMyc¬‹º$¸ ¼Œ–©Ò,Ù`{¹¥ ëíS¥ÁÊ5³Æ•ÞûA÷­¡6£sT&>]‡Ó¹õ¾ñéz«ð  ã+˜rÒ×O¹+µ÷aÅùÏ£©¶e5@ˆÛ¼©Žßà”Á*D§{š¢“tTi_x0Œ)¢ÿ*dšÐWy{t[ô&ÐÐðOáN9*£Þ­Ï{ºÚÕ»mâÆÂµ¥jlì;K—íTÔ3i–³—AúÂVï¼êšx{DD(=õðˆpü}Ê‘&5ð–^ù@™û¯Iú‰Î‡”ëü.|â]ÜÆ‘÷rˆ¼ØXŽd Á™q?ðþdâiòqèå*J|OÖFYŤ2äæDfw˜¹@äU>Êê`ßåÍâ ÁŽ!üùÏ+,ú=Œ¡Þ÷Ŭ ÿ ªÐÃ{\ïÓ@H0)ü÷f#<~Ü}σ ¯ñÓ"®î°Þ[66»+è=ŒÇpï½ß徨ŒkáiB:§7¡ÒŒ7<΂|9“­ac³2î?Ó—\P[³éëgÃ+k1RáL”[Š–‰Ésøï¬÷­ZzØ!ëÖm°ë&Kڴଉœ“OAtàzbÓÆ{ê]ð¦0:ÏžÖEì…9Ô+oð¶ªÎÉ ƒßoÉ×së]67ÉÁ#Ç¡»ÛGßÖ¦ ¡9ÿnO›èIŸì•¬îB‚ÃÞCÄRÀÏ»uYTÅmíýåÐ"71œäœp¥³&ïèn3=>j°ê±Q=>\ͼÿ@;iŒ`¨6¹‹ËˆÃÆëì”ß…¸~-Ó¸iù/Ãendstream endobj 98 0 obj << /Type /Page /Contents 99 0 R /Resources 97 0 R /MediaBox [0 0 595.276 841.89] /Parent 93 0 R >> endobj 97 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F68 70 0 R /F69 83 0 R /F59 24 0 R /F65 52 0 R >> /ProcSet [ /PDF /Text ] >> endobj 102 0 obj << /Length 2516 /Filter /FlateDecode >> stream xÚµYYoã¶~÷¯0 #Z¤ö‚‹nÁ´@¦ËdP\ôöA‘d[¨d¹’Ôpjà€@Aàƒ@°¶¡d|p³ƒêu¢U`±ßÜ*8ee½ä@¤ ©ÐÉMÖ¨â.P“à¡t\'}Á˜¤E²Ý0Þt‹z²Šv$¢Uo…lêºÅÏwðä$-¹Æ÷TâûGÊ*ðЮ̉sõ÷”¤¼`tr_ÏÁç Bàö®Uä%À*Rž‰•(Ç@FÊ`"–±.u¶¯ðIÍ ÀºèWÖ¶økœKžþ—>õÏ*Œbnž?;+Ä´Èwo=g4Á4"*ŵK¾Ç’)»%¨‰²zIéç5­%Xë"£èrGÆG§¹ 3»x³ÇÕ‹/ˆÃë…8 žoøR¢ÊžìˆÉq¢R’¨£«×-€DtgˆE³‘:\ŠKtÉ¢`îÝWIÃÆ ¾Bš5ݯÝïøœ,CÊ}lº-X†¨Á2l[®)`’jt9wMRW˜[aÄ/põÍúe¦ ÿµ§‘«·O‰‰ócsé§Å$â-Û®yB̦Řþ´A¹„Jग़QÉ7ÿ *àŸ@§\K â3*"XZ\0P/&õÑÖ‹3Ñ×ÊõñCE¿ãQO0î̵) (†7—Ã9þ(¢3ì×Ïó׆z¬ÂÙ–…Íê¾å‘Å 8×Fˆ£¸ú‘VTûi!}ßZU•¬Ž¨Å±C§À­x?´®DNS’{Àa¼À~/ôÙnÇ·É„œ?Ù¨CÊë ‹=q±k“»¿jÅ¿câÓâ Ö°12•G\Ï öÈj@C´‘.‹Kô1'Þe¡¦HŒèGDu¾á¼1üqr‡“Œ± ¯H¼1E‰0=`A˜Xƒ0Ëpûçª%àôöÌ)€GT‡':%Fš±ø²‰^‚lžO¯\ŠÁÅÿ 0_'M¥¯€‘¤ F²©P๠¦sŒKtÎQ‘Š“„«¯« ÖèækÁËÔHÆ%~9`H`=Àyàüòýw< Gƒßwš¸Ç?ŸMé…óã áj ®“ç,%þ ëM…—‘öV|¨-ùkΡA^*Ln9ÐrR>®v%ûºÿ/õU³«9B}:w›1íʤl„„–*áÆ×Ä0>teÁßHZ’-l¤Ÿ‰©`’ÛÄš ñKéü²­û3:Œ|¥“1ýcKh é}¼n˜>Ùý„Øý„×=Ú Ædƒ=$Ò™æ §-Rø¸E S›ò°‰ÄdWÊ i*ù½®™]‡|̳Yc!0?¯¤Rà¸Áf]Z:Z°9G$Ç\èERùÉÄ£RÂBÀÖcƒ_÷C)|9Ïçíj"VØöBîd÷dz Œ¡Ç/)ü„¥%a¹,ôÀ)Hèõ…~Ûý@-ýÝ1€Þ-ƒ¿8"GCRŠßÑíð£ïÉîÕ#⣇ZÙØw°À)j0©Ü3ºåfvï–Kàr›­:UeVß«¶[/¥_ê£P@âeÑæýŒ±üˆSˆ† rÞÿüûÍÏ8 ï ý.sTÒòÃMp]‰ÆÔfhê3±ñ­ÒÔ·Áb³a ü ¢Ô>’:SiBç|xµHÇ ò÷¾Ü.¨çDÙî›þ¯dlJEóq8ga6ëŸÈÀFù†»ücPˉïIËÀôŽ“/!(T|$'˜·µ8Œ;iý³¾”•}U`®ÞË»ÉSpËŒ•h¼ÆkZJC”ÆRþç™>æïN E&Ø•àÅÙ€ .tOSp i$> piÄo8bè%f…"±9áÔƒÃ@™dĽùöòCy?\ueùi[ÝÿX¼-òKvc'Ÿ;;Ul<3Ô²‰ÓIàm †â%žzíŠÁ1-ˆ@+î›[°ÇéYpÛ0'G4h»3]|¹M§LàãúyÆÆÕðy‚ÇÔûSÔJûR‡ÆBè}R Ä«Tb¦ ÷Ë­L†§û±C œ¯èQ³cø¾º£‡U «aÕÂPœY°‹+T4ƒÉmäLªHÀÐv¤A‡¨]ÎE"ð4e·õˆà¡ž#1苞Ñ)'ZÀL€±EÇ Z˜€v'¤B¶©Ö›Éc¯1óí–?êÐó¨ &rÂún}ËwÊ»2ä~Ù£ûÐ#šxÌ{€ Ú=vhUÕ¹gTwÜ;U‚C„0+@‹!”Ÿ{ÚÔ‰ |ý¢€°î;Ʋ9M0ÉÇ®8!£ø ¢Py†¨¤2 1JÐâ”*ïeKéqý¯žù†ÛG]9¹¦<’Th^áErOÂa˜@,»wÜ€Ÿà‚÷ï„ëq’ÿ ý»Æ¦8v°£ý÷ÜRäžœÛÅiŽ`!!¯‡#—9r`ÚÅ4Må¥;Û5-©–žè ¿çß H××üß–“<}!¤wòrQBì ²¶’w“/ÄÇQ)re8½ßKjWî±û>—ûýXE6óºûs C*Lq6ÛCÌb¡ë§xŒ,v‡Þ`R–­Écæ“·€1•Å1οÃ#vc59$’¾_LR:¦l(ª*Ñ`?P©á„²£Çܤ£¥ïÿ&ü“h,aendstream endobj 101 0 obj << /Type /Page /Contents 102 0 R /Resources 100 0 R /MediaBox [0 0 595.276 841.89] /Parent 93 0 R >> endobj 100 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F31 30 0 R /F69 83 0 R /F59 24 0 R /F65 52 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 105 0 obj << /Length 2006 /Filter /FlateDecode >> stream xÚµXY“Û6~ׯPMBUYžHm¶vâuR“šÄÙÕ¤v«?@$gD›"´2ùõ餤Çëû"BM Ñýõͯîf«¯c.}¡}=¿»Ÿ§ržÄ¾ýh~—¿ñ~ìÒ+KéÕ‹ežÝ¸=|³[ÒÛÀ¢Â-¹Ù/mo•סã#¸3k˽íoï¾]}-å\ x_úBFÉܧëþ½X¦^ñŽE^IW7µ;Ï„JDIêŽ|±Xª$õä%kP*’ñ¸í‚I í‘Äž…Û²ãSEÛ¢ ÑP µö®^šús YÞU-pËeÆL»y½êÚ‘ñ’÷îIW¬Öë[s¿»!=º?_ªTȄԹcqt Òîñ˜ Ì[;âYnN¼k&>.`KÓãŸv¨Ä35’,¿&÷‚gß¡¸ ‘áÿñhQÀò'_†¬ôÄbÚ»qÜáÜ`:Ú÷ð‘áéí©WE~~kYwÖT•#:ÑQŠ›×KÕ—ˆBMú#ˆ @†Z¼GÎ…]âekøN÷ÑÛŠÿíØhx*ïÑðN úÌsঠ¾TGÇ Î'CÏ©?·ì/e]¢ÝñÇTøûë©Û¸u^þRdHoÚGæu Ã[–#‘'r¨@‹4\u;Ø·A·ÊÉâKüiö¤ ŠF¹ô™åÀƒ]G§ÿœ9@sÃÑ%4¹D’ /ËíoKƒ”¿’"|Œ³lÉñM[dƒ;³Š°£ïJJq´™îfГI@.S5*»©0åíAÁÊLª¦#¡’q?]Ú"”{ûâL«^—WÂk)Â(p $qzÓ6ýGW™p.“w›²~û™[?Kì+òMéøœ8è¬3žÚôee?ú“#B– !޶í3Û·Å„›<yÔÅEmÛÇ/¯ìË›¾º¾ýï X½|ýÝLJ–wg^¸ÚvÛ伾ʚ¼¸âõ¡zï¶~ìMöÞ<8,šÖ=7ïЋiÝ÷E[Ô™Ûbì„«¾kWU¬ÎÕŽtº*kÇG%þ ^ýí›WßË¿_¼Sî./ z]wJä!˜¬ÃódÎÂ¥s7¾»]3%kjÌwàS}‹ÁmÇ’'·ÊXñù¥p.™Ï­ØgË{HFJ£RÛ Æš _'i¤`ºÄ'†}ç‚P©€…FDÄ·û=度ÅxPaè¶|¶“Aèkë¡®¯ ›­š½]±“V³MSuÃ?(ÝOfÇëÔÎÊ¥v@ýmB ,tJøW:¼êâ—WþÕöK·äñï?ñOÀO¤G~r„( +,ºþˆç‚jšÂ>ÍåÚâ²ý¥>2Š…JÓ¿U˜ŽÑL 8¬•"[oîyþ¾ñ9¾ò¹¦ãh ScÕ†–…çiüPˆ ÇdYh0\Y`‡l?p™f5pÈÅÞzrK½^ÑðÓ/îKö®åz¸õPâ2 ZSÕl…$¸¬ùáÇjþ»kMͯ8uÀ"o°H›“W`„â¸o¢ÌCÞðýÐYµÅ¾²±‚*-F÷5Y†ûú›H;*Hj¥B¡ #~j\°aGðÐ4£}Ù¸c¦ PVì:{f–¦?m!È+œQǶ.pÙÈìð‚Á®ÍPƒv“¦']s ¼› ¤ýÈ{çÜ(«L×}4ø"… äÿ¢6”ðïb÷ {¨ ¾–ƒÅrWpw&ÛŽU¬£ÙmRºX$jÈÄCTì)8nNÑqqyY²HÈ|Òë#ÝéÂë£s¯ÇYHá,Ć{Ö‰u(Â`еÃPÙáìjÖ´¼Æ)5CÇîëű;Hƒ¾ñÐÎmz7E•mÙåhõ€:RbÀmõd3 %LŽÁéØôòc9ë¹Ö4‰`Œ;M³Û˜ù­é캘2]ª¡Þ ál¬E;”›ž[tî¥9ku…ÌÙWnXùÉüâçž&ŠÓÜz>¼’S•qÈõö©Eã‹j,r8ïºÄß`¾—ñxÂã*ìÜ¡íhLe‡E&Ì:Šƒü5?ÇŒ¯F\ô¸Ð!–ÉlNóß”ó\tL®G?àeã`ýžÓ6ÝÒR‘ |•8rt;?Ý¡H}g‡<ì&3—­-¾¥A++&³$Ipçß›,ï8#hNfÊC1Ò^^` Ö\º4—bX¥Ït^2Eê?‘,†³;ôï±=tÒ=M3s\<ëði,Ư7äïëëï®ÉðS·/¨ ©ÔgÞ“|MŽ´ÄIµs_š{þÁY ê„·¥èmOª}tHò°Ã ~xho™ã%@lêê‘Wû‘üéw†”¿4]ùË„8Ç]\㦾HpÝcqÄp5 xlŒ›¯Ë!¼G\Y™ò_~ðÉF ¤3t†‡má&{צ—EÅh¨îÚ"¦; _$ ×TýÉÑñÇsퟪ™É'ÖÌÒAÔ9#¡tg½'QcݧR——ÇÆ¡5—‰R) ¸¼»§‰ÈdøÃÐ߃»unendstream endobj 104 0 obj << /Type /Page /Contents 105 0 R /Resources 103 0 R /MediaBox [0 0 595.276 841.89] /Parent 93 0 R >> endobj 103 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F59 24 0 R /F71 108 0 R /F57 21 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 111 0 obj << /Length 2128 /Filter /FlateDecode >> stream xÚÕXÛŽÛF}×Wèec°(vó>À pà5à`áx×A6XP$G£ŒD*¼Xößoªn’3bìdßö‰ÝÕÕÕ]U§.ÍïîVÛ7±¿V¾—ùÙúî~ªuû^èGë»òçÇÎUÎÁÝ(§Þ»› œþ¡Â t°rråìhpK™Ÿ7}C«Úi˜ÐÉpíáÜwî¯wßoß(µÎ¼,p^úžŠ’µÏÇýËݤNõ‘¶EÎnj³'šö„Ú‹’Ôl¹q7:Iu-š”ŠT<²]‰Ñ^[) –W¿[)"=ØQäe¡^§Õï«_~õ×åÊ_¿ò½ K×Óͳl}Z…¡2ããêÃ꟣Œ Ṳ̀|kGÙZ)/‹"kmMÖNÄÚ±G*'d9¥#ç-Y!‰œ"'Zý¢Ç,tNyï‰$±ÓÓýAŒ?´0y^§å·µK¾è+^©+#ã5óak¾Ë»j4̽ѩ§¾ÔÛ{ÚÎgW§N3Èä»]8A­„˜×ò­p@ÛKÓ åJÕu|òžÙC=<ŽûCë£@­Édä`ºÉFE^ì§tŸÈ Èt¸quœ­bcO “¸òÍÀÚ=Ö𳉤ïxÒËä-&§ó‘/zªj|úªÄ¢†e˜i êеü=6ä|·¬ÃîP3¹;í,òÿÃB|ïÌ¢EÒQ¨’™Â$M¼/(›ya,ˆÐÿߺƘh«ëÆHÏ0E\Ê(Œ­€d™ï`À¬5Á¨ÈÒÊKP sÇ#>-õØvØ .´é‡Äõ Ö^&—ƒÝ°Câá„VÙðû çÑPD”Â+YÍ7ÉOƒNGµU!†ÀÁŸeá<9íɇº´Ò?U%ÛVP‰³_•8.I(²øSW RJÀdÒi³¬Þ³¹hÐå'DâŽC’ùŸÙ¢3ÔÚˆ?åcÔ¹Z3âl†"&Q•¨÷ˆãã±Á–ËË®¸lnÓÚDãc×Ìõ %‚5±”Õ§ÑÄEÊãa9w(ß \\X+cAò‘+^§|²ÿ:‹¤œ9Cûã¡|9¥¯F8J÷™'©fƲêx¥×¹G9OºñÌ÷0NÎáÒ]p$ *…Ïó þŸ¤~²H{qO™?5™ÿ¦ÃÔ)±GD¡5©:Q31J…T^l>8£Xt(œD¸ 3§a”Œ6? éV>[°Ãò–œ«¤Ð æòÜÖå Ø£âÈ Qr6ƒ|ÿ6,h¹IC/P{×dï“Â,vj¤( ±7<Á€¸1–~æÚƒÄ;8@ð‘ÂÖ6­LO«ÎóËÒFÌ÷×°CáX=çP]‹ Õ&ÐÚkß·@ èEâ±P¢[Ho›À÷â šRv+êœMýáã¬úÁ,øÂ•Îáºöj'xYöÆöÉì *I=?SC}øÓF¢nÓ–2ë>×…Œnåósµ¤ /Œ#Ì>Cç]c"ßTnJæ3 è,óTjÒ|Èûþí«dI¸ŒD6t)ÃŒ:‡”H«¯2ÿá<=Bò¯Áýê½ ]쯛Ú07FbÿÐtLÊÈ^Èf|‚á±ÁÝ ƒÍbלU‰¼½I‰ÿg.Xæv¿¹Jr>&uUzæ‘ ó½TÙ`=R%eœm,}ž#ÙKÍGYâ±]´àå§ž¦ü±ÑÚÓQü§}Â%8õ p…ÍzÔу¤'ÈÒøÁ«¶p]țЭ?ˬÀŸ)GFÞWBF|^ÛPû¢uWµï-œ¯uH´çk  0¦ˆ»Ã9ü讹&†s­[«VÞÉ“„l˜°aÌ©‚7&^ÍÎ(O+ë¢Í°d÷h´„Jy™€ûs±ËåI\\nJsí ´-­Oí‘ ™ÑÄc}Ú¹:ãö…˜žõHK°–„Þ­À"®¢„Õúaµ”ºè…EmŠ„ýɵÔ8òBm“Ó“Š>¦XM-䙘÷è2½ØnQë J!åžáìššùAA_ƒˆdÀU먣f£ÙK£»ÆûÙ(»TPB_Œ"ÿJûiL$¸pÄÈ‘½§P‰âDª­šâö… IîÔ¨=ºQ$¿…Æ7€[Ìφ3Só(›ò¥J«)ó¦6ªúþ|³Ýžò¶ð(…å‡S·'±gÏd á}æÅí·Ç[н]þÍé–’td±Ò©ŽÃÐÿær«¿Ð?Îܪ|ök8ý:0žø­á¾G&Ó?ƒØ)Ù?9¯¾4Fä§ ùUpXúÁÝâÞø˜ÝýÏg&Äo‚~Þ¹\w™{ÙŸk”•ºRtÌBsü‡£šy<âr!Š£m;°%–zj”ã@‘‰ŽH@½VÈÚ wGG]ºc¡¬V„XA± ŸæYúÒEóžßB{ɵ&­Ë»){ìzÌysXêŒõ ÄxU¶¸³ÒEë÷ .œ"ˆct?ÿWãš.šNÒÒÙ57 xúvßâÇ~Ðã? l*ƒµó²ôÎÇIÞCýX7—Z&2üðöµ øEÀ OeüÈ•½¶}mŒTð…? Òr¾ª»‹)¤äR£ªbj›Â¿Þ§šr[['uÏÿ!ª ô"’œIuüêÄ€³õâŸD+j3É⿉W=zÄö<é1ùåfðÆÏv¶ =îÀ°ÒÔ¤r$­}||Ë + –% 6Oš¦¦"ïÍ/?•nßêý_µqàendstream endobj 110 0 obj << /Type /Page /Contents 111 0 R /Resources 109 0 R /MediaBox [0 0 595.276 841.89] /Parent 93 0 R >> endobj 109 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F59 24 0 R /F31 30 0 R /F69 83 0 R /F71 108 0 R /F57 21 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 114 0 obj << /Length 2172 /Filter /FlateDecode >> stream xÚÍXYãÆ~ׯ†–-vó`À»Þ$†½±cíCà5‚–HiiP¤Âc5cÿùÔEêâ`ì<å‰ÕÕÕÕÝu|UͯW³åûÈ›kO¥^:_m牞Ǒ§/œ¯²ŸíB;ÅÂÕNµ[¸~â;Ýç‰ÀÁ™ýÂ×ΈE2{p»fS£å%(¹iŠC×.~Y}»|¯õ]È›»&RqѪΚÎ{ØÃqhd³Œ‰¦ÈCí󠯊'’{¼΂l8KÓÞ1]u/ ðYÒ¹Ö* C< \[™ØŸ»>ž(¥E n  ÜNvˆtã¬ËÌ¢ÜÁŠp>ˆ¿$N·¶º‡)¼E8[–Líóî3ÑC“†QèÜíàªWÁæÇ¡2:˜Ga¤ ¶^8åùátÈ ªÜ“. »‹ûúqª ÜSdðº_‘ïØ²Ïïø˜5\¦bÒÊ·¯²¢3¨$BàèCO%I:wµa~¥kÇq,†b8˾m–%ÆŒ5Úèe».p«å NPFn(6” ç‹J”k„ûô"µ\È©4à’µþhneõ) þ|šñHì4ˆJ2lR$[dï&ÁBEŒ¶ rk\¶e1ZýTp®Rp!÷“zY¾µ¸aÙ}<%ô_ Ôõx‰rBú"ù.#¤kŒ |ó?'2R€ Ô‡/¦¹0"ÒXC`ȹ‰g¶‚äúîÀ˜´üéÑ&ÅÓÔòzË_¼‘1M@ZªÍé|¾Sºó‚к$”;eL ·t› ;¸ƒ Fz( »ß"Ì#˜°®v qp ŽÎn5§ 7Ö"o«lB¥ÑÔfJå¾~Qå ?€8»A‚Èr8³Ùn‚å C£|OOÀ£/ð¸ÂÄ}>`¤bZSfrò6uÓòXÉ Må¶£”Ø Lð§Ê c¥âÕ͔ԋ‰hRõæ6ÖuD5Ö5‰Òñ/±÷_0=sIﺻ…D€º,k”;t!gѬpó‡WëÞÛº/¥ÄUµ”ÀmQ kmÑHeÕ&ЙT'‡‚YåOBõEö¡ß¯ÑîT;…Ͱ[ƒ_k«åRâçß]]—­:ìY¬$HE :mÑÔæµyÏsžÑ“`á˜"Iø6H`ç`Qb°§IRpþð¸ŒPÅë5( _ó 2;Q:‚/Â+†Nž‰€ô'¨{„ݧŽu÷‹`š Ìš±¦áu˜m$³CÛQ:—Á Gu“ž‹ˆ\&ŒáJKÕŠ¶S‚+Ý´Š°­Ð± xñïS–Õ*6C¼Å@ ºØ\M‹€E ¨³*fzŽ(ˆO†GÙˊ쯘 m‡èzÎ<œ@;O VšBD^ãË¡>ô%ºi_ §â¡µniësùÐ ÛX¡Ž8‡SÐqÃkµN.`´ç @•°“ìâº2À–åbiÏ{ϼB^×<_öªmW7£LQÆ=©Áem³ì©«vÂe®¸ÃÕ¡ú3>óµwé3d`$øZ~Äé´‘ïük$ô#ò>_$ .¸¶WI»r­': —³ ªe2ÐxʳWWEšóÖ’¯¼ËZ‡—ŒR‚^JLÿМ&%ÛãÓ€IÇÝ@H::=c`°·äÉžÖºš¼òÕÊo.PØV¬!@rÙþ´òÔž^…9Ô0 ‡*ÅX•Y±ðnª$ˆ/+2T¿œê £ljB JìJwÓˆ?ÆRV=0ÈnªÇ€Üï›<ÿÏ™¿go²Íc‘å¶|BªnvS.X.voKÛ¶¢@»ûG³û‚Ž›WW´v¿¶¼åP&ÖŒuDVhÏó&Äv¯ˆñ…7Ã…/o;¡¯}YòÊ=lÐ MGÿ@nS'*È@ÏÆëwëMeAc",zVÙ%ƒl¶›÷žz•²èÐÝϯ¸ù+©©™=ŒOX÷I¾ïø{!ð½­ì.on|/¯X÷(>Ë¡`J9w·ãÓø¥ð=?Éßò†òÚxª±“\ø”|øåÊø”PÍÙSyWµN² g€r¾õÂ!49¯·É€€è«Ø¢HïР٤öíˆ[nê¾ió71S`÷oôœ#ç-{q=p†:/Ûƒ|ûÌ«¥ÓÌx´^˜t˜±¼®Ì‚D~Ý\Ì;Èξ NgÌay!lHq}D.3ÛnØå…Ä;øsƒr=<œ0háÔÈ+A«@ùÁyëa¤][‘Ã#´vC.‹b0L[3s|Ù†GÊ*‚Hid)Jógl¹¨Y¦WßýÄëÑ«’YÀ{Ä÷ƒh«¦ÀÚ÷T”&—=‰¼Šø(9+Çôša$Ixa½.ÈõžÎÍñƒ×ر1 ù]vÊd=ô÷'ÄØp ¥W%úx3ö.¨ÈÒ#ø\' ¬;P!%z¼„Z5õXWòcýÔ{ÿ_> endobj 112 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F43 46 0 R /F57 21 0 R /F59 24 0 R /F68 70 0 R >> /ProcSet [ /PDF /Text ] >> endobj 118 0 obj << /Length 1931 /Filter /FlateDecode >> stream xÚÕkoã¸ñ»…‘+°Ë©gÐÈ^6×®ÙmÏ‹¶Ø[²LÇÚ•E•’òhÑÿÞ™!);¶6›ÞöCûÅ 9Ãἇ¯“ùUìOßËülºXOÓ`šÄ¾úÑt±úà¼oÝÀ)ÝYàԷÜé6ÐÁ•­Ëg @…[Vy3ë$¬2G¢Õ$¸³PeÓµîÇÅó« ˜f^s<§¾DÉÔ§ãþäÎRGÜYä”t´¬ M´£ ™%©!9sg,Ià˜5\* âaÛæ%±å’àòäÍbôAzˆ"/ Ù´ØNþ>ùðÑŸ®&þôljïñ,Þ ’gÙt; ÃÀÀÕäçÉ3`2Ûãòµ ì´ø©Ç>M¨<Ñ*ÿ« *“=è ô è wYâܹ 4ƒH0 e§áàT:+ÜÚ 2„&îšh˜SÈú?qÛ+Ú‰ª¥mˆ¯ k2àV±µ¦ßch¶É¥;‹"ç“]/Œ4÷¡Ì–Ü­ì”ØcŠíÌîEaF7®ÅC‡V é6%^ä¦ßâ­—ˆv„Ò«y½B€;·»=)íIw{uçF±“—UN®Izî,d¡s]ëmO2$â!ß6•8E>±óˆ PýxÐÆ°ÓºÇͨ :gedÉõ7ÜÁp«qw‡:~¹kiüÖ]þðmâCã7¢OÜý{íÒŠv6§ž|êä‰9´R"_=š€»¢aÍ0äŽ[%ûÆÐG?;ôÅJ»±e­/6æ¼å'Qtߤ ž2cy×–0vÜ"’* ü¸°É)/Ó²7ºJ©r¨RˆÄÍù“‹É*Aya™äe-ôN ¨­#‚Ãubßî©F2/`Á¿N!tÇÐ:ûÏtNôøÑË;'2> (8¤‡;¦j¯™j<ÓE­ŸÍý—ì-÷¿Ø¥ÁŠB©¼2¡T¶í7'¦$;ÕÐo//¿;Ž|þø;Øjd bº³ÂŒnXZÑìC <×âÀò“ÇLKxe\™ð(—fZ@ªöTSazÁ®­Õ;¨—¥³%…vtÐ¥(³¼BŽch±‘XHÌHM®vÑØ Voõ*Eƒ86qìE `æ%½U‰ n;¤¿¤Þfưb–qjÇÝ:؉Ç^–ØÉá@X…cVÀ sžýØ”º"-‚Þ¬-BqÉÂÌ‹a8ß×LeèϦÇÄåóA¦3¥¦>¾ÔJ⸠{ª,íÁ”p`0cCö3$ßÛï/é"L5Ç’ü@GÃÈÿS# Bô¦ÀþtyñΤŽïóúU7ôŒ]nëà6o;[1Q˜š)ÔÅbWvýöììgY|ÝÙÙõÍ›…aú:·Í†’,¤IL¯º¢yEMܱ‘¾”§l¢ú[#bë5Û£ž.zA&Rb+÷rÏq â‰]¬±ÝwdÞæ0áÛŠ·FÅC~8fÅ"ðÿt¿œÑßâSØ=BeWl°*1=ý×c³}Æ=>0YC¯>R6c/J†HÔöÉ@´cuØ÷’,´7,[J’Œz-ü×#«„ʱ¤d:4!‚þ>»úù% œ+7 µäJïÓo/6ÍbNe¡S®M:Íò xbkSÔ.ƒá¾ a×H‰QêZ°Ù¡ÖñÁŸ>†ÑÛNÆfB¾-ïöÒK;DÊ]Yû¨ ¨±š‚Km)…jò]á‚z ê[–¦Œ¥O\é™°#Ã3àûÎ*zûUwÕˆ3ºíKO€Ø ¢d?Z?ܼ]\½}sy®D׫ú£FIØV¹¸© ·&)1Î}ûºúo%OÛÎendstream endobj 117 0 obj << /Type /Page /Contents 118 0 R /Resources 116 0 R /MediaBox [0 0 595.276 841.89] /Parent 115 0 R >> endobj 116 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F68 70 0 R /F57 21 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 121 0 obj << /Length 2392 /Filter /FlateDecode >> stream xÚ­YëoÛÈÿî¿B@‹‚LŠ»|ûŠ"v'œÄgËhƒË ¥•Å„"u$åœÑ¾ó¢DÙ<›ÁÝ'ícvvž¿™¥N¦“³Ð)×IÜd4]Œb5ŠB×ñÝ`4ÿbÝÔceec[YÅÝØöbÏj–¾…;«±§¬[äH2O×vS®¶JZ¨ùRΪlÝÔã_§ï'gJ' =¼Ï‹]GÑÈ¥ë®Ævl™{8X]]r&ØñµD±9Û:Š-õ”5(¨pKö„v¢°åáöÁ›é‚°Ù!œÄ×£Ùêà·ƒ_~uGówôþÀu¼$}‡1Hž$£Õï+ç×?oyØÀÄîp9AkÉHùŽç‡­µ5X; D [)XÓeZ|«·ï¼ãŽlO9‰Ž‰ür¬ÁZå:Gxžõm¾«•<_¦HpOT¸â…ެ²’o² ^cb04üjðoVóÊØÑl³"ºb¬«a>)²0, ïuT¡ã…þÈÖ‰†IùÅUQ*2bó¿Gi¾¸Úû‘¶LõßqàºV¹±§cˆ¢rƒ—™©¶®î„­†{=áöÏžëbÇÙÿjª’ur€c³cüêüô /þãÌÊUÏ5ÊD ›õèok?&Ím­ÙÉ-pʾÊÄ'iՌљOe½Pu.l×ÜÁD¾!¨é3jêØI¢gÕTʉô«ù1mXÁé·q‚8æ>kf(dŸ®±·“ãTõe¿H›‹'ðÃ}ÅöÚÚMy{}×iÄLµæd…Ä­:˜ú¨ “¡±ýuI¨òª–°NB»>kºŽû¸Ûë¨mÇTãmð5äF9–¾º(Ìï¦Þ„v:ÚÞ,¤¹æÇ(ƒ’sgcÃMÎï/  :`BÿV l´¢Š]0nç­3ëžàƒë ËRímÊABº0p©ã` £ýÎ/ Ûz21ÍlR®› ‡Ç¤^Ýæü+óºAЋžËµïCD·É*zjïx]¡-=í;ó~ݘCGZP_#ìÍcœÐm!æoÐÀ+âï×Pn°ŠÏÌ‘¬ôð—“vâø’}z÷ó¹p= ƒ@Wêçghe-ïy_9hR €^ªÚʼnLè7˜èH¨|œéøýˆ©¿R„—ì`zwñ›ß¹1"š—´b8õ^ÒjˆiüA¦AÇ·oq–_žâ`ÒcÁtG,ÿÏ<ûÏNyFAƒýÄwC_дHÅ{Ø—"15}=®À@¤y=ÈDAÛ ì_TX¹ÐÌN—™|k@áX˹ὈSÙšãÄÜsÑ*×$¥™ó‰þÀãóSœp《}qwI¶lÖ “I—¢± ×Rñ™´˜R;¦£„uSe$è¦)«ŽÎ(`Co“qëLËEŠ“•©Å«iÁƒ[Óñc¹)¤³Ç¥LH¨)ÇÁëOq{zuŽ?'7ÓOø{u½ ¬7>§‡rüç² —¼h¸ÄEùKróC•‘‡–ÍÎb8Ýz ° Á%=àHÛúI@ôˆ]F¨ºú)÷©lLôŒ‚.¬ R/qé ÿ5ÅEyW±ïÅ« Ú4â~~Ž-ΑÊüÄDÜ/ÒÓ!qÅï?xaP€e·„î°" Ä´|j>)9LSuUR g‹–0“+7|e Ð %«ˆ&É•˜ \È2§ OÞâäã S¼…Ç Á·'.\nQ³S_ð„»´Ú s¦7LÃTÄ\·wÖKÓIÏÛ‡ Ïö¼zýÈ«|ଥ¤8<·ÄÛ&Kˆíî KV èaô‡éW.áËÅ·â¡j‡ºiÓ‰É-®qJӛѦTVÝÈϹpõêõ@õÔkÁŸKd±Mø—'òœ)¡ÐwMcžÃð%¥âÚt#¿µl›BßÉón…ÐÖ¦6ñ›üp˜Á¢aªÞnäúŸO‘ÿ»O7S^8þøYvŽ©Ð\sýù,ñÊ_¶¡¾7˜ÚKŒŒ¿`åY×:ßÉž›µh¶°0È•ñ0ý>¼¹¢êòN¤?>¡òyq>ý¼äg¬ÿÇ7×ײðéJ Áâ^âöñQ¿¾¹àigïæê’JòõG.¿6]øƒ ò^2L»·¨$î]¨¤æŠ¡’²›&÷›Å70¦Û™5iÆ £3Èú/)³z`™ýÜ–ÅšÓi“Ï%»Ò{QŽkäÌd÷ÝÎ2m{êu§ÅÜá`Ç o)XndÂam8Psñ8ÁàmNvjËOLQñ´˜n`ÁMó²ýëo(s°ý£ˆªÕ>VýÔi ¤Üħ9ìð©¸ò´qZ>­³ªÆ×t¾SÕ¹v`Ñ}Z¥¾ŽLƒ„…¡d4«uÞð’ëÍL¤·;Åx“5²êy®|-ÇÍ“’Aœ+’,~ ç±K-©RŠrÊs#&ìù‚ÇÛ?-☿y¬Ó;ù[P«‰ç¶ÿoþÌ&!Qendstream endobj 120 0 obj << /Type /Page /Contents 121 0 R /Resources 119 0 R /MediaBox [0 0 595.276 841.89] /Parent 115 0 R >> endobj 119 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F59 24 0 R /F43 46 0 R /F65 52 0 R /F57 21 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 124 0 obj << /Length 1813 /Filter /FlateDecode >> stream xÚÝZÛnÛF}×WêCiÀd¸\^ èÁ©“Ö’ª•Hƒ‚")‹D*$eÕßÝ™!EY ¸JÄÉ‹—\îe.gÎÌ®ü|6xöÒ³4f™¡j³…0Í÷,Ó±\m–¼ÓßVLÏ. ¦çw¸^/SùàèòËú‚3}.VrHmŒº_m½€Ž §È‘q™mêêâýìÕ³—Œi¡z\îÇËd®¯Y°ÝŸF §÷bš«g°u‘Ów?DZM×hÊÕ…aûÎŽ—J¹Ìk‡-c›¾×¬âËσ³Â`×5CÇÖâõàãàÝ{KK–öj`™< ´x’‡¡¶8£çÕ`:ø£]ËUžKks¦‰!¾Àc¦ÏCÍ·…Á}4¸í  žèÃ@д=F‚þ$ìjy\;½–6qtwQƒÆ¡éx.êÊabè£<µ&ÛRn´)*áwW¸öJmK¿wyî³P(‹Îaq¦×r¯%½Äò¥È²ÉîPŽ¨Î €#Y6W4F%.­VøP­ç-Kx·ªG;2^Ð5(iöh,-*þö¶ßf˜ŠÚÜêsª 48ë…†tÛ¯ižJáʈüøË1 j²Û_Evþã;Ù9Æ6w•\6ÙÖøðPl) ‹]ŽÓÛ$,ºxŸ‹9D^”ÑÈz™uÂ3ßÊ—õ±€} PÀ¾ sù’Öøv‡/+GèY2T!KÒßSÒõvAò&´{»/2)¹Ä¡›ñºNÞRÒ¢«eÉ—™Ì²rÊfkR/%ãÞ õàë^=Ù ql †ª·e®èžžÞÊånFél f¸ÐÚ ¨Ô¶]ZºÅþÐíX“­Çh}Ç€aŽïà,'„n¨æ‘lËC%/Ýk°l–w¼%Ñ ¦ÑZ~˜G”–÷]ÌemP/aáò.MÔ±åXO[†—¹O¶ Ýžk‘ƒ[®Ý'ÚL¤]ˆ9j|ÿâ¿+Ê×Ñ!º)À+‚Fpd×㿃ofjðqz˜¿ŠÐÑ Ú%Âzw4„÷ß_O_ËöùPMY~\j9Μ4Hm÷˲+JzÇ7ד¶$R.Žaª´ÿ5J'øáK'<&`WÊÞ5°huÕ)ð)ño‘géCð$Ö|ûs%1ƒàdd9"ãy´õ!Íⶦúoý²­Hða»©n öëx©dWɦ á;Àd½Kì y`§1`!¬2÷úÞVX ÚXéè«è\…;7tô¿-ׂ(Ød1Òéê|Ô•zÈb¤„¬ ¬&"⺀qb=¦æ ÿD¢ÔHsÝw|3–»> >%QÂ3«Îfÿö#gß´€g-“)ùÈû%>¶>̤C8{Ù]à˜¨b=¯'Ó±4Vè«bccf#ÐäYebx Ó«UÒž}\I{ü˱´ÁKÂZMçÉx“ËÎ TôŸ«è¿ Yýǃð y'ä+ÙëuTh˜ë÷eÅfžbšLWy"ÑÔGºõbé”!ÙWjÊçÑźՠAר 7ÙX"Üd«F›^ø}sšÐïa¾n}Á(Û2}$HD¤A© š<Ò73¼ˆ(Ôpï³ãäÛ_“›~Æ ø÷Æd¥>¦Ã»˜ såKƒzt/ùî9™H£Fx [UUN“¯FLo›ãËl<}Ä5X¥íƒ³Pu¯¯»Çcvyê>9îðW0> endobj 122 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 127 0 obj << /Length 1969 /Filter /FlateDecode >> stream xÚÝZ[oÚH~çWxI«‚ÆWÀ‘xH“4›*M³¨Yu«ÊøÞb›ú’Uùï;sÎŒcÀ ã4«]åi<ãñœÛ7ß93ðvÒè½ë+’ªÈ–bI_ªÒ ¯È†bJ÷së*m«­ ÝU[ѬÝÕ‡z+›{ôÁhÑ7a[W[Sò° S\{ÙÍbòVkÅ0â't¦“Ë,m™¼ï½SUÉ’­¾NåéCEVͤ€¸ËvwØònÈgf+Ñqľ1¾14Ù Ù'ûí®6¶Ôí¥‰Q¦Ú/¦m-£Éƒ>_e@_7Ž' • €LS¶ MrÂÆ÷Æç/Šä6é}C‘uk(Ý’g¢¹eIaÃ0Tö¼hŒktÉ"ÝÒ*o©·uU"D}¢A_•º% 4âð:ÜRPÑ>&ÓÀKÖú*St¯Ý5‰SÏÇfhGøtîeÔçûûgG´=¸hâxÀÞ§™ÐÙ׌Ç$ÑK=Úq2rá ;!v˜@×Ël:,X4Ëu™®]K6ú¤>nÐ ÈOEÛQ3þ÷<e½æ!ÌkFV, Ö…˜‹qÖa²9@;œøx„“Ä‘˜m׆kn@™À‹@{Ÿ üðt²ŽŸ´#è¥H²eã|%6L[ؘ—ÊÔļX†Ù^X8M“-Õ(EU”mÄ©Ê6±O×BõÍ[ aOkåõqGŸçõqWe¢&dÍÿxe‹x|ôÇ-ZG Ó(¨‡æ8Ðbĵ-òv Ї«-¨rÈëE Ð"ÀƒÕ ð#4MþAY‰Ϩž)ª³£ƒ |ç>’ó Ô¾€ã»}áÜÁÝœåŒN Çg´¹î¸€äÑÇËÁÐ W šö©A@lýÍíÞaÚð]/êôa•Ó-!Ÿ|š{I)ØåNš1@»8÷*Å šŠ©¥*õ¢B褧n„ÈŽsh¯pç%…{Š`]Ó– ¦Ñ`ý$%WDL#ÃOv±¢Ó2ð±}“>€”4oÐeAŠo£8ãüøŸ;Ø]Å9>„yº9u-;ûº;i<À¹v0ãž¼ˆ %ÕH0B;8´XÅŽš 1@èÐöÕè’=(¾»„­ªWÀV5ž¶‡ u¸Ì³zð5ëÁ׉C`Ö<Û‚1löÃø™¨ñ38oqO 8÷_œ3<ÂÔ„õ6v6±ïÃ*áÚ0ç¡Ycg®âó³ó ¼Œó¥`¹¡Õ¤çY‚@^`ccÀ. .ÑñéÑñmÏ®9Î?ÒæòD´FÐ3î%Æ ‚AÚÁг5߯ibä‘pqW´ùñà‘{nᑨâiíùyú|ò©s,xYÈþRL%ÇZÀeÁkØj6ž»l†Vµ³®‹äkó?ÄóûÔK6ODŠ*èó™6Pa8¤S²Ni{´hs"H;Ú ËÁ:Ä3¶#‹nd€õˆ<•ùµ*æ×žÄüüÈâ±-aÃ:5GsÎs<êyI±ÈL¶efl÷ §^ÉÃö n‘…çHvŽõc¶G"ï¶tî§ÌÖúe‹ùHËB§~Éà8+aÅóñ´ä¹‚7ð:–ó†ÍOä…óÜ¿³ –ÿØ!û0žþ "œLîÖa'8WP“¹$Å‹¿¥Ç|–OëjPQ^èC!3¯+ôiiƒEémœ” Âà$ðÃÌ2 âRv¡åÄ!”¤^L rÅñi“±ÉøÃ‘Yz9ÓÎïümñtx†‡¸KXêøz"^Gè;2Â"™Î¿Â& kp‰5@e( 2Äè*`$ ÙÛ& †ˆB´]-³råUÎöìò·ÊÙ+L¸¥ûS{Åê9X<[«âR¼/ËÖÊä¸ÌÌíã2wsÿðz|þ:m²°Oó’B¨IT6`•âi?dŸßâð‚%Kħ—ØYio22_³à³²WP†.d#Ù2 #Ù2néž›×EÇn˜ýÀÉê«×pm> endobj 125 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 130 0 obj << /Length 1918 /Filter /FlateDecode >> stream xÚåZ[oÛ6~÷¯ ‘IuW<$q×´¨×¬N†mQÈ– ÑmºÄÉ¿yiËŽZÓi€aÝC@‰&yÏå;åüzpò›k(ÄÐ#P®ŠOÏ5tÛp”ëè“zSˆšŒ4¢æ·#Íò-µYÆìÁVÙ/ÙÈ"êŒ>¤lI–ZSÐ_Mµ€‰·°•ó*)›zôåúÝÉo„(¸£gù†NO1€ÜÇ‘æ«ñ=Ýæ¨ .r¾ÇÙì±MÝñ|¾åÕH3=_%O¦—rˆ»^öäS÷\qŠÇ~¼¾:Aårp=°Mež þ|úb(ÑÀPÞ Ý |eEŸ)çA dÛ&ü9L¬ÏÐè!Zç”s&m‹(t‚²O9p|Ýð]Å3©À=8q\Æ Ý¯ºíÚ|ÒCöÝ@ñèfàÞÔbsöFšC¥~Yd1>EIÅÏ™>ˆZ=âþ.qŸtq_ŠÎë‡WøÐÖ1ÐAÂD=ž,ÙÈ_O~¹î!,.|Ÿp[ÃuªK¸NŸáüe‘Á<%ÄÆ¡Ü-]£GÄ.‘ºú8^„ŒT›68‘Q¼x{#êäPáK ÞW¸pÉÅ3N*T’k&«1øoEmYzœÀqy IE¹VWv‚#[Jvoây° GÊ‘»çbQŸ‚ La¾‰3¤zƒj©d£Ïÿ\ïyÆq³ÖùgÃ1®>°§oÿ©0ða‚ÏBºˆpQ½K²»ÇcQË‹°@n„0Þ$jŸ$ª%«ý Gûžñ<á\Y MWHS6f3X+B¨@ÀcäØôÈAB¹@))#;Âaq$-Ç3{,dz¤„3½‹Ó rË‘Ûãtõ¸G£Ûç(DÃ|3‡±¾ƒ;§’à9}à>ÏʰW]÷„{X&Œ ‹þ0ß$ˆóh ÌLàR‰w _…èü»¹@ÌâNÄIؼä§Áñç)MrqæBR$rØðX´œÇ"?î𲂫æü â‰XX|`㌳ *ËÃYÚÊV¼û¥â†¸“6 ñp¹õ ÃMtvÛÙ"gâ"LŠ%Q.q˜‡ñmÚ½ÙŽFj0\­à2“¶†5ËvË×¢¡4…$³ÖÄǵ0§$ƒ=È]$8:&᯶TFÔ³[\mG&/á–ä=ÎåïËKŽ…££½ã¿³Lîâæ>ë‘Ò/‰µg“sPR!òEÞÐV!B‹(<öòn¿ ïÎÿ@ÍnŸ}ËÁçõ’ÃòÍï"z4ËmxÕ4Ä„û˜ƒAZÌPhT…o+ º™zŽĉÖí “Ê¤ÁŒ…Ÿ!+âîrù`HÆü!i¶¡2Ä×±=í@fS%ˆ8GØväÙ5˜ð[×Á5ËÎK©©>Ç$‚yœ·8«DÑw,iì”0¢u}”ÜwX•X:Û‡U Ü’H &Q,`CKÖ!ñ¼¢xšÍ.¹\°2ùL,›ýAÄ_h°hrnAÆBç÷WË\~‘«Œ¦¨¼Kî§CA”ö¨M?²áOdà€h˜=ÞX/æÍ%ªp‘¤1ï%1¦09§^ŒöWo*táu^åajð—Y›V ¼¼ öÏì˜y6KIœÿ” »Ïs᫪€¼šÚ œ ï-x{’vmOε¯„R9×.·×À˜¡ßçîÁaîí–€›ŽåX„k|}7˜ËóŠl8,KÑ‹–áÙ4ä›Ç Ã}qƹ&ŠŒ'…s¬OÓGÞû£ “Q·éÕm+üz'c:8¦¨8•ø½£‘®bLƒüXw\qwÅ>ëå«¡¤ÀmM ¥£wí§#îg=mµ˜†ýƒÆØ®»u9H¡ÙH`ž}Èè¨9ñ&½a¨Â:½“E¢"Eâ1ì½Ê¡.šomÍVfýÊ#ɶÁwÁ¹EûËxfÇèwë>ϰí-g!rHœ…wk¡UÝX¾Á¾%á¯"p·ê$ 1âIóJ›Gèøå%“T,ÙSp2éÃCˆ™ßé0á„icRëÈÍ¢/WLb?Í_Lòów]Lâ¾DƒÊ$r8H“á÷`3gW_øïÓf C[íôùYüÜé°vÜX !œqÇQ{Ù[uÕÇ8ºÄjFº¸3‰ÿ2R ~~ƒ2{ÚÔ¦)‡ug)†UÝ“¡|³œ…çlV‚Ôõ*ÚX‹È¤WØ™[~ýÆÚÓS .׈ á)ůå×9·O8Û|GâÈ¿þ/’ÍÌX¾¯›ž¥h½¸ãÃmË}°,K5íËÿ\òÒ91endstream endobj 129 0 obj << /Type /Page /Contents 130 0 R /Resources 128 0 R /MediaBox [0 0 595.276 841.89] /Parent 115 0 R >> endobj 128 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 133 0 obj << /Length 2090 /Filter /FlateDecode >> stream xÚÅYßoÛ6~÷_a8(`µ$ê·ø¡IÚmE›vMZ¬h‹B’i[¨,y’×ûëGÞ)V,f/ËC(RïîãÝ}Gúâv ¿v!3´À†·‹¡Ï†žkh¶á oç_ÇŸÊ '“)gËÉÔò­qµâòÁË7ë‰ÅÆ‘xHå”y¸™V¹xkŽs(ñ93.’MUN¾ß¾Ñ_36 ´Àµ¤<Ë74æxCÄ}œLý1¿Ÿ9ãDç}ãÜc›šãùôÉùdjzþ˜/-Œr˜{˜v´Œ©yn½Š'_^ݘxŽ£¶9Œ×ƒ¿_¿ÃùÀ¾šøÃxšÁp=°mFÏéàfðça©XdÚXåB¢m±¡ê _3|wè™p7M5uƒ¡'梦0›4=›Lð¦à 1/dŸ/e§Øo*ÙžŸß¬eýÂ6¬pìI!ÎE9M}¦$ih¶k“>Öi}vàÕêG)Ûu´A‘ån.ÛÙÈõÈ©í¶OË)Ñ¢MrÄò3ÙŽô-ô =B/Õ;Õ)ÚêÈyB`K1WiC^¦i.EíJ;“¼ÂìJŽÏ¨0Ç<§áf#ÛP¨ q„ホF-°@,ÉVàkìè#@e†Ïj–dØ–ë¨SX"Î3p!m³¢˜"DžѶRòSœ” §Š„cÞPsÿ)®y„²ðͧøFÐ㟀­ñÀÿõ-ô tÌ(¿ÐÅöÁîÝ»³b˜XFÓEI7‹)mJœ¯!ˆxF›“×»I]>,0q§ùîôï3GF“*òä%,FKÉœ]4|~E~`ðE`¤ôIfù†šíj©1ËD°YÞTÌFì mÕ ¯I‹õ<ËÙæùÓ䪦øÇc|+L…ï™ÝçZ‚mLÒOçU¬ç›JÿãêÕË·é2 ‘3ó´¬{‰Èr<ÍqÜ¡ã âòÜ~6²4Ûr»ù¨^kÚX H©¥³%ø?̃D©ºðÛ¹ ãApžY3ø7ƒÙ)ï@Úr˜f‰iSÓÒ““Ý–9škÔ¤|v&>;ëmv¥ÓºMoꑾtYð9… D˜6Ò˜€—[Ì^U á”>5Ðݬÿ[ ‚ë¼Â¤|ŽvíÁô-vb ´™m8Œ%‹=%‹]ŽódALÀ!ꫲÎJHCI7ŒÉ§íapÛÁ¡¡ÐŽ’±ë°¬štUf |ØH- &HsÆ`5/ɨ0£l¶xþŽ2¨tÀŠ^bšºãE-úø²€—ቃòqÒb^>Æ–Ç›í*Ù±ïÌ×/ÈlBø3ISÝ–ü‹”ằ?W×8*뙲Q%D»9‡ÖFãb<£F½¬Â ÷£ toPP¤æžOò’?RƒëŸ^™jƒ;~%ÛëÙ¶/›½/ÈÂ%:À @=ž%0œ¦hmRÆ¡¿ÈGJÖŠ:}€òq6ŠÑߪNfº¬i73Ž…à$²Æb¨âÙWÂr°DXŽy#Ä¢xÛ*,Ä‹ÅQ&,oŽg}š¡õŒ=E³;Ô¬öcQ3ê :£‹ÿ­ÿãiWø$7Ø‘)& ¨Q丙D Á{"L8RŸwT¦ái~`7K!! e½Ð`äU¥9†ù$®Eçÿ-Í£&ÏaÅ\P<Z¥’ÿõì×%š:ûw¥8;fK[¼ôëM­sDz@Ž¢´MÇ¡«÷rôÝ øÞE‡Ã¸'·[„1oàL–²À„C,s}h Š}¦d¹ß#Ïn¼@Ö¼.ÚŽ¥cpÄÐÊà„Ù:ÝXÔ[¡†H ²é÷¥BYx4[¶4ºA}£h<|õì®CÇÒ˜e÷dwšDðe`Ý–Tû–áü±\Ñ”ôh¶nIBŒ‹=ä#ºT9œ´1êçm7üò¨vjž¿Nió€µ*·¬V-ù–šáVĘ€×ÍlL÷y]Å+¤Ë%o)åj¶Û=º§ÍÝ .²LÂJ¹Hb,…óì88¯s5:îݘۣÅ"—¸ 4èþ ‚ÿ\Mª×#a‹UȯÚrºi;_BªËâ–ɪ°û=ÂÛ'‡×|ÐÙ£h…ÌÛa|ÐqÕiü'ÈMuÈÍž8ßbÅûë”»—{L-Ô÷Š‘nöDz:Ç[¼jä›®kõÝÒiéS˦€à[uБµú¶,ðñpë\SŸ+§]šO·øõèÙö±:º0ûi*S2ªZ»3º\a½¿lÝ*>—ob­ìhm÷ ÁÒ¶?Gmáݳìð @Ùþü#‡\´ßP Ìøî7x¿š`óç#bÀL®ʌԶ®ë§ž…?ÔW¨)8m9Ž¡&¼'S¡O–i¾|Òâd…ÿ+ðÂ+m·úþ¢¤CÎÊ—xÕå‡pRPKTfÏ>©ô1¬J)¢¥\ ÊýÓVŽÁ%¿!þ”аzr ÞÖÍŸoxqÇ6$÷‹b"¶zRb Æ?ë{ö:t[¶rÂíåøUçúýÕ+Ù¾}ù…Š¿÷?àÐqùùB6Ÿ^Ï P†º™ÞC¹x}uñI¶÷J€™*Û•-ÓVèÓyr•7ò²Â]™jðõ¤Ô«æÑ,Æ4T`ÝÎQ¾c~"nÜ…;¶&¯ý Í58&> endobj 131 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 137 0 obj << /Length 1942 /Filter /FlateDecode >> stream xÚ½ZÛnÛF}×W‚H¨ÅûÕ…€6mÓ&@“¶±Š II„y+IÙV¿¾»3³ÒÒrÌ¥môiÅ%¹3sföÌìPo/'ú;Ϙš†áôr= Ì©ïšc¸ÓËäË쪛³l¾0gåf¾°{ÖmSþÙñ;ÅÜ6g+ö#ç$Q½è*vךU0Ñâ+üɸÉꮽü ¿3Íi¨…žÍåÙ¡™®?5@Ü_óE0KoØkî,ÑUIï¸ÇwKsý€^¹˜/,?˜™§K3£\Ó;ÓÀ35ß§¾Å÷pÛAE=6ÍãO¹¶fÚ)zUr`³»ùÂeÐÇüb5-Ó'—|°fï?óÉOAàò1\B²ü-½5ÇsP¾ËcÂ`Žtò×)¯¸„ sn™¯ùDÝ×çð”ÆÇUÔ©éã’4Ù `ÑýÛÅ€,²3%k[)þZª™ŽZ¾Žº­Úò¨½cÈžC‘Žù¸ÈDQV møDU¶B2Àø7@Úª©aYD¼]Ú G½…ð<Â'vM"W&а‘ノÇðc›£”ªä1s‰YH+·8ž)‡C8®`¶‡Ž öÑQÙƒxÅ¢®Y4"‹é¾i.ëž„E-ôÊUó7Z^‘ÛÓNrÇ©-°õTm‘‹Ž£-Â_¯á¤¡æÏ|2±€UÕ³¬Âàû–UE%{˜I¶Eš´Ÿ6Š>³žCë†R=ÜcŠîd¾ížÑÈ¡ßÚh˜1€ÌÌJ0íÝ=ÊAªèÜÔŠ¶ÑNÆ#NVD0î_ޯʣußà¦{ƒ‹½Aç¾Qs§sÚÐð\µ³Mƒz²Š€NqUbyêìš"üФRe(ÁÕe'o¢{Å<óg Ð%ý©¦ÜUX¿(€R%¢-vOÁöÉGvo ia¥‘ØdÔ%¸î%'ƒù–¥Ô H'I†çöI«Ù_÷€7|×P2Ñâþ5 ŠÉĸIÑÂä*9íd1“ÕÌõÍqÒ“ ;lìJ¤='ü®2T*b7Šsqj€««¦ëþ±R3ÚVéѰð=t´%hc”­¿¾£()–&%fÓÓã¸ê‘ÌwU’S” …E?xLE¯ ÐÔf‡ý༳qÙ§|0¶ZaïÕ¬ £Þá©«(Çî°«Õ/\ßFRep%ª%ó•fÙI§Ž´¥~×±xFº¬bhè ¶Ïu¬öâslxe+¼WØýnMp&8Ÿ•àËŽ”0à¹v ~¹•“ËÃìŽFÜfÿÂCMr¯•¨¶Q‚ü—ë*ùðN*zÄ1ÖY墓Ûõ³x²ÝRß3† í¨)*÷˜¨±Eýˆ5ÉßJ\‹›·Zg¹4‰^Éê¨}QL¥¦1ŸoR‰¢¶OûÙ5°”b@lݤ´AnD.Âfg:Òådô ÷GÉe‹AžÝ¤=â/+5ƒ(ò‚Sª4CÍòLRã »Ãg—¯ˆ¢7dQžJŸ?ݙòHu!°ÁrR­ ã £ökèh•÷ãç#žÅ”Ð`@*T©·Xæû~´ŽøÒ„§®BcÀyD­Ø:ËÓvÈy(*4Ÿå9¯Â“|.ãfºÒ_al×јú6SÕ ˆøÇ2Û¶g–§Û†øÏÈzÍ\¤endstream endobj 136 0 obj << /Type /Page /Contents 137 0 R /Resources 135 0 R /MediaBox [0 0 595.276 841.89] /Parent 134 0 R >> endobj 135 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 140 0 obj << /Length 1858 /Filter /FlateDecode >> stream xÚ½YKsÛ6¾ëWpÒzF:ðýÎLg⌓C¦uÜD>d’L‡"!›5E2|ØÍ¿/°»HIa»É‰ H`¿ýv±X,^/gæÛÀÒlˈ­X[®µÈÖÂÀ2<Ë×–Ùçùu»°çùB·çåÍBw#wÞÝ2ÑðæâËfáÚóoâ—,©õ®â_y-¦M^wíâëòùÖ¶µØˆWÈs#˰ýP³@܇…ÍÙ=æÏs]•4ÆßñÃ#òr¡;a4·§æJùv°ýí`Ç9K(>ÏÞ,g6ïà|¾oÄž£¥›Ù·Ù篖–Í,íÝÌ2Ü8Òx›#cm3ó<›ÚÅìãìÏí:ŸDÌòZ°íÚïàð9?2¬(ÐB‡"á¶e!Ò ÖBþüa$)úe-˜­š”›ÁçL÷-x³ç¿açÙ5N2¦Ó4zlxGÂì a8]Éþé°U䥯PZV.ª26ôeâe“—à5m×$âÙU N üC<“4Ü­3øRƒFÕ¦(X;¡ŒdΙPæ^L—y6f®Ý§ž/.*P$‹Žól#:ò²}¡H®+þãÂG ½ŽcĶG ?£îyÙÏMûõˆ01æŸV>Em6 ì×T¾dÝ:Õv\5¸ä;Ö eÕø&øßSm`øl#Y&H¯^\5È69Þû±$àI“ªÂÓ nzÓ’˜ênÄÌweß‹N‹©¥6 îª`mm.F…f©Q#5#ß²¸ÿÕÜ!Öp?¤r;¦i)ÐÀ6 ¼¦îÁÆ®_I½à' k1Ýg¸HzË0 Ub.ü_ñáñcŒ//í[75U_1flábƯDgôÃá–ykËá1þáÀÚdÁ>á.(ž§x‹ '°ÇõÍ#Uó#"æ­˜„ì”R¢ã9|¯WHS‚#‚ÝÓ‚)>ðò€!†oEüåüêÞ¡Ãæ!lWØ+q¤{ST1¿¸22âÉçåû%Ý ÜR`ËØ+E÷ŸAìPKï´Fƒ+!ƒŸÁþºw&¦'Âü#éZ DâE…ì7UËÀíJž¡ ¢>†·5&ÍMRA=žsºC:/o—o>P¦ê©,¼Ý³í Ä`Ÿ¸ËÅM'ð{Ì*1*iËÏ)p•Ë{¼óË º£í¶Ç&ÝQuTÒÄåyC»ó‡4lñ ÏE«è ÑTÜ+wLÓ‚®ý—¦‰ÉdÕA0Yn·øÝ@VoÔ¸‹½çHj²+e»ÄãÞõ5®/±³Í‰h(g"ø$¨`+o+‰¤-à®Ç2Ð.+“£Ô 8ÛÛë]ŠêY¡á»üãzüÿ˜Ž(7"©uݹšxX—Úÿ4Z‘endstream endobj 139 0 obj << /Type /Page /Contents 140 0 R /Resources 138 0 R /MediaBox [0 0 595.276 841.89] /Parent 134 0 R >> endobj 138 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R /F57 21 0 R >> /ProcSet [ /PDF /Text ] >> endobj 143 0 obj << /Length 2312 /Filter /FlateDecode >> stream xÚÝZ[oÛF~ׯP©°(R/2à‡&qºí&)6vÚ"àe$1¦H†CZûß;sΡ4²dè8q÷aŸH‡3çúËðåMoüÆ·ûŽmÍìYÿfÞ~àÛÖÔöú7éïƒrè ²áÈ‹áÈ ÝA³úf:ÐoVC×Äê&×SÒ¨5¥z;”0 ñ=3©³ª‘Ã?o~¿qœþÌšù®ÞÏ mËñ‚¾ Û}ŽÂ¸SŸyƒ ¶. úÆÛ}3X^Ò'ÃÑ$ÎáÒŠ)Ïñ·Ó–™Xß­è×½«›ž£”<@žgͦ“~²ê}íýþ§ÝO{vÿמm¹³°¿V÷ŠòÙ¬¿êM§Ýç½ëÞ¿¶kŒÔ"#c•—ZÚ®ÓWŠ|EïX;ë%ð>q‘P_ «iÀÇÌšøúb8ò”|ß–QŠwé¦Ð¢ŽVY‚q”è[ã0K)ª„‡6 ’†Iˈ¶ͬ©?EZ¦,ZVeÚêUsQEúÚ,‡£éijcýÔÊ®2΀ qY EžÂìê)$äÀ°ÃSrûY_ã4¶`VăÿŒ{+®+}µNnNŒϺy¼âmNœ‡Ï¸yI©¯ëÔp`ò?{FäRÀÖ9W®­§©­ Š\‡EÑÆI}Sˆûïše­w}HÉ AH©‡"$¯\ã­¤5Ê9¾¿Ñ¯ß^ã༬ñF ,¼©š-TëÙ€en'|W²[ý‘æ2å1añž¶+°³ ®Ý ‹A•¨‘œyQCŒ®—8°Ä¹PfK^ø°€U Qï}oŒ=–Q±@/Hþ%Ëä\² É%V‹1Ø·ÌÇ‹ðxŽ$Áܶ(ö4t¦VÑ-‘/Ñ1ªà©+xO D&žÏa™û="®Ö« ÉСsgY]=¥`äËQ,µpÓn"ËÎÐ1úA¦Ñ’“ w¶¼¨Q啡Ȩ0D(ºÀ—5ZJ¶ï>á'µñIžaøkv„)¡5kX®<;`ÆœhÓÞüï"rx)ò¹Þq$A]‹Bí Úm“¡“ˆ\ä_/Ë5<߉Úâ©íTˆ"àx…&¢öÇH"Ðx“ZHE®E“ÀUEëÂŒ[ã.l[ˆ.+ŒùŦ{¶`šXñD|Ýÿ}}@>ÌUä—èDEgrcâƒÈ‡×Š|`oÓ=[·‘‹%öIþOúúŠ!ÛÞxÎÉýÇÞ+ÊQ†*EB<@@‰ž&Ú“6°Àj‰yÝf!Ë‹k|{§/.K&Ó#!sÊ ™×Ѫ N^‹«ʲ†Ü¬0ÞÔ(Åf‹s,êN0H>ÀÖ_Û ‘éAèFW]Ô(( 8ÐX6 Iû‡íÙ®q‡i/!ÒxúB¹z†‘JÍvXʺßÁ†£œÉRá¬Ùê¾¾uSÄ DŽÑ*4 Þ#.$õ¦Úgy›–´":lãégúŒù`¥£Í…¨¡+*ÁÊ•F1‡‡Ú0¶lU™P£ÆSžNxáB*ƒ†m·-% Ú%ÉÞVSøŒÁ|~IZ;Fìgä¸H/õÕŸòÈõM?%éßä§@j’ _R¾pZ4è9y > ãn.xt†O°ˆ²$s~}}uA±x?¥Ž Ì) a$'%å¢+0¿àYìŒG iKLMÅ*ÚùÄWÚµ#êÍ– =pq´:P¬`F/¶éíÑ4‰%fÏæ±ñVø]ÚF2 Þé8z¶=€p™c%·&‹ÉäT­ÉƒˆsDQe€’Çëä›ÉˆZâ³Ë,!7M‚MQ&i"R.ÂâA¡ç~;•ƪ°²•G©3Mÿ1¾xòd‚ök€©º‹‘wfå‹EªH…Qä4TNdܬŒ:T I@ï¦õñÚPÓ˜R ÓŠ#LM.¡>;£`A>ûãݳ$èÿ=¤%ÅåÜ9N²Î¬N’K’ ¾›Üyra‚l¤bÇ‘£:‹¹ÙÓ÷lQèµÜ ͘ão?}¿G¯óuhk’¨òŠÂH÷º5]1ω×Õ›å^o'nnFMý´á¯áE=Ÿ×Úi·©§Ïî!ëUL Nx™”+<\BØ<ß>ãéñ2b@RÈWt›'`%—ïå£öFÎ¥ s5|Æ/Q}•cšQ7âވؕrÝTgX¢W"kWqló gÓ, ß0ùÞ.!—˜rä¼ì&à!ll¶îÊ LG¤]”¹NH¶L¦5ì°ëLx+slö¦Ôœ.æz¦¾õv},HJêá¾M„}YÉë¾¼tøãÃÓ<êc–{çp]!†N×)Þë[Qç­Äƨ²><Šáé#äÙzµ&[—X®Õ‚× fOЍ´=øÏ^3ñ¿Ùh삘\¿Ç’ñå§‹ÉÐ>ìm…O<¶Uá¬@…‹n$«é$-†|çÝÇë:‡½Ï̃NLV3³ÉØeBu *,¶G“[KÅÇŸÞ¿æ1Ê˾å²ÄÓqÊGј:ç´ñг²Ølñ™ÅÇFl,q½ߺóÇt¨—‡¿+SRM`Û]åEÇPÔ*HŸâá‰8R·Ù0€Ý.wžç(¸1ó÷bøâ£0eC¿ñÏœ<Ó%¶ŽtzCdýR ÏÉÃb\” ]ÂHfdÃù‹ê@…åQªC`jüE`5ô -~6™L&ö@|=ïêÆíO`»ÞÜ0´&Û¹j/„µ+ÀT×u“pŒÿ€èÃþ¡¼JÙendstream endobj 142 0 obj << /Type /Page /Contents 143 0 R /Resources 141 0 R /MediaBox [0 0 595.276 841.89] /Parent 134 0 R >> endobj 141 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R >> /ProcSet [ /PDF /Text ] >> endobj 146 0 obj << /Length 2447 /Filter /FlateDecode >> stream xÚÍYmoã6þž_aì~¨\ز(Ro ¸íî¶H‘ärMè¡-²ÅØBõâ•ä8ù÷Ò‘×îFÙ^÷!¡DRäð™™gfèïnÏf߇ÞHxnâ%£Û»Q,FQè¹Ê F·Ù/ÎÇv,œ|<NµOe,n­ñA98RŽ¥pðPà”,ÝL»F}§¦Ž–?Á™Ë&ßtíø·Ûgß 1JÜ$”¸ŸŒ=WÑÈ£í~OcGßÃg“ÓÖue¾ ž¾Q¾D±ùäÍxêG±#Ž—†C"ÜO;ZÆw£Ð®áðÙ‡Û3€án¢üѲ<ûtöËoÞ(;óF?žy®LâÑžAò$•gJ ó\œÝœýk¿Æ™öVùÑ–b >H 7’É(òðˆ4„n˜FçH\?Fм"¤õÃx ÎÛÉ’´3ii`R¦¤­b²Â&¿×Ô]¥%h-ˆUàèO“ v5ºŽ¶ Þ±/ØÔì9M\*Ú8ñ^$Ø6Ï®°c[.4m7Y‘`ÙÕèmX^]b ¯Ià ÔQ_ÌgÄcÜñ"ñŠšÅ©nÖ$^öêGxÁÆÿË¿~Í;6úá‘7´a†½ÂAwÁÑvK›njB¥ãÁMFÐügE_tmJPmvUJÃE¾Tmðž 6$ XIKr/ÈZàƒ@QÿcPéfGZ#ù_½Àƒ?1 ¢àEeyKbé#Y8¹–”÷! _$E•·—´û抭AOh¾û½vÍãxÊ(ü ¿7èD/’ ô± nÎß#,‰L#ÝN× ¹r™âY…óCSú››slAŠÄ»!sù4ìÈÉ× ò¾&[Lóªg¾ï{§ð}7ª€ðŽIÖÌ:mŠúŽ”¿-:Æ:vŒå=³]`¶#µdðûv¦ü²`ÆŸ·-Óz˾º$é*~I‰ø!}`ÃÌ)n¥æ/Ó*ã‡å:¥ +mÈ_ÖšTÜ  eÛvGŠn²Øª/!%–ºmYËBi×ñ™æ[W7×$9ìmÝdìOÖ ®ní86;§@·'ª rÐë§qR)Œs\Léë]vIpµÝ»5­VQ<×GÓ.‹î†ép ÞOÅ®‰bñh쫚㪯–Ü^¦yVº¡#gKê^Öå†e|´Ýe]¾âevì  êcé̾Š ‡I×jJ2ïØ(v„cþì&‚hØ&iEFV=–Ì*ƲÙíºõÀÅÃ6û–'û¯«¡'IN8±ðùk·®Ù¦ycŸ{7icbJǹ›ñˆrÛvü´0^ Ö[ô7Gñ4£¯…™tW7vݾOºœ¥¢q?¹L`ÇúÝ0BÝp\]ÃŒ\ˆA`ª`ú2r¢a›ºÏé:[õ°2tQo«^r’WüýL“¨Ë™­‹\ž\ÝrË"·´g{¨¼â4ÚYîñOò™S'÷ÿ*ÓµL:m½»HIm@EÌç+ÍŒ·N‰Úê§ÃxXÈÿKò±Ø©¿“|,Á‹ø€ !Íž <ÅÑ gH±¢º²[÷\ßð˜a¹ØvœçöÆ}(ë!X Ó÷œ<.j2¡®A;Ð"“¿Q¾wBþ0núIoÈÊòejNV[Y禇‘îÒ'z¢þ3ñš¹)ˆVw†€Ù=y\Ãì–/fDËÀrØÎê YNU°d›iiR6¨) Xy5L;¾(*ÙæÒP7XÝvó¾lSA<¬L%]hÃËåleœçîØ¦»Ž¯±æKãß&i-‚¬žÕ2Ýup xËbgó–SÈÂVô^”šö_ϸÁöæíõù@ ƒa’¤[–`yžp«ÏŠŒ«Ê)W8V™.V"Xé°j×pï?>`ûóÛKÊR/>¸ï°ýç%K$#!Ü$Pp º‘|ýåŽ) 8ïày™¯Id¤Ìõc@p*s¨èš°kÒßîÇ\éÑ„%gtîÀHÏD¢'€Ä®Ú{B8(žp öÀ;NÚ†;²êÄ båªÀ^$òäã]Dà†‰- Ûf-ð¨Œ1НHøÀ2ЯžPÅØ±O‰€z7·S…£âýØ}wtá+ <ëÇN½Å` Ú󛎇v8%ü7=ÈžØnDZÙ!õ¯ ¹Qo[!=7’Ö Xc Æ ‘8ÏtZ<à¸Ø ‘E¹~ìYœ­”æ'V– ²ï“¨ÁÏÂþXõ^rF@³HÇBºû$øµTÎpj§3~íår vÞ1åç Y˜Ï©XÅð¶7¢Rýˆ/Ñn€mˆ˜ÌÈ©‹ÖÌb!Ѥ7] ô£bϹÇÒ©hµ]:Ç‹©bgÿ‰Þ—Ì,űô —€èUxh•Щñúׄ«0îá/W{£Ä6Àp~¬()Kì%=’‘”Š* B2;Ó‡>Æ6£¹£%™—^äC‡ty¸+zk4<’rSrò¯ù-Ó]š¤()ÙÉÅPQéù ½9a›Ó0vCƒ%$n,cã{ Ôϯ*Ò ³o`šiËí ¨xv—T`¿Ÿeú~Vm);Âîkn²Spy;ÞR¬–2Æ@Ã7Ud?2rv9.‰OÌð¿ó¼½‰ãý¢‚7;¦ÂçéÜ·¯¨èƒÆ¬zLjF&KÀ‰{ßÚc‡¦ÄÎ…î¾1sXo¿äÝ~÷vIWx çé7˜¾\Ä-ä¥Ê AIÑÁî#4zivþïq¬ *ÒÜ#áS¥­u0RÊÁRŽˆäß=ò-’(t­¶èJé“EkkìHÉ>O…® •Qjb9:Åhüô9kŸ ÍÈ "Ë|P..!oêfçï?¼½øyfm´«7ìÛç¿P–\…bBü £äùŸ©À‡exú‡*»Ö´·ýZu ³TÂaÐN¢Ür— Û‰ˆJ\’€´Øçùlj¯ôA퉶 Ìë^ãå±s5µå_…LBTr–;©·”ž|lM‘2¡ôçæ¥%“§‘*É"šÍ{Y›?P@¾›¿:ì¹-8“_Þ¢4å6—Jïþ„S²ý=ã¤&læÍ­dkë_þ @À£/M[R&_A½DÂëK¸—ìÕ ‚ èÆ*¤ìT õßó¡°ïCDÈè0f’ÀG`½l‘rˆAÚ*¦WêBâYÙ+ nç<ºeäçû;ÚÏl•/W¬B 9âbâÈVOШR£Jf ˜ÃÊ&]™é'3éYzø%àÅendstream endobj 145 0 obj << /Type /Page /Contents 146 0 R /Resources 144 0 R /MediaBox [0 0 595.276 841.89] /Parent 134 0 R >> endobj 144 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F31 30 0 R /F69 83 0 R /F59 24 0 R /F71 108 0 R /F57 21 0 R /F68 70 0 R /F43 46 0 R >> /ProcSet [ /PDF /Text ] >> endobj 149 0 obj << /Length 2290 /Filter /FlateDecode >> stream xÚÕZKsÛ8¾ûW¨²‡PSL|¦Ê‡I²™ÙYÇëµåÚÃì ’¸¡HIYñ¿ß~€zX²ÍÄëÚø"Px4¾îþºx?99ýØÇ±&³Aä ÂÀží&éïÖM3t¬l8v¬b>ËHZíBãƒgaËr(k 9vIU5nKhu­’*‚=“:«ÚføÇä·ÓOŽ3ˆEHœOF¶püp`ÓtWÃqdé[æ[M]fŒ¿ã¹Â#3äÝp솑劥|'Øt;ãŠ0褄Ø|ò×ɉ`²ƒï‹ØsÉòäÏ“ßÿ°é‰=øíÄ2ŽkxäqÂÃ:•çFŒa<hí!±úiZŠ”@KÅÿJðBMy LIúz±!‡o£,½XQæÃY:ܨ£c8fæv¡f! M€8Ìåm¢@:HÖˆÀ>Xe$®„Jn†Þ'\èEœílE$Öõ%á†Ù±„l5¢fŒ¬¿˜tíX¬)›{PNÕùg,/·í´zA;–Shô:=gÛkN¯#“M§T}¹NIʪi?u®›äñ !8|ä!ÕÀØñ™×j£iÉŸ1;ÖdÒ¬}j ¶†ßo UÖÅÝ’µ7']Wúhô›ê'MAPý´{D¨ËIµc5…&'ä—6¬/4ñ-5¡gb`jFÕZ‘SÕ4ßD-£¼#n”«†qÇÃ3¼](³GÀÚ·L“ýœñÖľ*:¹º6 'µNw~×+䣧BžúHÈ—ÓÿÑÔ±ý›¼3"#m}GÔŸs{ÙP&X‘ëcVS™´Œýn´Ê8ÖWl‹‡ýò›ð çB‘»Š²$á˜+Ú^Ë“ëßò”‚Õm43,¥ŽgïµP‡Âc‡:}r¿¼^Ó…/HºèÿMºB¯nâŒLÜ—`ñ÷ìì ¿Wo|IÅèC4i¿¢Içåˆ&݆hóšý]m™Æ=™&å³™ö o•xÓÒt¾c×k Ú®ÞÛõ¤›÷Šèæ¿ Ý‚†nœÆ–Õª}V~“á³Y÷U™ï-Oå9C¾žÄ‹^ñâ—#žg÷"Ÿ¡í}Ží(V.Y—V›Ãšéª5Zš¹V·;_Á¸û»½“œZw䣓JOw†•]W3KÍï«É¢½~ßüº-£™‹ÿ ³Ú|ñ-ë»^ ó¾óóÜOýô‘/øò`ðžA;?8Žˆñt„û®`ž± Dñùe„ÇŽÆ8®o}ç¢ÄËë!I’¡<š7GNÓ@H@8v}a‡ýÓÿw ÚÍý½3m fˆ]Óqüþ˜(_H?ÚœËóÑ«ÙÇ®çYt©a…Ÿð_‚g­x ¬ <³Äªý; ¡E)R>wÅörvì˜ß·…kwКåOøÇxœ®ÒôÎ(~ÐÝ^IËíaoÓ%”ÖB!ÞîØ›¨XRž¿ÃC÷ØZãÙì‘{nl lj÷Τ;|ærÄxRDN¯ûÂf¨Ì]L2x#Qy®ÓÑW…à[Þ¿~Ð}Ëòù炬~Ä‹Ž+|·³æÁY<ÎÜ!¨»ËkÈGõ‚Îᣘ¸0áJŽÆJÍ5k íSÞBãåÿ‹¢ endstream endobj 148 0 obj << /Type /Page /Contents 149 0 R /Resources 147 0 R /MediaBox [0 0 595.276 841.89] /Parent 134 0 R >> endobj 147 0 obj << /Font << /F60 27 0 R /F11 40 0 R /F15 15 0 R /F57 21 0 R /F43 46 0 R /F68 70 0 R /F31 30 0 R /F69 83 0 R /F59 24 0 R >> /ProcSet [ /PDF /Text ] >> endobj 150 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/bar/braceright/asciitilde/dieresis/visiblespace 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/arrowup/arrowdown/quotesingle/exclamdown/questiondown/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/visiblespace/dieresis 197/.notdef] >> endobj 107 0 obj << /Length1 1133 /Length2 4543 /Length3 532 /Length 5288 /Filter /FlateDecode >> stream xÚí—W\Sk—ÆE”’ÐC³ Q’Ыô&RH‘B€H $¡7Q•.=€( t4€ô""(ÒA@¥+M:H m¢ß|ç8g.g®æ7Ù7ù¯µÞõ<{½+áç3@\U¶ÇÚ¡5°n„«p¸, ªkl à"0?¿*$`°njHZ€ËÈÀeOG@À%eÅ%dÅ%Aü€*Ö݇qt"‚ªB¿Š¤eW4ƒBººH‚Ú•Ò…tXMð”]\£_'ð€Æy¡íE@p8`A;´#Æ ýåHÛÍ Hý+lïéþ§˜)&…ŠE{¬›‹/`vAõ°-4ÅÉÿ†©6×ðtqÑCºþjÿ{Jÿ-tŸøþgÖÕÝ“€ÆºX{4Îퟥ7Ñÿ2§‹¶Çxºþ3«M@º`PÊnŽ.hö¯¯ñAÛ`('€€óDÿ£Ýìÿé2·ß *ê¦fF×…ÿóB' 7‚±¯û_]UÿføßLãXÂD`08¥òüû›Õ?ÄÔÝPX{Œe#$$$‡ôQVƒB€?À¸Ù£}´Å0TÄ K (3 °8Яû“ îh íFø•ø— N¾îNh·¿C’¿Ë0Xû¿C”“x$Þ鯈$€¢=<)7úW„ÒIù/’ ˆ¿ˆ²Päß$ @íþ&Šú‹à0µÿéü¢Ôᤨ8þ ˜?¢ãòR„\ÿF8EÈí¤aÿ@Šû(@q EÿR&Fø)oëùRt½ã_¬ÿU8pUTL$e$ÿk™‰ÆÃ­­HÀ`0i1±ßQ”'G¹Æß?UÊRþ›0” F£}Ð(ЗA,J.ôvrÅýü õìž‚“—©T+cõÊÞô׃ï}Ž£ryñQÇãòX©¹aš99Ãë½ÿ¨.À°Sc%Ä#6eàpÆËv†èW}Æl¨ë;í~~ûÞsmŧE *ý¾±öü󜖌ÕÖ…g‚jƳ´#|Çš,½Ê›ÒB%¥Ì4ˆ.&áa¥b|F,)ùÄÃG½YŸí¾t;œ®Jxx [çÉFΦ{hCmßij{9¢ªØcÒµÀLx,÷VµãGñ« ’"‚Tã{hƒ|¤ï(ÌùÆù;ÿ9¹vó42“­òÞ€™&Â}0>ßœŸ(Zã–Ü­¤jýHG¥:©>Î>+øi"áôk©ïJg:'æ‰;ÔDmŸJD †fPÆB¿1¡î¨úÇù¸ñ]üϨ´ƒÓ7'‘ÓWŸ•³‹}8œ öM ܢ޷ºÌí—¸eÅSö¶¢@Ô9åŠhk©™cø¹¡²hŽcðì1ÓÈ()x®ïüKú¢[3-τޱ™>¾ã4.ÕàÅ™°¿½{Mì( åå¿$ÑŘéßq¦YNòk`ˆZ×moL ×<¾Ä/ì¬P–äÓ6ºUo1ªI R6ã´îÅ.¾û~ù]Ù‘Q©6èøÚOpÕÊ­l³Â¢lù ‹ƒV-ãÍÝô5—¥…xÔsšlÖâ°ß5>г.¤#7ûMÆÛ†¹ÌÂ4½d[VIl}Ge"tÔýA¢!_Ó¿»‹¡MŠödagMɯ2Vý­NDh:áµÆª±Šéˆ.ÓÑ~¶jîÎÇ/{ Èûº¬UTÒqQ`6÷-ü;ª+cØ®¤3]OuŽ_«Uèyê<ËOà¡«v ‡¿h{à‘'/øuä$lþ“Ö1’î]ÔÃOfƒz©Ñ‰m?Iaªª ²lS÷+¦³vŠÔÈŸ¾¨Že˜3“ lŽšŠ"Qÿg´°éÈ–ŸLWi«ê×9'´a µG{x2ðh¬UJ ${3ö ñÁR¥E'9Å€Ö*óÔÍèV¢ƒ·…m ã(Ô¯£GÏt*Üáîιq:SrŠÅFïˆ O‡[ð®\ÒªCg¦ÝošÊ.mÆ9¡:dð_fr^Ë'…GÕNÐe`aqònµr‡Hè0L¤Ú-ê^áüF3cÞ gL¼£•ñò¦Éfµíøœ­{ó‹…t0#òjIñ(I£ýöÙÞTÒ`Ž`s•‘¯´‹z\ Bé¨^3\»ÒûÍã›Ë0ç¸ë“´‰Õê~å&Þ°gçÎ[ô¾Z\ ÝdšuÍþ®%«ßiçËuº4ÖÈÞÆâ©¹„°øhîûEX7%íbÇ9ª˜²oÝÀ¦_’õdÞ¸ì”ÊÌÑ·Úõ‹“=t\ªs¤Šj·[ïM|Ï«|R\Ïç;ÒÙV–æÙgÉ•È`¹mK5Ìke9 Ouåþ¼´ö3“Ó%º[º¾‚‹™{œ‡óñGD›=°NË5¥Ã«}ÔýŸRës½Oy>u^ b½”·þp+¦Ô8Ö§ow˜曑ÛÂiÈFEkÓòų7ŵfuÁíS~ê l:’ŠvõŸn:J•I†´± lïY!ãk»¡A»Ëg^#H늫•SôÕà|zÆæQWyÏãQߦÙó~ÂÒ’Nc‚_JàÆ\9탗ޯµsõûõÀznúÞ2,^Qב|̤ß„ &¸J¾ŠòêÐg+ÍùôR›wâÆÝß¿dqŒÜzù^$69r°ºö¢zAO¸Ü€§Õè©Ç‹#3·‚wïn :]°:¾SêåçˆzÎegX<šrB{ºäŒ—O0~; ¡Æ+¯M%c'k”¾ý((ž6+;%ÆDÇ1ÓxcÙ73ÂYv-7îMy…SRìCóPüÝÕ<ÑZw¼zD\’K[z7³¾}*™zÛÖ?£.§š™å²>õ­ú¤îÊÎ÷õ;I_êîXäc+P5ËÔ*ò_“E­ªc7õ ¾ŸŸ7¶ÖOëJ”èà;ËcPÌ–‘›Ù&íÄZܺ›;55ï‹Ñã9k”<½±1ð·£5F·¾÷qºöŠÖüY­ÁÝeDn‘YpQlï`Ó&7˜c HvÆÚ¬´˜¿½”ªxLJ‰Ž”N\k%Z*k"7a)÷ï{I¡…óE£U_ÍZZV¹R;;PèÿÄU< mŠ—™<¹'Þ.NIÈ׋/Q%ËÕ”|¶îðsÈËúµVuñ°ÝA“bLÏJûó)ø¢°ä{yZ–nS‘" žyð ŸÃ’Ú‚È`®¨ÕÖ‡t¾ÞU&0çη(™³§ËÙÞóÆŽ“’ÀöÃK5¦4S¢  ‰ô˜ 6ñRAšH‹ÌÝÔ]H;®Yì“ÂÞ˜cz‘Y}µ"† >‚䮌цºæë²©,(†çÉœL:ì ý$êѰåŠéì×XÚ„-²XN–5{‘ÊsÛçAè˜vÊñŠ­ÑL•Ô¡hIç$[u ©ÜQ}çjeCŒ^]+ÛÉ25 Ë.ç_™Zà^ïøê1m›É,æ_³á®ÍK_ ½…(òÉn {›ÝS97"U <>X~mÿð ÓˆW¦ÆÖ~¼®Ž¹ oª”7S3ìÖzb+?N²PL4Vp 5WŒ©ñs¶!ø{!ºÌæô’ ŒØÐŽÅò¥¢1g­6wÎ'4k¬Œ¼ôˆ§¶Þt1ìÊË—¹ƒõsU8»ý˜ùßÄÞÙ¤”¼2`‹-GXJ›Ë.@9܈Éúï/&Žq£ÙUCüló€ÀO;s+V°Ë\·³µåÚ™O–¶Œ²Öä·å,ª«=Ÿ‡ê¿Ü×”dÝÈH›ºÅs'å¶ÚÒuTqïÆ “h¦‰@ª{eã–Üxƒ'-ËcyA¹³*Z÷ä…j¢f­^—{{Ö¿Ëäôý‹‘‹,ùÙÃP# „5£ëyf©áz,šCψ\‡”|„îo'¿„›¼¨^c£ï:¸gd¡ºÆùêÛ`)c/ÏÇ(Ο·„d? Ôûd«Î¦³Ü[骮ەc¨×+éötÑ䳟‚0dß­‹³›­c|9Û|,¼"÷Ï¢ŠËûÓrÓ K‹œúÌÕä¶¢Ô¯úÝß•](miá‘3òë=‰ c‰¨ DZY?•×€<¤iöÙƒDqš6·™jª2Ô/Ø Ðãê¿UH æƒ4êÏ?®Xl /´~_¼Tè°$ŸÇ_y¥Õêåà ž*[Ýl„k,_ñɳ[XtƒºdM›œúó´Äa ¤ {íÂ'¦N9W{3hS3Çžíë"ö²Y~{‘/9!xñ^=ë‚wŽEß±.¤Á®úK+Ý^™ÏS~ ?yçùìÚód¡Š”ZÏnLÈó+îå±’p’KpŸÚ˜Õ«N^-E'”Ÿæ÷ìqäZÄwÍæÆ²6íðŸ ûª\¹¡pиYW9¼á»úL¡ãvÈp^^‘—×·RRøvž÷¶ Ûákaúìæ¨Ö!7ׂ۪“{*ÇZP©Ç]n ˆœ¤†R³µƒrØS3ÑÆ:œ¾þ üy˜ÎºñF˜Ì[YyŽxiÀ7ß>æô³EôaOwé¾î-ÞW‹¶ÉÄ£ÍÅZFÛù¤‰ åÚ>„?1V8¡ÈÅ•«bóÑÔôíE‘ÞžªñV/qOv¢öHhú.?óûê¼ÝÈ©²¹£cÆè…{ÈŠ‹A_vÚ¶d“çŸ:¶ËÇ56Æ£ÊNd èA)¥f¯\F…¸*õ«Šó³Ñýá<'—ÒKÍÞ¤‘õDc¥£Ç¼=˜òNmûÔ@cLÈÏ`ƒ‡ƒÃmÝ05žÀiá”ÁŸTb LO¿îuïn*sŒz@Y~©ÜÚ‡ì’ÕD«*Ãú̇Úè§‹· ˆçºßФÊÒs…Ï4Ë–¼2äõä8 Ò+tFS:ê>VÖæ93‹ñ7¸9w5åŽû$çÖ5t‹e5&ß=8cPRä*sáã¹§rß+<ç>ÝÓ·Mx­qâSCµ£ÉlÇgPX¢ ÜñBì'ß8ðu½Áa{1Û¸,èä ¯bÈÚÍI*Zy¾©|Û†o?¾Ï?Ô5%…>?\*ÌÈ{d뱩k³œÌ$G[â/ðýXØ’#gð„QÁŸÇ"°§F•SxÁŽ› žì•¬hîªTkBáI—ZÚ¬[è{#XdÂ[•m†qÒÈ‹LC_[^ûS?ÏYÀØÝ”±œ2T›Qž ±0­4‘‚¶š›|¿ÐyÆWº™qÆé:k°¸uÐä³ÝFµã;;ŽZ¤@Ÿ!aÜåjÿ¦­Òb­ÐÆçб¯Ü ´þË«ße2pè1Ÿ¢}Úô¥£r樣Bñ=kç‰d:÷ƒ¡bŽs¹³šÇ"Ê¢§Géôê­KN™évƼÀ¼)|2uÉÒda#ã-Y98-ã®þH´.8‚¹”»)xø²·äˆíYÈ…~Cç\xi2ÏVTn ›Šº§ñ¸z'}WÓþ$­V*É`j\üÆš‡sx·9ÍÏL–âëëÒ¯ö}\D!ÜÞ~…n™1M®û££Ù%Uªñ¨M;ý’ìÈÐ’MHÊp-£E íeú  !)ç!RÂÛ½ÎÚñö†ÑmyïÄ*ÞÒª='üLiåÈ-TÜÙ×¾­ Äz3ƒc~òq'o1±&“ýÈ¨ÅÆé—Tm¨<_h[þÔÔæ½m3 ‰y@»3™ `Í žP^ïý@²¥Èœun¶ \1I\/`6Mœˆ«t«v{Woä< v㿌«Ý÷tÏ%Vø'1\nœL:y²š:Tp$Ù)~,¤Ý¶ }˜À÷Uþ¦"¼¤Ë˜=üaæƒ`_þ²ôÁ˜zÐ{•П¦É…vÏE?8TUÖÔ¾I†dV X³qç/óËö*=ÿÜd@Ï]UÑXøè¾5[ªræ‘`Ö Sšû'ÕâŸ[®vÖì*%;Ãfx~¢ÄÍ? õm‰¯lú¾®P´¬)È?TõÑ99¸Bì½ÚévtqŒeêykó‡Úø™‰ëôh0Ú½Ý ~ sHÖGlÛâ/ú®|BƒªÅx©(ïô™%l@ÓCÖ[^Ow2ðÏN?Ø’|?ýy!ýë«!›y.¬Â Ò?Hr]IÜ:ØÂïsœ©U\×'Ð;S;X™8[«(UV =Ô°Å=êÃÆ¾g}jš·Ñ“ÈüVMãpÚ Y,AtÃ. jk®E:lâÂbß ô {þGÁlùåT+º«}Fñtç2BŸ4‹æª‰öó0&c–*ëÒ“–ãyÀvÇ{Ëxö‚óYÉé)m–`pàC· ¯Ù‘:Öï>«öžëë(Péˆ.È®¹^;TÅYæõê Oı ÇÕøU[VœØuâʾ¸Rî#…A¿bþF“`€Ëþš‰èÔõNÊlœ¸Àbâa˜†˜’¿ë¹+tŸó¿45Z•ŽÞ9ïHêë‚GL>!X®Ô ,ô®6áªÆ’gë܆‘b‘Qƒ\³ÞdqåTþÚ·¢o§ŸÊÅ•ëâ¦Ãï›ÌM^±í×öeL–º”…|hÇ*¡–ŒšWì¤Û¬¢`u6fbW¤ :â[ô¦ßò¸.ÆHËÜ¿—ë+Ù¡ý.õš}ÿ}.²Ý<“TÛËŸ}¶ãžsJׯ…ý? ÿoð¢Êİ®Hœ3è?ʰendstream endobj 108 0 obj << /Type /Font /Subtype /Type1 /Encoding 150 0 R /FirstChar 37 /LastChar 119 /Widths 151 0 R /BaseFont /BEVXRJ+CMTT12 /FontDescriptor 106 0 R >> endobj 106 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /BEVXRJ+CMTT12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-1 -234 524 695] /Flags 4 /CharSet (/percent/hyphen/period/slash/equal/A/S/a/b/c/d/e/f/g/i/l/m/n/o/p/r/s/t/u/w) /FontFile 107 0 R >> endobj 151 0 obj [515 0 0 0 0 0 0 0 515 515 515 0 0 0 0 0 0 0 0 0 0 0 0 0 515 0 0 0 515 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 515 0 0 0 0 0 0 0 0 0 0 0 0 0 515 515 515 515 515 515 515 0 515 0 0 515 515 515 515 515 0 515 515 515 515 0 515 ] endobj 82 0 obj << /Length1 2166 /Length2 13809 /Length3 532 /Length 14994 /Filter /FlateDecode >> stream xÚí·UTͶh‹;Á÷àîîww›¸»» îîî.Á‚»;îngþ{í½ÈÚçñÞ§Û.¼ÐGÕ7ª×(kÉ+Ñ ÛÄlmœhé¹…e”•9éàÈÈ„Næ¶6"N.BFNNFBAgSB&BF6.6.V82Ba[;wsS3'B aÊ:± ZÌ le œÌÖÀFV„J¶Fæ'w:BA++Bžp$T8\ÆtpŒŒ„ÆæFN„†Ss8ú„$lLl Ùÿ6v¶ûŸ&€ƒ#PŠ(IIT4¶µ±r'4˜ÀÑËÚÇMþßúßÉÅœ­¬d ¬ÿIÿO‘þ¯fks+÷ÿî`kmçìp ”±58Øüï®j€¹ÉŒÍ­ÿw«„“•¹‘ ©€á_!sG1s7€±¼¹“‘¡“ƒ3à¿Âãÿí,ÛÐË« *‹Sÿk9ÿ«MÞÀÜÆIÙÝîßIÿéü_ÌøÁÀâ8˜»j1Ð100;ÿç/ÿ5–¨‘­±¹ p?°²88¸Ã7X = ÍmŒn„7 /=­ðB`I¼ MlàþYMffBz`³•õ?ñ…XéímƆVAVBzgkÃVÝÔæ#ÌFHolkeeàðb'¤·8lœ>b„ôÖÀ¨£°XÿŽrþ÷@ÿÚ#ÿfa&0pØXLþŠ2þwôuffvü'…£åG8);+gÇpJF¶ÖÖà|ÌÜíÌsaaû/qsÛCà\­ Í>"À™xl?ÀIØÚþͬ@{'×vV ·“™à¯@e[犱uMÌ]þêÔu®ÿ¿(ëpù˸Öô€ÿ(+PÕÆüoŽæleû×Gœÿ¤±6ÿÏ(P`ïlð±ÖlÀá >2³Gü àÈBUøƒ€CŠ|p8Ñ;°.bôÛ+"þAÀrH|PFòƒ€.Rt‘þ  ‹Ì]d?è"÷oâºÈÐEჀ.ŠtQú  ‹ò]T>è¢úA@µº¨ÐEãß¼Íé  Œ,Nÿ±ß9†Àðn?Næ÷þÏsÀ ”qvG#[‡M¼qé?6='ÐÃðƒ€Fÿ&F`QŒÿ¶Å_øÏ¦ý ¦!°0f!PÆü/–Æâ/:Yþ…@)«¿hõq12­lþB •í_´²û Vö!ÐÊá/üçý…@+§¿håü­\þB •ëß^z·¿håþ­<þÂÿ^3À¬/#ë‡?òÿ~E„„lÝ€^#éÑrièIbcWK³R ®ûÊL¤ˆœb_ú%tÝ9!b}2ÐÇ"¦…zõÒ¶Ãõ)&'þM4”Ñ6p}g{Æwü®B.±éŒ³3¶9Ž€sõ-?t~²iàp-¨ÇíZ˜2áÅ·ÂFóT0wû8_óG×±h‚(Š#N 9†÷J/Ç‹y¡¸eª²ë/óím§øšf”Íè¯Þ¼ªh ò XDf ßP¡†¿‘ùuÞ2‚Ñ[ß SSÉv(”€Óø&…5=%Ð¥SÚ%1ðEÉÜ7]häÆCÜÀñ°úMp+,f ¥&Ì]ºùa†Ñ7¼ ðÇ©6Þ{¢¹S—ÍÍÓ¸ŠÑ^|‰#þ„‚ša•%Úž zê…=¿Ô°Hý{‹Ò¼ú(æíÒNŸg5v””ѱ6MF™’Û/_Ñùç>Rf-å&÷ý6NŒ7ABÿ™Ñrï‚Sÿ±ö mtÌwNà»óýbŽý%Ñ~L’dL´%P!æ ÊÔ’[¼&~Ô·®»ŸëÒ§¿Þ¡Ô§kžþÙΰá *› oî\;Ò…ä$ž4o”[€~Œ`B±kÈ„>œsþ²7ù`‚eË¢7?ÄãÈ[Z!>õ²¹TüÉ{ÕÙ”T¶7;q]ß$€äF«³¤ö—â!Céõµ`?+žÆQ¨ý3¹77é6²Œdy(w]­ua÷ÙOŠ_“ôrÂᲊKÆ×GÏJFÎÜÉ?lŒseul¹ââÅÕ9œéX 2äÊ/·DE‘;3-•ÂY¸Ä« |cMq OkõpVÿ@íáP ©-Â8²`(c)B.&,Øå.lq×pß…qâAZ«Tš ¢ç‡ìÏ«Q¯É Øœ8£J5^üIþ±Ž³ë9zG¥»4ã»`MÈ ŠõÍHÜ­³»ºâc´MÊÛâpÁ>"ˆ/œãÃ|_“M¡V‰¬ sìâ‘Aħæé´žŠ+ˆöK€¼Þ?ðŠ[ÑÛ©#läUL2.C ñÌhª)]g™¢Ÿ)…“„jn=vZ›i‡Ñm\´*βÿÜùÑS˜Ò!ÕeíhÈu©)xg>¬?ŒTÞWXMåÜÔY5h|ª»*Ô~OyüÓÆ¡§+ØÞ}ÏàøZãšÔµ[ £7Ñ-*±©]JþQM«c€É8x·”?ZE2T~Š]1û¦ÃD­öZþ9ç ñ6'a—m8*‡§ÜFeC™?ëo åo8mÓž³j«0µ®•ðÌKÆÒÝ2¾žò]\_G\!Á8äörSÎx‰<+qî°4Ï•ÙHX6ºmÈkÊPe´–Óè/͞؂ÏK»ÔaO\näò;h’²}&B±ù^˜T{W¦:ÜÔ ÝZ5Eܽ’t“˜‚Q‰$(¸\w†æú•¦Exae^‡å³é­J #uŒ¾a‹!ÚR¥Î@³Ûã¿Ñ“y*ÚÉó”KÔšcêogµ°-ç™’h}St~xdxàïEwßÇ÷%¼P2n&±ßB!}Ò¦ˆõÒK)ŸÇµûŽº®Ÿ÷Úl¼ˆ¼Ò ï ”Œ–Ì ;¼;Î3g|1ŽØTú$š†íyç-–‡}~Œõö³Ai.æü$¡7!%O¬ÎåKŽÄS)â¬ÊZm™¥>]íÏoDdî¸9¿%ËGÊqªÉõs–§A÷t¸©Ê\&ûœy¤Ã—{`ðD{I¶V8¸hs‰Œ‚ÇöCæØµBá†jP†Ê2‹ &Å}Žº)öz>ðõÖ±«ã\§Ò5CN>M2ን­l‚ŒÀa¾¬G€Òלõ°>ŠâÖpMoMéÛóž©òkcsvßVÊ3¿lÆÌÚ±ø‰aµ}IÊ%C\­e… ãÑÿ€ÊösÓ]Àxñ²9G¶ún€âþ¬8;[“ŽBâa¶~ÿþ pðUøRò‹’¾Ž‚ ÷ý‹F7 Kë“wÆñ°~¸Éwkð›Û>]Áås2„Æn$ï„î¦Á&ÎÒž”—_x6¯a§fã">熗I¯^¨¢j}v…c‡_5è+1tºùÙßrù6ˆ›Äº~Q;òFÃ/I¸l\ÃÆˆ#ÝØßÓã”,ø>5áÈ­}gû¦†–?-ÊÓˆ=c2Ù¦ÒB¨Õ€´”ÿNឃåÙ¬Tèù£Wµvžßy©®õÕÐ&Šäx»hKÊþP¯å¥¸^™¡ ³<Æt¯!a>Ö¥‹±M$N:ÌT7oh÷[7W¢©iW a˜¯ýþjië dt‰x©?õ!i C±Þñ{»øPuñw@LéBiþÊ* }çÎŒ—ZÎßd.u“k„;ð—yŽX”ö+q¸”59)Q÷„V¹‹ýBºd\Y XYŸ]ƒ Í) 3ìJ3ª[´(¼é"ZÚrÿ¦Ÿ¡LzTUG÷~c´™ä4îgÅK_]špñ4X½¾n·Ã“øéå¸ fOƒÊa²È<ÓáçZ¶š Ë ÐÌoÇ:ÖmNûO\ùæw¼ÖàÑn:¸á‚†ã‚f~ëzj¼ªÌ{«n~ìMyVKðÎ[¹hÑkËe©Š( ®W¹“]rcŸîËÎÁ*7‹Å(ªQöàƒQœš6Â_9ð"(@ø†Ñ¾pÃûÔ€Z¥ ™|ùQå{íis /ˆVðörC´_ðû1ÂÞ¯H6Ulòªa¼”ZaÈÿ­¾¾deÖ^žègÂç‰.ØÐëQ/òãíü¥ùÏ´«`ïËKE¾Ojlxé-ð?GÊÓÕlÛ ýÞš_l³çUYÉÎŽ«]4 m¹S~ 0â°‡òxþQ™rLjéd#ú½O.š½1ØúÙa†ZMNÙFÐTÆÈpÓŒ7³.–rít(Í_<æRÊúÕ½$gÕ£x™ÿDëy sÊZ#á{Å%{E\¿Þõ†A–ÕˆÜsl–ÆÁ/:ŸeD$n;#ëo0m©–üñ#‘Æw;{ÆÌgPÔòøå8úá¯Í}p bÁf¾QƒX5ìz~nËÃlã<0|·j©®‹cB¦âÖ‡.ª/ã  L"š CMCú0p¥ ß:L$ì%‰ÖÖõªÏ Nø¼“–ô•§;éWǧ‚³Zt<. ŒžoІ›µRMdí/µàçH¦ *Y`Ä›ã½úWÄ0çŽ *qM³É{½!CŒ¦ÖgO”%hÈ*ü$Ѻ˜9;9~Õ°flôÊ·'X1{ùŒ4sÞ”í°¾ ‘34§'ì²®[ ¾˜'xïèŽmñ}Þ— Í òÃë\ôä_4Nv5•Ÿ_Ê…À'&–÷ê•Ý—ªû;ìÚ*x ƒ[4Ügƒ%¼Ý¬ÄÙõúæÕjü!qW3 ëï_D™»®Á»žîhÐE±Ð ôGžyÿ6OÄèœI)AÉ¢)4½} p)Á€MšïT+RQ+ hö̬G•†÷–Ãa#Uðõ#EA'ŸPð2€Ðàÿ‹¸ók¿\öÛ`Ú½ ›¤õ—Ì63©æÅã˜Svš·ÿVrС©·¹ØöôUñ/èa!0²ffl Å<ç¥Ü´èç6¶7·Ãà6{£õýd4½›®¤»y–¯á§ú›Víù ìú÷#ïÑU_Ç5¬¯”E#'&Hdö Þ@¶†_É¥WÈûta-Å­umâZGCŽgKdeÿÙ†jUÿ¨ù2.¦®å;÷§ä¥’ú©…ÃÖDð¥`&’‘¶¹Ué?º1¤× ÍËŠVó¸ +Χ>ë1zŸ¢/×c[$aÝœ‹^q$ˆ÷ßkM(…èøó$/K /Ëk§†Ÿ°ÌàÙÿâ:KÈssä+,ò‰Öñ•‡ÀIq¡S€P›ÈjÃôÒäE™YM‹¶Åå€ÖÊá÷öûO¹¨—zLúÙ);õ·wzjß¶ ÉŽ»¨ï¸ÝŸ.Ø¿Li.JvͰýh÷îžjj‰}œ=;½·/S ±sT!êÞ¥Yª´´Ô!`¿ø«üº-c¯Ù¬p” %¼Ry 91pò„D"óòs~2ʸ’˜0»/ø<½ê°@QtM;¾£’¹WŒÆ®/öÀ¿DpÍŒ.;-Ô- ©«Ud§¢ñÕ´V}Y5?…už»Ò%€@±M™ Deº©êDŒLh‚çË¡•wït{ð™DI?3‰m &Ù’Â 5SýµPŽ(v­þ=§3íG¢a›íý`åK+©Ö+(rTМ<`TG«t„DK©Š´&ÕCEîy–’š¹cïûÔ àÂÄ™ö¨•Ñ-;-¨ƒC¢—x6bXÇ„L˜JdΦ‚-ûºç*40¤ g ~jýÒ ÖShwt·K²ôöž±Mð™AæùMáºÕÀ¸Ž0¸¡_ž¬÷¤ƒAËN3ÒÂöŽWßÒ* S‡%®™‹®bе9“vç5ixÕD>›Rï×^Yfǘip>~][1‹m«Ö)½ƒÒ•Ãâ²Ì&¹…ùu_ûe‘²ôö¨køU¾ñ·ôëªôp#ç²#¼k•Ì ÖøÈ‡ÇûÜ ò÷ùº«—ò8Š ž¤½d|ÿ8jX,¬å­þ­]Þ_Ÿü£\fÝÌ{¯ÁJê÷Ö`Eœ-ÂõEQó*Zûå\IFÄõ¹Í.\v·µi•Ø« ¼ØôF¹BÆÑ&¸ïŽ QÖ^*±ŽÚm+JíëEG²è¼@ì/–¢F ±©*ê?¯Áðá3ýVg9ƒ£^ ÊßÀåÀH1à¹ÉÀÁ¿‹ñŽgosNò`®Þ†k}'ÚÞµæð$òúwc\u"N|ÎÚwW ™kzNÛœ¯&Ê+,”@¼…PÅí¬HC/!}™[µ&RjTÖT4Ê%[!ÝèZ>WɲÞ¡¥µ¸¯sq…¦ë/ÝÀÌÚÄ#·´¦ëÚçÛ‹s.>¿ëþ¶M­¬ÁÄÅxÿ$Ü|“—–$¿ÕxÙˆnÊ»~ƒœN%à†°¼Ÿ€?` ,ÇNúié“KÙØ@f“ä×9oC¹"ʯ9Þåe.ä• —%]»f×üqAWØX².Dm,.l³ÂOw-ñúÍ‹Qvç¨-/O‚^®e*/Ú}ùÏ<ì.º‰9tpx«!‡d’æÔ3oœz%£“û%x $.ÊÌÅufÁè†hŒ·Zi*q×ÅʳÈŠ38‚CJÙ˜µ$_÷¥ßI÷ ê¸|Žž¾–n9Šb‘¿È¶|ªnK/W’ØE.D½aÆT{Å5PéW$ÙŒ€ô¡†ÝÎm…}ødÅûÍ}•R¦@â@u8^Ÿ£2ú­"ØÚÛgí'Ž+„»Ù¼ÓÈ·úf'@å&úÝ“0ñŽ ÀAéâЫ[‰{µ£âóø#ðs›tW•y·YçænuˆÒŽÉ©Võ­IAXß÷¬e$…î*Öþ‘˜†wÁáÌãgBŸ&ˆNN™d<ƒ ×âÞs:ÉûŽ^Ö¦¶©ýñA»¾Ö¾Æ7ÒPGä†7eôÛû7–q{à7ñ±&t[øÇ$DO+Þ"Û!£ùüe¼,ï¦5z’ ˜ržýïH 9Wª/t®ÆàËG°r6%ÁKÛä¦+÷ö‡d™ÂpýÞÓ¨øÄÎ/±Ÿý;ë:gŸ7™6×}ìÃÈp§«1êu:HŒí8Ï‘ìb&s¯ƒ<”0tÍ1ÃÈ[%¯-0¤œêÎv¢3ÝÁ3jð¬þŽüñYÚÊoGJH êóR—T Ð)Чóü¬XOçÎZKV[”£,ÄB^àäEˆ¿^ô©òçÈ‹¥Ç¼Û"¹+]i‰ÙãwÜÄ[š÷C[WI®i¿ïæjº4C¹²‡ò+Ä%Òß¾È`Ë2¿˜bKÒjÄf=ÖiUë³YÕŽ"!¢å¡:¸aOÞÁgÕ¡ÖÝ–BµÇouAk+¼tÐluã$Õ—½.¨nÍâTfóŸ±;Ç‚0¹`–Ï]WâÑL%ü|#¯×¼”­DŽ’æþ¹uéQ3ã£H&ëɰ NíxîRÍ60ÑüʘA3M4p¼*}¿*EÇl®Ë=¤ Üz•ŽXSÆ’Põt‚†1bi¿v¥Cäu3YhÂì0n6c›_ùŒ›<’À¼xœ¯ ÄÙÿפÎÕ4¾œ"í*¦Ô%3ÇtÜ!¢ÓÄÃ.ujX.ëËÝwú†{!7 ââ©·ÓÕ·ÚÀWÚ±©­ô‘8nÁøkqÂÜû©fˆ3Ø{¹žÓ Åý0^§ UK(”>ó¸¹÷³fõx‹,ðñ:o‡!*4¹~Ü¥Äå;èz¥hôd‹Q.åÜøJA,Ÿï:Ñ·…i‘Ä’_ø›W¯LÓ}eÁ‘üS•8‹UÍŸ¤©r.'tk zÀjÑ‚äIk$¾€,Þâë…×üª2×îgÑê^ˆÐÕñï®Âé¾gO‚’Ó¥˜Ièy. % Å%tmïÒO—[$–DÌÄ•%ÿò+5u_£r¢DÑtT ÉÝ«€h«›ûLÌÊi‘fòBkѤPQa»œ&Co['E4ÔÿxûºT4Çeu.6å&òzÓ^ž$NÓÞ¿-/i(Ö¡p×:_ŠåÍ÷ÖH“iëUù* -©H®Ù8_ÇÊÁ ¡Û4·P=¸z·|QGåÊäÑ«½S$©Þ-Ÿ‘¤ó´_`ÿÑ£ãÈçx6‡âÚ;SäOAZ›9ªòý¨i¸3!?—àzç”Щž»q:mPrP9Ý/ð“œIˆèÖùΉYâÓ OÒÁÚò¸üÅ“±ÌiÜö-e·ã¸ײ*EÀE@v¨„m,ÞŠ3èq¶œ{5E%»üí±~5Í©­ohý{¸ ¯;œÏ¯ý]{ð¶FCÍ㾂(šÑÍËfGᵃ—¨Þ‘³_Bf%1Ǭ¹ßòtæ#PsCÁß²¡¥†Ï¼š:@bªcÕ¾%㈙˜UW¤³úô ×ÁúµF’¼9w<<÷Þ?ö_¯>a­Î=ð—8áùÝó2ö+ˆ~ÁÍÁnr#¾ÐCWPKâ4M eP“‡9óƒørìTWî˜ê¨ï$Š@Ž [:ÆYtIój×a„ Ô’ó媓\CqRþ4Jw&óOqg‰¡¯ßjrµ¦ªðÌoõO]xëÂÓnâpÖüŸ¯Úî˜ûŒˆðY'­¼’Æ/7°éìOê«úX¥GS Ô?/Ö1qý õ w.…üõ !ƒø借¿ß"Úɤñ´·ƒv—>#µ•p±ÿÚ2x°˜ãƒÁÁD¼RÒe‰«4·Þ4λ@3  ¡Á|¹\UoI\® \M^xîÍ»îäÏmž"gá¬zpD8Šñð¨Ëw#R&î¹R"<²°AžI¹ª!qÝ5»=WuLK£ø±œô:týObPLPÃ/ùA •ÒTïrî¬Bš™Å²¿–eøJ©ÇFk —ìß[Þ¸bKÙÙÌÎ:*¯6¡ÛO^Öˆ§ÐÒÔ@–ô'é@¢Í‘ˆÍ¾f"ÉòÊ4Íß–(³ŽÿxÅ/pu¹ƒ®™²¥9ïTùÑ£’I•µÐ©Óš]_PÃü9=ñæivÆ´†›s}/„„5_E{² ~ÀA»ü§©ç©Œ §ð€Û°‹£zæMU(~À¤»À@žžZ$0ñû4ygˆœþú7=ùêüŠÃÕòŠZèÐò}ŸÇ0„*ÌN˱;lEèN{ I}\áf²I3€ RƒAø½ñ"³„Æu]—×)uæv§OÙþMÞÀŒ5­·Óæ5d}_)C¥›]jÔìòϪhR"gùs Ò!–;¢· ºä»û_6µktÐU*ò ù6¢Ò˜ç?_KÊe.XÔ§¥}Ñ Ž…V³5•±¼ùŽº—Ûb ê¨¾P u¶ºàhéŽUK%p$úÓOý8/5Õ’©àB´Ñ1"w77V&[ÿ`Àß¼DçØÊ»Ä-4(þ"]ôlrT¾Ì疣ƭ5rPDÑnºmë‚øåžØÕ…UÀØÉïP=M÷e¸½]’~åÈñ›Im‘Çš]2„6õ«Ûo Ms"ÅùUSf9Šþ$ŽEØ;èÉ`ß>ØÚ¦€1UÈȘ OŽRïÿhÑDWüÙÆz !?¸%ÇIÕH_Qþ]MUêÈù)k*0>39˜1AŠv)aðqb&0HàQ§Kž>ÐbÊ•]ƺ±ŠdóXÃÚ-øq ÁšÃî©Ð Sª¨ÄÎÎ!n¯¿¯ø¡Á[éX»Šò_áPÛL¾)݃¶À#Ëd£w¹æ•µz+,dŒ–±GûóׇIzÛB™Iþ?gž7úJëp’Ãø‚|`¶Ó#96_êu‡ónfð¼vHD¦/ÎÜcAödíDñb(·ª8›«pú À84ö˼jØá\Úã_$x—»DØzºò·`Š(ägR†„ñÀ`<˜²æ™ÖJ´"¹GžÔãƵ³=+{œà‡qír’+}à|·©pÏ)n©úêVÆ^RæøG»Ö“± 4?½/koa¡Ý¹ßÙ‹ Þ<Ë•ïR6±ÒÍšL…cÇNìÆª? ÌÌ"ûYµÏ™Î·„ö‰TtdpÃNTàs}ƒ w†Mó/Õ*·]ÄTLú»uí]Ñ…†#6ÖÖïH)i¡î£1ç÷EÚ;±FiÿȳzLÂ=OLMÇEý¾\0+£»rn| ,Z‡ÒJuŠ™ðJpq¹hæþ1Åv¿ú€¬L•¥¦» äÙì<*-ØïôUfÕ4‚›l°WÞ6…yNVz±?ª0¸oœ>&%ÚOŶ¡1oVôà“YIw ;UbD»JÛÄq_mš…-ö–j;=“à_œr*™¬œ³«ÆWZò…_‹ãì€ÒT…ïBIþpNì_I‚} –#F¨¦ã1¥´‰2«{Ùc9£½"“²òæ”°Ažli|¸h1ä$v K…OÚ¨&É‚Ÿë˜Zª ôÄ¢ûeÙ¨_/G©UÓ[úÓ¾›µ¹M£.Ë»¾3¹>7:‚PºÒ7ÇùÅ9æèù¾£ã?˜·!æù¾U zå¾OûÉ¿BÃWà[þáõöY¥úÓõp×V¡]UjˆNÞZkâÀ[‹¹®ÃLMm×èàF·ÂþV‰±‹±¤º@%õë„Û'K&6k+³wÚ3nè5¾M>Ë®#í[¡:Úâ ^Û7ÈfõÄ w?ˆŒÄôyÃmαÍM÷Îbõ0»päÀ’ë`ÓA_dŸtiÓ,^ãäÀ_Ä”ª4q7dõIŸO…ô—¦·¸=¡uÕïU°ðTûBáir0Þ03VN9Jâ°c‡{é&™¨ìFÄWêGyUø1õqq$1)Óœ«8]êròȨ;ÃÕ¹O:¼+0Û͞БèÜŽrœ!ñÍlI,hTóÍEþE°$jÉäõ¼ˆNÙO=ôÓ=Jµ/!dÊNBl)¹ORùÐð‰¯ÙÍ×—´Iþ}8®Qú¬¥ÎN“-5¡LEzÅÏJ =›Ž¹–žÖ&>Uö¦Šv^Ü¿ï¯æ4_ ðˆ –^8»ö瑳‹Í¨=êˆ}‡¶’æç˜oÅK¢4ŽÔJc´ø}Ú« UòÚ#­­SɹãŒL^;uñ™ÕÞ–î(ï%ÏBØùÄ‘W*œÏ(ĸ„.Z«·ò¿ñ¦DìpQTTL”wSz¡Ï°UN®Æß9»Só“áÑpŒÂõ P|×¥D…ÛµŠ#¸“ Ù®¹óþ¶Ža¾²‘ áZá¡O_zlmoà/GûÉ*®ÌœDô ÁWø™/¹ýÇ 3ñ}A{ëd„û§O|îG*6q’y°ÁÚ¢CH®Ò‰Â«âxÆÕr YŠ!²~…¯÷Ó(¶J]¶¹x&_~E1U9?A™>J^î¢Ö¶.0qÜýHå©­šÉZ?Èùy099fRÓ~¹Ôõ]OxFµQ™l§UÃÔ)q !fZM§¶´ÝYÒzF›Š†ˆ #™Cp¯q<›¹/DÕ‚k…5˜þs°ƒÈ/ƒ nB*èúßÎÝÉØKº¬|0ê’°¸á‘ý•¶7TÒ„¿7– ’ ŽkA¥ƒ`ç1¥Õ®’×ë:Ü,‘b\ýRºK îfÜ'K,¸Ò/£©ÌŒ¦Õò];B»*äÍøïe}BÂ04„E&àäK³91ÖS{[«¿Èìÿ†¢eòÇŽ\ÜUì‚7^^ï­@ü¶tM/LJóÍndÊœ>!NFµOß-2NÜ>°H„l2íõ3»˜¿í¸op„sPËv¤r;… æ•áò5žn„iûn¼äù'uPO÷Q×FãûgÒH–ò™s²›ÈF¸*Fsõs˜¼ùQÎâLL¯_CEQMŽe¶}v´…á;ÁP#ËxóðO"TˆÎL½Kº{™JáB'l?F<ŽCUפ؃;%œYC‹ÐÄ8Vù_"‚YFLÈf- ÞØ$Îõ&̹:ð öÓ‚Í©!‹(²ÇP Çb“rÔÈ.ÃKà -e†°úηF†¥ÍÏ%Ý7}ŠP%u’êÄŸ“2â˜kΦ¦ujÑ¥Î!#ESYxßÒM’»iöÈSì’xI–ãµZJàmÃR¤QQq=Þæ±å§aqkÞw­Ë ´é“ž‹Ä›Ð¢oê—¦‚c¦““×cÔ–¾Mˆ¢”õ¤«:të»e±=œu¿óQbˆ£›ÏIwP„S‰h#––‡F“¯2ôXI 7ÁÌUM­#8×dY7âÖªIb=Õ3acà oåðb¼›F}$mŠúÕJË<‹`cµÈ¼DëÜ–¬Õn¡™fÉUM£}þ¬ KÝ›l™"YM`%Î"Íg½fÃæ§Ä~þTzâ4EkŒŸX`™ënJÄ)%/A#ÈuÚµ¡|ÜÑ_vbw…ããœù):Ô!ý”4mó®W‡ÍrnôŒëØ„ê©]ëdíì†èÀ‰ìôl³Èã< õrJ^ÌŸ‘?’£u¿6 .¾œ„Ê ã¼žˆÞ'æØbòä¶Šç×èµ([ÃOìT9»Ac…©7¶ˆQŸ:D¶ºP\6åjª­ïôÞÚg» Öf\jk“êUïü|0¸gCm´R… 뉕û]ž?Ž.v²q¥wAcÌG³, ]ÇÜF~K°q8¬—ØþÓ;̉kYþ0v¸­ÓWîç¾ñX÷“Äp³²ÍTK_™Š‚\Kãè1z5xʼnÀµ³x•sãJmE+'F³…Ø •ƒNÇ‹£†Â‘ðà”w]¦xÂŽÈmz=²àIÁ–fPŸÆÚ‰ÆÙÙ!Ìè¯Ödur8ý€©YÛ»žÈxnwWlA‘©—œŸ ùX4¯©ô¦N7ÜT!³–K"•çÛùÞkôN»dnlþ­A\ %„^í+’^:ål•&dËû6 voO-þxNOÐ×_Ò‘Öwžå]×RÍ4¾“ÄÞÿªGVgÒÙü¼¼Ê³ívÝþ'Ö4©=bk¨+€îu®ÀÃs·¦F¦×6½"„ÈÒS‹éE—YxCóÀñ]ì M)1íèZ»«XšçKÍì©2ñ¨}% :˜6Ûï§'>P÷ué™Xî¦íðÔNšø÷¯ñÛ,>gï+×çÄ;y‚Äw{ þGÇAFAqš¸ž!D¾àö×`^Ù'/䪣iôic‰É(Ѹþ÷¥¾5™±òãEÖâ )i÷ÝâÁõf¨0-ku^š5Oò_¿@ê¥Á(ƒ;-K^@!Ç  ¸ŒæQÖÒ%‹êÐU~ÏsÈJ‡xg`?µŽEOÛ‰²iè‹2Njœ!Š7Ž{¼«Q!S£Y]–BE¤Ô”Neúy›P,åÉÚBß/‡CLÏ›ÿ?tæF—8Îe‹„æA’ÖŽ\ >Ô>†8¾œÆÉøtGi§Èe ð]4#Ä/Xž¼ŽžßÃC_<¬I’AGj3•¢ò+¶WÝ÷2Àwk¶-]!¹=(†Ô\8 lˆþ«ÛzïÏQÞibœµâªTB(J&]džYQ&{x ¶3]1ÙF†ÀLÒhˆ|$0,h¡Q¨‘EUúÉHÙÙ,c8uŠ$é Ü6ÓãÔÇo„£¬2IzÃW I¤“Ét©%HjP0C(qn˜NMºÄm¤„]|¢Œaêªt|uo¾_ÊS/L_©øymUo»sÕýø>rº>‘ãl…§¹è7›‰ä0zŸF8#4Cä úN$G)¯ì•·{C‚m"9+=šõ›PKj7ªPÛz®/ÊmÄà±|½ ~7éh~¢ûó —:gôóÈVâkô·+f¶mRíòŽ&t¸°¨ZPµYzsçCeiŒº«ÓSÌ„pZªÒlîpò­,ä7q$yê)–Ó=#'Üig4\ž\¦9›úuG+ùsRáüŠsÏO¥‡pò_©® GÞW×í…³¯ŠÁ–xPÝÄ¡ÝV0oæ[°õ@uqv^#D%Ê®‰NÙÃÄgìä>u¨w\JŸŒéU Ήû3»½«G“°¹ÏV_dµ4ÇÀú –tKsQûÚ^V7Æ”’M åYê˜>yUM?¢µgjæö YñëIˆµ•‘§á²n—xß°`,nWb ªF/ÿBüÙ•åbü ³åÂ%",í.*Cc" 1ÁY­G:ÏF(õÝ}<ø‡˜Pbû®³tL—…dIÊè‘oÖÕ÷D6éúDrEjq¢¡Jyëˆ{Ï ´_Ø¥ÕÕð^ À‡ò*—õ}®õï¹!oÄ 4Þ¨Ø}Dž„;¯Ó:íŽ?WU¹œ™ŒTÃã;{*Þ“›¯èìd!˜%¯ Ï¿CÕâ"‚ T7ñ¡¥ñYOÕ$ ­¹ëCR›­.ÉYŸ¹Ê)¥9‘¥gV?ëEXÕâ ›÷ÀÚüØö#¿·-¿è0Ía$µ&Ÿm#ùj ›ñ%?+ ƒ×^•QÐk92znâ«ã’–ŠŸ÷„4æø¸ÒÓÔL#Á¾WjJfhà„R&,j ‘ÀÄ{¬Ôuá»Ë×;.2ŠX?úWΓۀ‡ 5eH¦wƒéË)å@±üW‹¬ñ׌ð>H¤0¥Q‘ì»#*pqÖŸ›p“,…}1e£f—ÝaJãëíAÁñR³É™ø•< àLü<ôJ)00#WÐЩÒUë5yîƒÕ´ç5nõfßí©½¤l÷Ú$ºñ1¬/îJ°gÑYvdݽ¡xÝωN]Éxœí«È¦¨ÐDh.‚„;y~q°™:ñI¬'½”ë¬a1,YU5\qÝ*‚êý±= áÓæ_Ç^@N{?"Q&¬dpXÍ“÷Ì0¶0ãÕçÈþm)δVî+vòY$VÀ¶_¬›êÐöQƒRAëb° ËU´¹Ñœhñ…R±L} Á)]aÑK"˜u͘ÉâÛ,£Ï4©¸ÜÑ…dC`:¥ÆtÝ&%k·M(ðŒÎÊ›^ÉÒ8Q%ƒ%á…bEº2'¢Û²ç ñVÅîL¢ìóoö3Ñ=¹2%˜‡ï^ðªÝHÆ“zö®?ÌÁ·Bm¾ñ2ë“NÐD&+‹ UW$%z|¿ûi±`Šèâ'F”MøyÜÜèªv¬y½ó^ÉÒ–IÉè óèY?ýÓu °$5Š\î;2qÎzõ[/bŸçƘÂü<Çp'›‚ä|渽¢°º•ðÞÔÂh6ï.·P:mÜø‹iyŒç²áëwh1Ç#v”…¸3ðƒ&®/ŽvªP¨ü˜ÒÇà*¸æ<'5@mmðXZîK&Ðy¼ '¢Û€  µ³Ï.°!@˜ú2Zß`ªÛ_ׇ¾;?¥M¿Ùs"Ž rŸ€çÔwÏ5zÜä±—Ú8–¤có}O}lÁ!{")ŠÏ/ëí>]é’G´xÍ,WY[ëuJT’ß]×Ê^Ÿ´DçJÆsOC)C¡†uËy‚•5s ½*¬»I‡²$÷øë%RÕ&Ö$㦗v£EQ5éÔí¨wÔ¤*ÍMo°)2âj ¯H 5Ðfá]qW«ÐÓ›»k(•€z¥ó ‡™KÞ=Ÿ¶P³:â@†ßÓPõü$CUø®¥‚Z| Y"DDãš=éŠÜµiëEaŒ+iiŒ7‡E¤bXÍìþq®Gy: Ö#iwë|š…ì’Ô]تÌâÊ8§z-«b›ë7ª¶lŒ#®¥¯í–‹Øqǃ¨ú]©p\Ï~Åþû^ùFœÿiI]W¨ã 9¦7‰Ra±ö±çô‚«G™öZ­ºè¥ÉŠËìû^œ4GĬ8ßÕ˜šÍüÍÜW@‚K—w?» ÀlFæ¤FÒZ7Jý,Ž%¥Ó¸ñÐ=ýÝAÈŸáßjéK†äç#š$¥ex½)[ðåÁå’X4ï›Ó‹ÇG…yeЮê²Ù¶TÍ:ò!bÂÍ ï‘|a½’ìaûk6f| šº6ÑÊ) ‰ÑìÄ/ß > endobj 81 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /MCVATH+CMTT8 /ItalicAngle 0 /StemV 76 /XHeight 431 /FontBBox [-5 -232 545 699] /Flags 4 /CharSet (/exclam/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/equal/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright) /FontFile 82 0 R >> endobj 152 0 obj [531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 0 531 0 0 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 0 531 531 531 0 531 0 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 531 0 531 ] endobj 153 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/sterling/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 69 0 obj << /Length1 1399 /Length2 9816 /Length3 532 /Length 10665 /Filter /FlateDecode >> stream xÚí”UXœÍÖ`ƒ4¸CÁƒ{p·àÜ Mc»»»» ÜÝÝÝ=H‚†óýóŸdÎ\Î\Í3Ý}ñ®]U{¯wWUS‘+©2Š˜Ú%mÀFV&Ö1y5V+ ‹(•˜=Ðbi7‚?XyyÙ’@ãׇ×ßGN®¬\HT1{Ks €VŒî_“¸"Ö@{K#0@Þb´~Íab¨Ú˜X!®L ò¯ ÐÞ hÊ„ÄÊ 0µ4Œæ–`$æ9É€ÍlÜÿ6u´ýï!' ½Ã«€öM:À«¤© ä 0š!1+ؼV¾ºüßÐúÏä’Ž ‚‘õ¿ÒÿÓ©ÿmÜÈÚäú?gØXÛ:B€öyS =ø?§jÿKNhjéhýŸ£2#¥‰Ø0²r0±püWÜÒAÒÒhªd 1±˜€ÿÄ`Óÿ4yíß?Ìâ ªr¢b ÿskÿT2²CÔ\m–?³ÿaÖ?üÚ${K€Ëk—Y_'¾~ÿûIï?ŠI€MlL-Áæ6N.€‘½½‘+Òë!z%N€;+Àl t]^™™À6×%€×ÎxÌlì‘þµ¯¬lf3ËÅþAN³…«­ü'Ä`¶}Ý<Ó?!n³ÈÈÁâO„Àlþ›9yÌ&6 ›?i¸^3‹ü¡×¤¢è5ŸØz]+þ‡^3Kü›¸YÌRèU^ú±˜eþÐk…O赂üz­ ðoâa0+ý¡×,ªˆÀ¬ö‡^×iý›^O5³Ñz3þC¯Ö&ÿ&V–צáë[ÿÂíÁ_øj`þ¾*Xü…¯}´ü _%¬þÂW Ð_øªaý_Ï 3ø/|Õ°ù _5lÿÂ׺öák]‡¿ðµ½¿ðUÃñ/|Õpú _5œÿ Ûk]×ð¿7¢¢6.\ìF6N–Ypx¹x=ÿ×™ê`K;G Œ8€“………‡çŸ¨‰£½= ùç/ëõRþ7›Y¾Þc Ðh‚´4ocÂð%¹!¨ÔK"² ŽÎ8µ8`´=°.•édsÖ¾qB Hz…ˆñŲü]Ò™\³©ç&AƒˆÇ€»*sà"Æ*6]nš*…ɉ®>ô`v7ºufèÁÙ®m#ÃÅ2åí†S;\Õ§#Vî<‚³0ØÒ…ùß×^VÞc›KÈ)¦”{IHzÙ-Ÿ‡1#§R6ù6K…ƒxºi·XÏKÝkÓV«¨©¼áÙò0s©OoYè\̶ÆXÓ­È–´²x¥_ªëÐÉ™†œæ•RP¹‹‹ízÞ‘|™þ‡ÅM~Ê%†uº9T®Vç̤7ì79ûuà†¹.¾ 6¿C–hþt+ˆU¯=ã÷! ÌáÌ! ÍØÇ‡häY³’Ãa4;Ó õZ¶‡Y?Hälîˆð™¾9ƒnÎâ3Ëý¥Î%îmý(’BÒ9¼Z¢(s³zûQÇR&¬¤|Š[ï4w7âC2“ú¸;·_¾\7“ÀžúRÕ,”(±&}¼ÓCï’ïØþ¸ï§¹{Òï“!û§RönȲg–‰)Ú,¼–oÕ(®è‡õåÇä‚ ÍÍHàX$äQçûûÜxûGîN-¯éÉ„¼»:í›×‡œfÐÞpÒÒãÁBs‚µ3–Ê‘z9èUüwµŠ©ãTnÔˆ[LUj³æäÙ­‘ â¢2¦Ê©+üOYLJy¦9ì=º˜e£å „f[Ä¢tÆ Éñ`Xÿn…Hh<È<¼0Ÿ-¨jÃhX!¶Úgz&!çŸÐü*PºzP'û©”Tãî­^+Ñ<¹šbïvn¡ŽO<.PȪ¾§ÚLÀ˜!¤¼Mó ¿´¢kч‹%L•áCôp OþlûFèû°Ú˜Ì9iâ¨^fTO¨MÀÒ~YÔ³} ¼ î›5ft'a⟭"«MeUÒS©²È‘ª-:¬Ìû^©ÓÐo ±U`mÿšt/B÷®‘nFéÈåÙýJÉã­§|ÔI<ZЬ-r—uó„d#hxóU‰Úüê×eêãó‘φÚç½BÛK3¾>«–ðÉe‚ HTSŸÞã?þrò²Îpq<ˆ2ò$1‘ FÑ&P‘æ7* uG§†ìè,N¢\¿azûù©,O’í:5< /N¢{ÖëÇ”h _Çk[llwómZÍu'dó?Vâ™Úø2”éÕ-¢ÙŽðSï»ÎáE"õš‡i”QjgmÊ»¾”ÊwE»¾•º.ÞÜÓ ßrî®rpŽjF‹ö’j\µ-Oaç?#+ÈF †[gEŽS¯„!‹Š#`"üYh¼ÈýY G:Êâ²”•µkP³}}½ùý̉6*zi‚†ÞmàMä"ÚUQűRº %ÙÏCMÞÙVØls]Õ6›ãaÆJ¯»ª©v$šÇ¹‡:Ñ Š·ÕeQ%ï,Řò‡=ó¨'Úƒ³cËá „ÄÍl–É[<|ýhñ±ÃŒ§1jz" WüÑÓ->º†¿ÎÎà2„Ï"|Ù¨òÕ ÏßùÑ_qü¼ÉéCã:RU«—0€«¶i¡%¹,Ÿ=èó¬[j‚30б ~18ˇ¸;–²ãÉd¸8k»Å4¶öƾ×w•èû¶Màî$zßs.‡’R¥ø$’‡~èiÕö5þËOMÞÏ÷o…¦öcW¥xEÚ¡¾,Wžã=bè\î•;~£ÁœcfTö¸þж—P¹BÂú§ËIz öŠà@¼2(;8ÑëÆÁjaâxžH—ÀZä@®É+.-ëàçï-aDoúœÜÑ'©惩SB¶ˆÃòËÉý¤h¡!TN2¢(3qC®+u+9/vœ›HˆÎ…å»)”;½òâ9)ìQ·¢‚èK ”,D&Þ²s¶5›XçydäMS`ÊÄÖWfH{¼*gs¢›CÄAX§h(O8Ò f$ ë3tòMü¼Ê¬•úøVÏ@Î¥Å6ö~\ùê¼'x+²”EÂá?QŒ+$u¹°s€´ÎqÍ ågÌ~A®² e<±!¤Úû8)©*Æ„YJï(5)I¦Ý[³tªØKü‹C?—ùËAŽ4yôÚOUË@Jÿ¤¤È1Î_+þëQŒúïœEÀ¥(;ªÃk=ƒ÷ÊÞÃ!'¡Šúetnoõ‘G¢û\ÀØI=E¡¨šgçÛöÍîè[Zý¯fJmç¿UÎ[6ªÇÜÓ½Nd#bôs§ÞÓôx˜Œ÷0"¾¥2ö虢°ÕXÇ‹:.’ùÞ©‘"s> K’cå[èy\ç¸Xm»GÓï ÜÄõ¹Ôø[p=K6íœÿ‚†Ó¦08Ô±¤oÇ ÷9etžÕ=%êý¾¾37ë·˜ë(Í#>vqþn¾ø7M†ÈtÄIôóö+Ø~SÂ>ä‘Ñ‚Q÷oÛ»Òh†àÀÎò 0ai,ˆ …á9…«Y —ldƒ÷ÑDÿJl+¿©ùÅ\æ÷™[««­ÑUëƒì›b<н¨t½Çys†ÒZÖÍä¥Ã#õBã­¬jÐæ_XŠ*’CްÄÍD ¥Ô.‡…$Co«ésdfnba¤Ç_Ðu€K{J0ìÖ&V‡mÉü‚0„ùW²WÓ’²|‚Ÿ¿T„´ì{¶Áç&š ­(«¶‹eà¬óMái‰Í~]¾”Ï•ºyïéÏ•ñÓÔ–œW*kÎK¹`Ùm¯Ï3k§?œ£ Š EÅ­Å(;‚³išäÅÒVqdŒjòó³KûŠ¡°yn,»cвé,/½Ú›Oè0,a YûÌcÌdúÒ` <¶Å‰@;ð]¢¤ØdÃÇ$U!m~M}¥ópÊC4J Q†(šgÆ~!å›hWR—ÀÆÏ&¬ÉG¹ ß÷:‰nl?äDè +¦|ñZ¬a¿uÛ9}y@û”ùzžÐŸÁRJ[oÂJ£7¦ÝR,Lv¯ã<VF#Þáy2g¥|'õAúýSúãDZMÜþþ%£¶¢[û–ë ïSe¡Â³}š‰3ÞI|ÎEVD AÞR4uØ&oh8m¶ƒÙ†¬®>˜$`À™DùÌ϶5õdªOH ´'2 ™‹‚ŠÚíöJ4–p:0º"‡9Œ;ÏÔ`ë-ž¤l]Z&1lߥsL‰¬%©Jæ—]ËYGÆþ4«x>zW†¾•÷ËB’ÒþÕhoq?ñ˜% óú¦ ǰ·m[ÏÕDXð²Éxs–ÍU0ô™¦õ `å|Ó¬“5Á!ü|\yÀû_ÀjÌ%| –9ŸÛ#x qhQ¡'§1Ö›S¹N¥Lõ9öÎn¾å6ÆŒd³úøøÙÖ%œ\•§}“¶X‚’˜¼[Qmž]ó[¡jÌxvÜ«©jÓÕÖɸ:º; Ö>+¹=¤±}‚uç·¸ÀÛbÁe‚œH~¼r7Âh(,ôüôûã<ù­ö3+yT“|Yœ½R*÷kKë1yމ¤+™VV¸QÇ,­Õ08­Q&\Ë„cgSÎ{…Þ]Ç$Jœ}Û+p~õ£‚Â@däØ]ùw,®í?|Ë)3\YpÍ·ÊÏÔ¢%Ìy¤ôÒÚ…?T½×àXüµ6ÏRBº÷)¨·sMßëÄ?&Ÿxš¼€bn·#hp#cñÍ:·¥?Ú>6 MRV‡p[ì¥HS¼Í'¹7{èkò?00“ 8LŠ1Êš‹žÎV|<2tÓÝË7ò‘S¶§ „žõñIW1£âá´…+ PÎ^àì÷–a-*`‘¥Íoµà(‘ºÅê'ú%Rä1€ŽeVšÐ1\òá´ÐæþkžšF8vÉ÷~3j÷ØŠ÷˜Ð—ߺ}–%›5¶Ô4û‹DVŠƒ–N ªL(?{È÷ŽîåI7³•”qëØi=è°qUéu·©–ûŠU±yÑóäÏ]ëwË:AQÝîY½BVmjá;Lm W.†¡üìŒbÚCsG¡n¦³=ù¬Ä9¦*)ø‘v${À7ã”0 ¬ý„ªÄž]h”>¤:<8 nüþıo93Î+¾1°ž°Šs.€ñÓ`oàù gæDo€À~y…b` eÕç¢H¾Ùã yïxˆì‹q0¯w‹ëãÍwš-dD*¶ˆ”bê–qš¥¶3T9uü²cÀÖaÐZk– ÿ¬I²·€ì³A肱·ä23tŸ=°<Í9·ÔWqåEŒ šú¬#Î¥­RÉD9äàð.­(d`5áçæéâMÿ–® â]öŸ—O“Ýn ”I§¿ÓÓ ¥|V KÛÙDÒæsü¾8ÜÌJiÊ^¾ý›â€¨e+ãGghQÉéµ0~÷èEñvȺÊùÏy”ï/L¿¿èH¨s‹Ý8g'D?±2|a?´Ý,c?"'·ã³lkþUõs¾ µÀŽr5äÇàwÄúÏŒ¸äÞ…²Ü©Ø‰Ìƒ Å“¦lšä¯YIDk– d¥ÿs3>„]ÓÐë–]¸,dØ|nZŽ­Ft|¹¶‘uV`8»(ª.VÆØìÆ"ÜòòÑ—ÃSÙë;;óhFëhŽ [õ&&àÁ©e3ÒFè Ø‚¾´ê{зJ`~Ä%ñxÿ”öÑ”¦µQôgŠGïïo=Ø”sö(‡¶î¢Îá—/ßI§æAÓu]I0ä*Ÿ§1h°ç‘5«’`ðªZ…êÑÀïß޵Û$F×VûÕošÝ»9q×HVæè"P–¡Î?2Ÿì´è@³fU^Œ"'ˆ®a–5@ÁQ1±¯"Ûì÷½K“’¼_bZ•QHZןe—ÔÆ/®ñÒ:É<]0šÈMÑäh¬ý¨Š·Pt" ¦'·þ†Ý¬ÿuç7š$Lÿqüj¶ìæŽøpÂl®¶Œf6š£æÃ>Ä®Q«±3 ŸoúZø×Zsèn´æÓž_á}Œ³ŠÖ4üÛ²šB44÷_AõßÏCwÊì|Ñðó¿Ç÷æ6ž·†Õf‚‚ûÚ³;Ãaã¡ÑV°ÂêþèÔÊüN¾+O8í÷ö¡¦™–ú›yŸjŽh.{ÿ• ·ê&<åy-Õ€]û×£àø°º@èb¡X»‰ïˆ`P‰êÞæ†…Q™¤IcÌ'@-RÝâOk–Ëäo„_\½-À@ .¦A†¶-…Ná=:Ä|ê6+-òÂr?°íXx”,™$—Ìîx°¼ÕïÔpü)•hÓ’ü³¹„÷娣gLN ë¸'ä8Ù-ÇÏÐ ˜ç–:´¥Õõ}Á¢ ]O?w$‡âÑdOqT4€¾—8£^«ß"b;ÙÂÖ ƒ.ä}5½Ü³e«XÕŸ•4IIKÌy àÖ& Œ)õ¤c iç…866TF.‡ù†h ¿ëöO÷:¢ê4)1,ÚäúÄjO+í=È?àÛs‡’ðIéB·Œ¹ ®8K$—\ðû0®âß½}V@ ƒ„OH'=»+ûUÆ-„ôíµÍ‹hÏ-k#µ¼/£’NàÏIèX”ì’KO…†Ó]xä¼*s]KÃåjKïflÏß¹- R_d¿‰¢<(˜›¸( Mh¢92|'šP]dpÚhšYbéTA‘! ¾5z"àД †}Ÿ£ü›ýxÞÉädÂ~XA=ƒ³CcËœC¿EަÆhµÐô”àq!û“ÜÜE&w»ó¶9ò"ž'¦„ÖÙôË_^’¯Aa&ÃŽ³]jƒí™1j9òý"ï]ÎZì3­­•Þ:™âAèÒ‚=\ï’°²A|fAŸOûtÖS@ÐÑmßÄ´Ÿê$Þž’Â%­L\ç"̓®|n+…šåÀÁwL?¯Îfƒ´ ÙJZ9ÖÑòšD¯e÷í“£Xãz,©`*…¤ZjIiz…»EiCò€)³\imËAò¡ñÁ[¨^zÕ|¢Ïk ÒœkT¶èõ¼.- HÞã™ :°™à×J @ïÊ@]Ý}¨žãý æ¬(a—í"–OÜ•)¯;öhóüÇÛ¨Lh6ûîÜö5ñâ“Þ¤^*FµuWv7…¶faÿÝy—¶õLÞZg"v¡„ìÂ-…cÃ·à„®*»¤Íìý>ª<Á1À })Ȥ³ÿª:kZ;@}^í¹`ΔǞsïôyËþÖ"KÜ£¶&jk"Ó‚E¼Š¨ÈeñÖfÄ?³T>}ÿeQ‘;yDÃÔÿæT¬>MD–|L¶NÇíâÏxßOO›üä$q„^jTeÝhØà°ÍP¬@•³IÊöEsY©,WÜÁ‰Þ ‰k º]‘ð5¯áï^Wh’va¢1ä» Œ”°Bæ…žh¤mY¥§¸8Æ<çžÀ³Žjª9*]i…¾¾-ÊùëŠ&fO·™ó=ŸGRD}¹9ýx…à/ù!eœ.l§3ÕÊ£µxÓxS\¥‹[¬¤÷‚6¦ö¶—7öÕhüÝ[ ZåžUû\š½ŠÞýv{dÕ%8Ì:\ŒÄç­3ºtjÎ7ÃÁ —CyÏ׌*¥×Ò3ÓU©¼¾Ý’j—Ñ Wúé$¡?p;Âòt²˜H_€Ø¶^ªe~ýTÔBÜP°|„ÍñT߀ó=g»è¢Õ=Ïl1t¹3#HBݲ׷ÿèPûù‚(xu³„œIꔎê xÒªpĸ¯ìk +ÞoÅ/Î‹ŠŒªGqJh_S1ÛØžŽ_6[©H¥KÜšGQ t P™~1Øš¤•bÇI2æÙ2g]}`X¶²Oz{ÁüeA„ø…Ÿ]ƒ,Ú‰ûgNÇ›eÆQ¶¢È!7ešò_2ñ¢ÚôQk»Fì² N,ÝÑjn¬Î>)Ä„"[‘Ï4àŒƒ!¿ì‚¨ŠBEc ´).Úê™õæoÛP©äAh–;ÞŸgÝÐà†F[ÃäŸN -ÞÒ“m}ylm^MQH'êž&¢‚° âØ-GI÷ó¦23*O"¯°Ñ`ÂÎùcðú×ÉìjçµT Ø£x2`ãÂÀ¢ŸR™MˆƒqFCáKîÛT>(õJ‹Oƒu/$l«¶ÄÚÊ*¼R¬–=ЧbÎè±F¦âÕÙ~îÖå öõDGx.ØÑn¿³p'6¼Õ§]FªÊ<ò×♪5÷–!VúIßvÄŸ‡3” EâY  æ¤NûcØMíàÍ7廫Ü~hžwÇÓ}H-£r$£©û¹‹•)ß‹R0´Is;%ôËÞÜÐE A§¶<ÃÄct³˜Ñ«>ìy£¦êÌçØÓRòáfN¢òW_¶U÷Ën¿ ÓS|N¥,)þYâ×r0ºÇ9¹¬î¼sÁ)óH/¾ké 5Þøå'D^Öžeö[ž”réûD‚QëÓ¢0½ ¥TT¤CádàÁú ¼š/í5Zh³tf+öiˆïoÅÅ/˜Gþlð*+:÷¬¹öáÃ(šx» ÊËc]DžÄæIÖ!I‘ÕU|·øc{žkƒú§µ %5c {cf®Ž -(ðiö+ÀGÙ݇þkf…º\ýXN)›'Þ*Dܲ‡úošä~Ã=r¯J?4k {éè餓²«Dlî;ý¢å €§×•ÕØ¿:;J˜SMZ*Քψ䕟²XAY_°êÑ›gÌ=sþÚŠÝà’D[§÷~óÒÛ‚ý2n^(Ê-ÕÏZ«û^5f¬‹JÛº0óÀ®®yò*UdäÝûÁèCš†³ñÐY©³×t<âl\S. œ¹É¨çbŽiÐÓ—yßærË®5 ÊzK÷ŽÍtÊA%t #Â(q´« l”ãØÆ4“¦¿Îò·¼kî·´Z†Bò lŽ3C%”~^F$¡îÜIbaM8~Ë%­²ÃŸse«‚£OrR$MÊ Cp{f9¾uTò¨Og®þSß¶vp½ƒR+³<#½—ü• ÎuθUð.]s[J?¹¼}˜1°Ä¹,¡§Ùh³ù¹E·ô2ï†|2n¦;/8:w$µ¤‰E¾Y©÷™̰}©†E¬LFcD;!KLuGP\WYËÔ>Ò-ÑY„Kw‚T_ÄE}º~q ÞÕ¾OUn¦س¥òy“\YClä´‘>O Û¤Ù{9tïµpÒŸ)*ànH{{}‘>ú")-–‘!þ¤uÆ:}‚A\ë$¾Yz‘`ß·jrJÙ… ÊC˜ãoS‰6t@Ix\ ¶Ô‚|H%VZ=Ð0òÅ[¬`ŠÅM‡ô¡fVÖekc OžOAkGcŸ”C2}jƒ•¿bæ^¹Oؤ¥j©6ùcø)àª@éÍÒןwp;òe’sºÑ&öHsºù_÷¸ì»H!e]Ê y°ö\. @gú¬÷oëè!›ùëíÕ§ùû.°!sŸ%£«=íjÜÐË +É[$â*"7d].öÉö¬+{…¬xÓÓ\¢4lcýÀXz²5#ËÏéÎb´“81lŒu[±Í¦Lwú;]LˆèË¥”ÜîW"&€qÂ᱇“‰.Ã"ö‚°rí;̵[ùéÏŸ>³U$÷µ»{Š;¬]îˆTBö¹{l@FQC~‡8iâ Û£›{Ë8É0Aà2oEû÷‹ Ù¡ì)ñ«¬2£ltÿ‚ÌûÇmìï4›g0C ‘» ŽnöF\¤}Á]hÄz_:ã´¹q‰,¿rîwØHx©ý}¨^°/ÈíÞ™ .ê¦T¶am#ìÖÓF@%Ø×™Zú¹ ky­.éÃÔI1ñR›·—7›H)¢N™¶ñ¶²Æ/iST½*¼Êqd˜ ¡¶…gµ£ûsëf†®ÚÕ—>¸ü7±Œ>âC"ËŽËðYn+ëËŸ m9JØâm¹²X½®=RÒ0³XA—»4Òåè®ðFkúúˆÁ Âô¼rƒE#0'ëþU™ŠÃ÷ªPCÿ0…O¡*ïù'›…e"çòÔ9:IyÁXOOn1#XUŽÈuÞ)T±3|sU ëoÌá¬ùèo/uEõ|ëM@.5u|²ÈQM3ì¯Ý:Ð`Üà (ŸËõo*OŸ%æÙ¬~ƒ_o ƒô¨ŒUª†5“c"M(™àþƒl\¢ìQ&j£z ÞÉ7œ;ß/~™_0äãý—<ðÀå–ÛSL—}ü¼«XÀ{Ê*%›`ÍÏX)þ[n›) ÏC/ÃÇ}`Œ(ô™1ÙQÙÑh]½÷¸c<å¬%z[àìV-aÁÞ °÷/§AŠ$v§ù¸"Sx׊êÊlµ~ÿ ·±CưÍÂo ýÔ‰PÄð›<)ÔNÃ)½I$Š¿¶ÉôuTH-[–ØSðÅÚOTðŠ.ÒIÔv[ 2’ê÷Ôü  9'á\hr£/³šè…Åyrºs d’÷­ýz;AŸ)›z„p'öéÁçq¹2ÃS½œžC}ëÆ›cç8Š3¢›9Ý-µÅùGG4¦·“r aáÈÎ9£Úø¯qؾX:v-õ„X÷…ô(pºÛQ0Õ!½ ½ˆ¼g ’Ã#ùYÃÑÄtzCѺÈnÚPâ–?(yzÕžéJ~$žÑ!'”ƒk·#“ªBÔÛe‚°#ä9ù>!ù"2|Ëö£%*²¿¶A(ý5IÃ+peeBŽKöuq-Ÿ”®x®gÙ¾]Êᛆt«g°ÄIбÝH÷Œõ@ª=sGlð#"T^⟹­ÆX "£ãÝ:ekó#iðµ'²‡Ý+ð„Žøn&PÇïk²ñr?âJSεZ·†¢?Áv.²K¬‹ÑÈH ÍÝãëþnâÍl Þæü¸“»úÔË6……s Ø„óV\3ˤñt¤ƒŠ ÇÌüa‰p·€â*¨‹Â«ÁOŽ`Oliíœ]|Þ×ûmÞ^³+Ü!G¼yv~}cœ1ݼ/3¨vqý“(2󾿝ì¿ÐP¿§9¿£ý1ïÓ#47´{˜÷¼î~-+™È9Ñ÷Œ™,”¿„ÖÎ@Í…>«¡A¦“žø3Ç}.³€§,2F›?3½ Õ7dz i’¸E±à'÷ê¡¥qò÷<fÅD_¼ÛⳂ‰xò,¾oMx~ŠB9¹IÞ~ñ1TLl"2À´mÀl‡à¡eùQÓȘ Ãî;UtËÍ ®â0hþ~:ɾ2%â|yèr@ón°‘Q2¶þ<¦‹0v6E¶²ÀúƒIgƤu Ì:¾¯àç‘ÜÆsü{í¼êÅîAÍ®¢ÎŸŠq0j¡"€jœãóc ≸µc/©äHž½¢ë`½ØÌUŸ]$—ÐgçÆA²I&÷Zw àèÙ¬BuíòãäœëáèÆ*j‡˜Æ» ‘¹CâÆnä”B´ØGM¨ÙõaÕ×{Ôw`zŸ"  †Æúe‚ qË‚+ÙDΠ­ªÚûäÆõü{¬ÝOqòƽÞÈDzH®³x¡‘wBf)ˆ'ØL uœ¸[÷™Û·Ù„V°ñsÁÅÚlAU㻯 0¬”Ò°™»AJSµŽì#¥{' GœÀ‡s õAo zÕ"ÕÒ@åð…µì †è»,ëLÖ?j¾f^ç ±Q»ð:ÈmÝŒ†@ñ~5øiÈà /o\ùëÂCV&º-Bp¸¥ŒMª= Ü Ê‘afù?ü ýÿÿO$0ì!6ÖFöVHÿ‹FŸendstream endobj 70 0 obj << /Type /Font /Subtype /Type1 /Encoding 153 0 R /FirstChar 12 /LastChar 121 /Widths 154 0 R /BaseFont /DNSKBC+CMTI10 /FontDescriptor 68 0 R >> endobj 68 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /DNSKBC+CMTI10 /ItalicAngle -14 /StemV 68 /XHeight 431 /FontBBox [-163 -250 1146 969] /Flags 4 /CharSet (/fi/hyphen/period/slash/one/colon/A/B/C/D/E/G/H/I/L/M/N/P/S/T/X/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/r/s/t/u/v/w/y) /FontFile 69 0 R >> endobj 154 0 obj [562 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 358 307 511 0 511 0 0 0 0 0 0 0 0 307 0 0 0 0 0 0 743 704 716 755 678 0 774 743 386 0 0 627 897 743 0 678 0 0 562 716 0 0 0 743 0 0 0 0 0 0 0 0 511 460 460 511 460 307 460 511 307 0 460 256 818 562 511 511 0 422 409 332 537 460 664 0 486 ] endobj 54 0 obj << /Length1 840 /Length2 2174 /Length3 532 /Length 2779 /Filter /FlateDecode >> stream xÚíRgXSÙ©†¢€tЋ„n‰B‘¡H•¦À(jHn „$„ Å( â€%‚ EADŠ¢R¬QAGe ¢"UŠ0±½¨3ã÷œŸïýzß»çÏ]û¬½öúÖ>úº>þ0=t¡ÓX0„ÂÀz9¸!Ì„™9D_Ëq, æ„c6ÂÚ8°I ¬l,,m6‰H–Îà0)$2 0Â%Y “‚ÇÑ/‹ Fˆ4ð8*àOÇS@Ç p R¿¯Q€2£A‚< IþÕ“H¬¾— lÆ_WÑ 3Jd 0™4D t•@"îMÍENþ¦~waS©Þ¸ˆ¯òæô.‚BåüÉ¡G0Ø, xÑ “ö35ünÏ‘NýÇ 7ŽJÁ;ÐHT€!,ÌÌ-¾×)Q.”àCaáÉG¿ÕAág¢ô¾¹€ûúl÷Ãz›þ½Øo×>8 Àa€€ùþ7ŒøE11)1ÀNs3ss„ˆ(:ý…ü4Ι†§(4€DY8&Ljž¡€8@¡ÀŒy†›Ñè,Q J& Ò™¯{µDp‡¯¥ï À~ kîü7²ÚÀÝ~ Kîù7B‹ú‚¾¡fáèH‰ƒ!­%r†´²¬P ÿNÜN£D²A7'ennneõ= <›Éi¬ooP”ó_˜H­c@$ò;®Wg­¶ËDî¼ôTCvh´)5$-)e®;%¹Õ@ê™mçç–i<4 cÌ~\©ìƒ”¢B@e£Só.Ó°èWlÆ›çR.žÑ…_ÄÄÕo¥ZE?2(›@•H.×,ÃnïD¹ž0|ç'_wmoÎíÍ›aéô“­˜òŪüÅyBù®?®„m¥|²J*=ᮜjW’aÃÊò±Âõ\µPí+~"q}¶€x"t[íö›Ú†û›N5dÞ7.xx«Ü¾slBüì#›—Ñ6å‡÷…ml[Ÿ¹×7¤6Ê'Ãô¸Ÿûf¡«}4Tw½†û»ª%dTâ3W!_‚±Ï½0ó±ÔV]…À7ç…Ú‹2ÖÁŽ~ JÑR¨UЭmzæ©”«~³˜ÖÍNZ4×B•É‹®®ã¿=Yôx¶ÖXùƧ›–[òçÕŽ•q¨[!þ´ÔîÐŽÒ&ë·p`müûž®„0F}íȳ÷k<ãõú|b‡‡ÅePz³û"w·Èë”Ý2t‚Ý’hñ…²ä=TN©xu6E0‹÷–Ü3‚_Çènq»y¬nªkŸ„Üç ON|ÚþdÓS”FSOλ3NJ#e¯/@ÏßV-½ÃT6`Ìn±rRŽß”’½­§Ê;„Íά>p÷S¤æqæ«ó•·«ƒ 8¨büƒ­$ ßÓí¼~Tæ}Ì ¨ ¨x¦°"97WXí™´G=*a]O¥&äýþÌüHKHÝžJL›r9/[ÉâäžYÜ…·Ÿ8x¡6Ú#™ ~¸Ð½fyåMYí\u>ªµ~ƒ¦x \‹÷jiwIôÍê´jg¡{íFÍLyw5äùi—­~V_Øßà+?ÄÜ©DäÛ!®åQâC”ŠÉA0úÂÂÄû Ô³ÓY·Þ°^§Ž¬ü¬<)ýç´Tå6ã^Ì•‘Õ¡Gœ)¯Bˆl’\Æe1ûyá{LKBðú.:çîHcò N†äÍ¡˜ÙÂaûÕÐ"vVé¾{ -ÌI‹cW»*½ÄÄd¦ ¶N&®,‹\÷eÖy>/ø¦3û—@®±]¤L÷»ð³çŽ ˆ/TSF9žY+ÒåA/ŸhupŠ5„ùœ›ÛJÕ®ZvöΠܾT”#rúÓÛÊ´å¢óŒ:¯|tU² û¾Ÿ îlRí™»kŒ j𲩑kž™&¶.4*7^’0õÞ–zBÑàÄòã´Ú’Ùq%㣌vë_dr™©ûŽÇ_“z;o³÷á­À•Ò{NGþ€O¥ÂÌqo½ôËœ‚úŠ!÷#Nîq çÞ1Ooqúl'Rlr0UcƒuŽôRÌL²$3g»K\uütEá²»¯féÓÅI è3v‰§ß96¯Ä¼óÀÙ“%Ù +ÑÉÓº«H3»Ï¶cc<6¸…÷…u$¥)`bøÄ¼½…Íb+Kº{öÓéƒëêeÆ_íï]3˜;Œ«šº­ï­µ÷¼¡dm3ÿ?Èÿþ'ðTÇdÑ#pÌpÈ¿p|šyendstream endobj 55 0 obj << /Type /Font /Subtype /Type1 /Encoding 153 0 R /FirstChar 65 /LastChar 88 /Widths 155 0 R /BaseFont /QPURCN+CMBXTI10 /FontDescriptor 53 0 R >> endobj 53 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /QPURCN+CMBXTI10 /ItalicAngle -14 /StemV 107 /XHeight 444 /FontBBox [-29 -250 1274 754] /Flags 4 /CharSet (/A/D/E/I/L/X) /FontFile 54 0 R >> endobj 155 0 obj [866 0 0 876 757 0 0 0 472 0 0 698 0 0 0 0 0 0 0 0 0 0 0 866 ] endobj 156 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/exclam/quotedblright/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/semicolon/exclamdown/equal/questiondown/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/bracketleft/quotedblleft/bracketright/circumflex/dotaccent/quoteleft/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/endash/emdash/hungarumlaut/tilde/dieresis/suppress 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/ff/fi/fl/ffi/ffl/dotlessi/dotlessj/grave/acute/caron/breve/macron/ring/cedilla/germandbls/ae/oe/oslash/AE/OE/Oslash/suppress/dieresis 197/.notdef] >> endobj 51 0 obj << /Length1 1142 /Length2 3801 /Length3 532 /Length 4534 /Filter /FlateDecode >> stream xÚí“y<”ý×Çí4¹%TD\‘l13ö¥; £%["˃aÌŒ±Íd‹ S²„0Ö"%”-ûØ-¶’d™Jö,…x¦îßï®çþýù<=¯çš®÷9çúœÏ÷|ÏH7·”×uŹ  pX?y¨TÐ3±´„B¨$)©G@!üÐ8¬>Â¥ @54 €®¿; ÈÈ«i*)i*)ƒ$=žD@»{øÒz2?ŠÔ]oD`„ŸÊ›¡D`Kò#)º `ñã _Àå‹" \@P(àŠFú.(w4þáÈë†Ôþ »úãÿ @|¦i†I€aчÅW”lŠcôB1œüo˜ú§¸?cŠðþ!ÿsJÿ‘Gx£1¤Uà¼ñþ~(`‚sE°ÿ,½ˆúËœ ÊíïýϬ¡ƒFêbÝ1(òWík€&¢\ÍÑ~HÀ ñEýŒ£°®ÿ4ÁÜO às¶fz†åþu£?“æ4ÖÏŠ„ÿ[öGõO†þbÆ|h"`Q€@ ŒBÆïßoÿhÇ"q®h,c%TT€ »Á    ±®("€"2ƒ°8?Æ'c(!€Žúq¡Ê*؃„÷@aĆT!Ý_¤€õÿ&5U|þ©`“_Ĩ4ýEØìoR‡`ó_¤€-‘2¶úE Í‹ciÀˆ_Äèàò‹ÂháúB0ê7TÀn¿!ãŒèß!Œù ÊÞ¿qu`ìoÈPÆý† eüoÈ8 á7d4òý óóû ân †#É«ByEã°€šŠFȯ³Æ¢}üQ†ú€ Q‡(ýŒ"ý Öïç–±œÿf74c•Q(" z?€Cj]÷L©Œ,…çö>f—e†¹WÅ›–7½¡î¿6˜ÀŒÉaì#K/³Ý*¤ðóL²OŠîûÞ¬¾Ðe°îŸúvw2Ày’r¥FØv•bBšÀ‹o^›;PWÙ¿6¯Âlöšþ² éR^{ærÇÜ=si}«)ΑãLÍöÍé×UÕl (ë¨e'•Ž[ð¦úD+Gò&Ýaí¹êÅU-7¼‚«÷çÛÊåÊIܽ¼y(î ’Ú=}›³Bc¸ºây_j“ºß³É¯ÛkwT\ë¤7;Ý2E¤ç¾£/m;ñikòECæ•íª*ŠZ•*Æ$XW/ 7ì‘PŠ|’Û «̈á¡(M|Ð2ÀU·tæ-œÚ³Þñ>3 Zínl.ÒĺÝùZþU>²vÚüp±ËN‰•;×)»7çôûô2ä.mXÇOçÐϽ¢<•-½pú<ä¯C1®6èçëúzó §øŠ|ý½Wõ-·9J^'ŽÎ[pÇÕò{EŒ}"`*;, ^_úãlHXæ‚ɇ`6•‰êº÷}½ƒa ›q)sÉ—9¤ÐZaƒY¡ÂÒ!ê=ŸòÃ]æ\_n{Ù:é© 9m­'Å+þ­ñ½°Ùš¨&sf eoŒ Áp{¨9o©š0q8Š<É|i° í™ÕÛ÷Ü`$ÿ~>~qŸêöYŽW.cÊ=‹oŒòµÝ–&äD}ÙßéèZëñåmó>e÷a]‘lyœ‡í+|óg‹¶@HŠ¢ðy³þö®ÏìºNi±x|ìÂäG›‡ª³Ôd†&i¯·ÊøOéeC£ƒNÒº=7£¥ m¸¾áÓn:élÿ¹«™CC{ê»Ý40mœõßQßk“Íà®ã/àJ‰Imœ`5‹>w@±†^ö]qcv%óª}a‡Å©ÎøÖÖL´¼XƽllWàK˜q‰É’ï,Ö»ïÊŒ†——„+hVÎTdo…Õé]8"ê8&³o- D<ÜÖ ˜j¦O6pó¸ýQïÄ A~ÞTYoAéT¥i[çW};fö|6uyÍLCò˜BE¸ÒI3ë)±ëŠÌŸ5;N½tß6Ú›Zy;üŽ”@‹£– ¬ç>7¯ª˜êuÀ+D¾Ï<¼|ìþcá—¯O½xY)¿ûÝþ»À ÍF' jCOáq(€½„¾ü i+Ã~õIôø ö®U¨øRïÍuÊ~Ž{é€ÚNVÍ¢Œûe`îs#ÔIJ޽¬D\ L6)3>ë?z+y¡÷úvÑ ºYt†T6$Æ`þt·\Ó å Éê™’öì°í§‹yJ¦ÍeEå]QѰË0ÑÍE9A?î5]‰Qdv¨©´eR±ïSÐC²ì‡w‹œ½Òýª×ñª„½LªCJ©ózkÑD¸Ê¥Š2uúÞ>RÊ&Í­R硌ášüçbžæ³ •ûKB¸tw¦¦há£Hç<ýÓñdfŽ[5ò34 •áË*Ðጢ«ª½Å/¶S_Žº­ÈÌ2®ÿÕâõ7æ+éÚuÕñ¥údÎÁnM#\Ù¼DµÄÒ}ø¶ì÷ì;|›ý”Xé‚; ß/š:"©ÁZ­†ÕEíõ°K«Qú‘ž4÷Õ‹ÆÀtÌ@µI±à„•~lBwMK'â`W¿À*UéÓ×~*´¶Ô;drM:K¹²×jBÐ*s µfÿ”-ëÖãMçäNà ‰éϲf{fi×ìÈïiþ & ü^ò,óÎàv‘‚žÐÅ>Úò7c#БäÐÏö,ŽÉSüÑšÁr畨ÊÏ]`,™V\^²ŒØ¹à4Ò++ཆìþ(rª³¿î.DÝDu—ª8¶KÄd Ù¯g¦œÏº²æ+–or2úÄÁ§E4À׳T¬×‰ÒÎ)t¢yú®Ì¦ÞŸu¼',ò3íb¥·nabjæqÈkYõiÇÞ‰‰GGc,š±•\8_¶>>«ÖVµˆH.¥;R¶_¦§Ÿ®%…gw¼ÌýC´ØIüî—Êp$w±\Ðs#Ÿ"~àD¹ÜÑ~Ý– žº„w‡œN°îG‰|Ô×qÀ+ß9ûò­ €Ây”ÍF>Rp&39ÀM[Ý}ÅÙ¼hJ–)¯Ãw¿‡ VˆÜ¬k“,¿£%˜÷ì^}°Ž¬]_²qvÐ`›©rßÀ-žN¹wjâ-^ø¹1ýFæ´¢oRÜlLvEùó¦³ôëgO¶k±¦‹ú&²œ 髯®²ìÉöÌ|ž>WÖ?_)dä!B½ÖD:-êvd/¥ôË^}úe–Á8‰JËÒܰºÜFH7üÛ¾~¸0Ì“³„\»*â´0FÑríšÍŽÙKÖ¯ð7ßÙ°pmìynf"DMcЉ„½pÔRÍJ"dœTzp•*1 ⓘI >ãiŽV ̈–¿›PùÓ›´LQM.Ç^J‰è‡§IMÃÞ°Ž<¡ƒõ‹ª$¸–ËÖBçÛJ?nŒ[ˆ(­ i¸šaÇ ¢OÞYü0}W<\‚0mÜßÂkåÝAIŒàëÚ"5ÝsÎÓ~v¿–…ºèî,ÐY(Ûfø“ê>³ð¤Fxba…YÛx·bç^Rg¿ŒY5çÍ$ß®¢=%?ˆº‡šëîW´>+hË雳·c5®¿1£|iŠ0ÂýÄc”¥Û¤­a÷í¤|*LÅ®i.ð=§É±ø»Ÿã®úD Ù«1Ðß[_ôm¼`MØk¬;dæsåvŒº4f„5–r×»ðæ šwK–D´©·náÉû°—Ï„ØýU%l–oèÈž[fù nnÁw§ÐÓøòþ,vœ·Ëèg}x󋜆ïÉšOøœ ß>jUhdU÷ôçŒïž–\r\ƒÉs×óD†ÕÄ›SßæÞ½æŽì±Œ † Obz+VþÉ7ïjÏ×ùï…í±QvVl& sgò³«OذíéÛ²Zjl0mÓ¿ 9$|ïèž~!¥]ÿEÄp¸î@Hs†q˜&÷éÜ41Ìt{Lýv£´ÏÃÅìRæp¥4«×‘&yãé«ðâz:Gýh”ÕNkb—Ž ‡Á†ãÃaÇtÑbv#Vè1âIÛž?æ Ö¼{?)"$ye}OôJ0%„ø _Äolßx6à6âsfš'¤6D…-0_¼ýÛ5öÚ¦‹DËzùváé^ò ’›^Î*d…\ØJ(uW¯'YdJ©±iôv]-yÝ·©Íœ|¾cÙúÆ9”7$/hLJǒ‰›íHýøîÍǵ§rµ*‚åK)óÿ˜ßÛ j«sœ)»p-åhV¿çá—d‘ÁµI´Ô»“ý•·—F꿳wœ´-õXÎQwÎÈ6òv&NÊoYn‰EؼÊ…>VµýdŸg£Ï”zÖÝ1ï«§eÜIøƒîG¨—eóL_È|÷§!»¾Í‘Ua¶h©TlÀczJ“Ý€> ë…†{øQ•,v"n…90‹83i\ô½lôhx—ît3'Ô Í¿£ó2×q¾ýÞ=¾jæ‚¶îXn‡)”¾õš’Iíc3:({žÛËHPI“ý{¡Òõ÷ÒD¢Ú½ÉÄ ÷âüÕy]9Ð×*\J•cÞy.^±‰ÖÇÒb}¥­k'?Pô:«ŠxFÞ÷•skÉvÓØ8]¾±7îZy½#ˆ{U›oÎì,°{ðk”QƃžÞ‚-i¾jR£ˆüå¦b"oüs±¼{O0³´²ö~nfézBç÷ˬœK¿ÿéZ´Æßžf_«¿vT·X@óc§ßB½¸¥OàÁnÒªÔ³ó‘ {±ˆÔv*Û`9ûèãû¸¹†ü†]ü§ðë—<­!'i¿?‘cÝ[IJ€HRnxçfû51ï{j†$Ã\³§ŠñÕÈ^e.qy6îÉâ´PǺú=‚Dcš«ÕLÅ… ?\e‰=šõjv5 X»¢édÐ !ÖZž!Á)Ð<÷‹¹S¡vôtþäþ¶èÉ£ÜÇîézt6ßß0œ¤ÎÕ&›2To×Vz}pFÇ€{2–ÖÄ£ËëHÊÄ´ˆt‡¿c¹lÜéÈ3ç­T‡\ [œ0æÏ–Yi#ÝSÝQ€L­æ®<„šë»G 1Íu]yÔ?´ÌÄQM>òòÜúŒ¢lG¨ïf‚Ú=k+Ã)GnÞæŽ çk’yFL-ÌUÑõ£oŠí¯¬øµÓCçÑlOÒ^ò>}³›eíªmüÐòR@z@•ýŒçZ~ÆŠ´<"ÖeJ¼ôp*YÂ^¦µ¶,È™Ž;hB-øþÚ§¨ÜŽÏÒW9sB»1ê€N‰¢ÖqòƼ`Së ä}ÀásJÃÛ¤Ù9>(ôæõqùð’%ôùGýmuålî—TÖó•FBþ‡èÿþO 1(Áç xþ ì(;9endstream endobj 52 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 45 /LastChar 119 /Widths 157 0 R /BaseFont /HXOCIW+CMSS10 /FontDescriptor 50 0 R >> endobj 50 0 obj << /Ascent 694 /CapHeight 694 /Descent -194 /FontName /HXOCIW+CMSS10 /ItalicAngle 0 /StemV 78 /XHeight 444 /FontBBox [-61 -250 999 759] /Flags 4 /CharSet (/hyphen/A/D/L/M/N/O/P/S/T/W/a/b/c/d/e/f/i/l/m/n/o/p/r/s/t/w) /FontFile 51 0 R >> endobj 157 0 obj [333 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667 0 0 722 0 0 0 0 0 0 0 542 875 708 736 639 0 0 556 681 0 0 944 0 0 0 0 0 0 0 0 0 481 517 444 517 444 306 0 0 239 0 0 239 794 517 500 517 0 342 383 361 0 0 683 ] endobj 48 0 obj << /Length1 826 /Length2 1345 /Length3 532 /Length 1934 /Filter /FlateDecode >> stream xÚíRiXSgUÑL u:ŠÀÀ'•, )a‰(H4@cî…\’Ü‹Y ˆ²¨Ð"cE6YZÁ÷]”mˆ•±ŠP°¸¡,‚("B/XgèÏé¯>s¿?÷¼ïùÎwžó¾”¥!•ãÛŽ©¨ bW¾Pè1Dc)W"R¡8æ&R!l9:B€£vDŸÅ^nÏ^Î"S€+¡@ƒ%*`íj3IbŽQ bø"•‘b‘ q1Ѝ"h€#“¯ÉJà…(EÓÈ`T¬Û`#Ó'-¹cA8`½/ÃêЭ0D¡$Lk¤ ,Â8&‹0D¦¯Å‰·ÂÉajº8O-“­É'åßÇô;‚HŽÊ"~£àòPµ Q># l:ÕyïŽÀ¨Z>½ë®ÉP1 –!€ Ù½/¢JªA`ªK@H¦D¦êO·Ad7e‚Îãx¬á¬_öaªS]ÅTÞ¡`|¤Oaè#&2R °™Ac0 ‚HœÓ^ãbbF1b-˜@¤Pˆ"ÈÄ~ˆ "!€b0¢ˆ†°L§a¸Š¸ˆ\v \Až*ËÐ='KSb0ý Ótì? ÐÕ!±ˆtÍü}+WâšH*1wª“ðÃ`±‹é¸ë¿‰>º]¸»&ƒÁøò·„Äj…ÁTSkG„û¡Ä0DƒˆÉ-wq±ÓÞôËñÇ¢¸ù?Ÿc£4ÉüaïÍò¸‹™N´g÷ šE·¼ÓAý8ýôÄ‚´Þ5§èp³sÉeÎΑBzÜ=ýsÚ|—%üK¿ø™ଚ¼ë•óå9 [̺C‹–õ·Z w„•Ï9ãùbYÒ»oö±æ»ï†¢¤Ñõ-z°ÅÃ4r@^‰ç!Ä÷IGò£ÏWáùxËÑšÅþYß·,©lo¶ÍÍtLÌãëÜÉtÓ…Ú$Ç "Ö’…µ1/(—x3ðäküŽrدkb[oé ÌsEo ·I{!ûM|~ÓO×ꪻ…·Õn+Òt®·PÛ8hâ IÂDË-ScÂ/Ëç¤ß: ³õ€Ëô¤>eT„¶Išû¬ß¸œ§w.ì`Z` …ÔP6¾?mQá‘ìúðkO_J…¦í¯réée¯SùÊá-ÂÅ>£p댑 ÉwKÅÅå Û4“ήòXuén5¨« ±*ÙdkRÒ½hÌz¥áçÒ˜²âaË‚›©é3 eþæf@ÐOÞàöd Ñ¹ðNöhñmY¯ÕÍR (c®›ï¨wºÈ%ꉸpbnç—•nù­¹G„Îw4Ï“m ¡&=‡ûúï›{ßâ0â¶Çñ…4wY`løù²úªl¯›ÎOý›6·§Î@^·F¬bQŒ£Õº,“°#+³û‡YæÜ/ö;ˆe’MƯ*£4޼5¾þ\d)Q¯êê’®=[}½´†$ªµÑUÇÒIé‹°yT®ë¥^tœœÏ, ë>íÞ©¾;© ð 9\|"2¥b$ý2<ψ¤oè{ê\A«òó·t8üo×Ë»ù‘–ß×?ð1rP:†·T½rÿ;­¯^hoÁÆÍRk‡e¤ †¯íúÆ¥®õEÎù‘†ì³3w¿êZ| 6ì>ì]¢åæÿ«)^׸''Äí­!KUg¾&ñÛûNolÍlóHÅŒwÂ;*õÔ­ˆ:´3–›Û˜y®¥/|×¢uÚÇóÀH»C&Oý\½× —Iªž¿¨äbé¥ìÞ)Ö‰¾rÌg6»V¾ nFXeÑÍÀ°ºwN¥w$þ'7àG·:ïMîÜ·O¥%8  ­sâkÌ,ÛV¼ºÎÒÞ~Ü$xIçå3Îú8múg‡Mbl¹rbgÛ ñjhè[îãË3žzžQ'¹·zÁüÆÓ¾>Џ«–1£ØFJÒÌ…Iì(£¡gßëmyT뤋ô- ßöf7¿æênÉÉü±['+b@)Ö W ¤:V&×¢Þ8~ªm@>IÏIÑ3Ÿ¨yÖ?¯¹ú&õÞYj¾iÐÌ/þÆp}©®ˆÖãùfWhæU;yW€Ç“Ÿ}ÑCô–S5Ü*ÓÕXÕZêÛ›ÍyÇsùÛÆó÷Ù›ððû©ì¤W«‚þahå™Z”þ> endobj 47 0 obj << /Ascent 694 /CapHeight 694 /Descent -194 /FontName /FAJKAQ+CMSSI10 /ItalicAngle -12 /StemV 80 /XHeight 444 /FontBBox [-97 -250 1077 759] /Flags 4 /CharSet (/L/i/n/u/x) /FontFile 48 0 R >> endobj 158 0 obj [542 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 239 0 0 0 0 517 0 0 0 0 0 0 517 0 0 461 ] endobj 159 0 obj << /Type /Encoding /Differences [ 0 /minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/arrowright/arrowup/arrowdown/arrowboth/arrownortheast/arrowsoutheast/similarequal/arrowdblleft/arrowdblright/arrowdblup/arrowdbldown/arrowdblboth/arrownorthwest/arrowsouthwest/proportional/prime/infinity/element/owner/triangle/triangleinv/negationslash/mapsto/universal/existential/logicalnot/emptyset/Rfractur/Ifractur/latticetop/perpendicular/aleph/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/union/intersection/unionmulti/logicaland/logicalor/turnstileleft/turnstileright/floorleft/floorright/ceilingleft/ceilingright/braceleft/braceright/angbracketleft/angbracketright/bar/bardbl/arrowbothv/arrowdblbothv/backslash/wreathproduct/radical/coproduct/nabla/integral/unionsq/intersectionsq/subsetsqequal/supersetsqequal/section/dagger/daggerdbl/paragraph/club/diamond/heart/spade/arrowleft 129/.notdef 161/minus/periodcentered/multiply/asteriskmath/divide/diamondmath/plusminus/minusplus/circleplus/circleminus 171/.notdef 173/circlemultiply/circledivide/circledot/circlecopyrt/openbullet/bullet/equivasymptotic/equivalence/reflexsubset/reflexsuperset/lessequal/greaterequal/precedesequal/followsequal/similar/approxequal/propersubset/propersuperset/lessmuch/greatermuch/precedes/follows/arrowleft/spade 197/.notdef] >> endobj 45 0 obj << /Length1 842 /Length2 1048 /Length3 532 /Length 1655 /Filter /FlateDecode >> stream xÚíRkXgµ¶Šºf5BeŠY$™‰†•j#1d-’IHfp2¤–O *èGêÍ"<"âR¹”¢ñ.iÙ®¬`AŠ­"B±²èv—þÜýµOgþÌ{ÞóïÌy_¦³DêÉWైÇHOˆù‚i ¤1™IÇüañ ooàëTÄ@žôáòhL@€'TGën³$À× *‡1 &ã ¥!‡Õ€—£i`|µŸ=¡Â-B$!  ‚*'XD…b4ö¬#¦ÄÞ<¬Ð%¾l%!„–2¬£Lº”EŽ© €QÒØbœº ¡œü/L-êÔj1¬™•ŸKéW}Xƒª /¸&QG"‚+[H@æÍ… T§YØ‘°•ó1•<¡,pw¾j…¨QHPR(aµ™ÃL±Ð ßœv€8 „ïçñb®sM ŒbäC"€¿°çjè—šJ‰@õ@4ÈAˆ"Rï˯] . Àä¸ÅT‡ëÀhÔQØ(¦@ô¢§³YNRG*š@‰´Ù±RëÄŽ¥¢EÈY|9FÀrD(ÿÞðžŸí¿pêÏØ±°rA 9·‡TÔ/k%JAôˆœÖÓËßʈ/¨ËŒ (è*þ½mΩÁg7Þ^sðf§y­ð‘T¶É)0== lŠ,™iµ þÒªQ¸-&ÇŠkÃû{YK¦8pŠ;/÷Þé9§çZ¿±ðò¨{zËøLá!áŽ{º'Ö!ùE'óìO ª3š'{TA4· ¯Îc’§½ßXìœ\–-Ÿ¨ß´‡‘—ÛqôIyÛÈ@OüÏË R1;¨~%½8‚!™ºé·Âáègé¾éÑ»Vúí¯Ö¹^@'«o/ŽMNnX’s¥¹(þÚOWÐó¹éqUµÅ%#ô¡ŒšmÓÕS#«ì1×Û©¦WwÛÞåØ>y&Xaaö›Ï–¢ ‘çNîk~W0ˆÛ?J.EƒeÞqúL'[Ó·˜Ž[^ï{\{ü6iøRù´·'¼zåáëcÇduÁn­v»©ü¸ünÇDPß{¤ì S„é ×ÉûŒ³.§6§»é¸Q~dÇÉ›m‡¼>qœ0 ûWƧ¼æŽˆl×ô›¾Íü¬j¹óSºÿ…ÈF%-ÒÙnk]·ÑcÈ2fž›+¶hŠ*ŒúIW›²Ü‹[¾ë=ŽÛ¦i†*zARxre×´Ë:G¯ç÷7å•m|§NrìÓ«Ñ·–ýz¸Ögiie¡¢þˆ‘93(*dGó^•N‰ì¹?>;˜æërÐîb£ØôÉ¡ÒÇêÌZNÀÅ-þÖг?Óg¾Þãžéú@}_Òl[ž?~³}I±Ù)Õ!æa[€To†uÕã ~Ÿªáþ5pç…ê±G&{-eëìÏ;ïÿˇö›Àÿ…€\À‰k`"öOánbendstream endobj 46 0 obj << /Type /Font /Subtype /Type1 /Encoding 159 0 R /FirstChar 15 /LastChar 110 /Widths 160 0 R /BaseFont /ENEMAB+CMSY10 /FontDescriptor 44 0 R >> endobj 44 0 obj << /Ascent 750 /CapHeight 683 /Descent -194 /FontName /ENEMAB+CMSY10 /ItalicAngle -14 /StemV 85 /XHeight 431 /FontBBox [-29 -960 1116 775] /Flags 4 /CharSet (/bullet/braceleft/braceright/backslash) /FontFile 45 0 R >> endobj 160 0 obj [500 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 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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 500 500 0 0 0 0 0 0 500 ] endobj 161 0 obj << /Type /Encoding /Differences [ 0 /Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/omega/epsilon/theta1/pi1/rho1/sigma1/phi1/arrowlefttophalf/arrowleftbothalf/arrowrighttophalf/arrowrightbothalf/arrowhookleft/arrowhookright/triangleright/triangleleft/zerooldstyle/oneoldstyle/twooldstyle/threeoldstyle/fouroldstyle/fiveoldstyle/sixoldstyle/sevenoldstyle/eightoldstyle/nineoldstyle/period/comma/less/slash/greater/star/partialdiff/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/Q/R/S/T/U/V/W/X/Y/Z/flat/natural/sharp/slurbelow/slurabove/lscript/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/dotlessi/dotlessj/weierstrass/vector/tie/psi 129/.notdef 160/space/Gamma/Delta/Theta/Lambda/Xi/Pi/Sigma/Upsilon/Phi/Psi 171/.notdef 173/Omega/alpha/beta/gamma/delta/epsilon1/zeta/eta/theta/iota/kappa/lambda/mu/nu/xi/pi/rho/sigma/tau/upsilon/phi/chi/psi/tie 197/.notdef] >> endobj 39 0 obj << /Length1 1034 /Length2 4345 /Length3 532 /Length 5044 /Filter /FlateDecode >> stream xÚí“eXTm·Ç¥¤‘’F6%1Ä ÝÝHH#  3Œ 30Ì‚ ”„(HI£HJ#J£„´tŠ€ ‚„gôÇó¼Ïùt®³÷—ýû¯u¯õ¿Öº· ¯¹¥¸&ã‚Ðàqâ ˆ mbb„o0˜JPP‹€â´‡P ŠŠr€HI`y%Yi%Yy*A@ã€Eº¹ãam‘_Iò€¦'‹„AÑ€ çŽð$Ô€AQ€%†Dà$M °øu°@ø °¾¸À‘0à‚pC¢©$y2D»bùÈp¼×¿B¾¬Á üÛ¦@0 Ç QáJ%iŠ!tC¼üoØú{q=< e õüUþ÷¤þ#õD¢þ™ñôÂãXÀG`ÑOµEüÜ ŽÄ{þ=jˆƒ¢0M´ ˆCd$À2ÿБ>zH܉ƒ¹®P”â·Ž@Ãÿî„0¿ß>$M õmôLAÿ\íï 9‰ÆYx!ð_Ù¿ò†„Eú` 0BH$¼ÿúrú[3]4 G¢Ý)Y9ŠÅB¨—ˆ@²@ @¢ááOp,)ÆàGÂdn®,Õ¯½Ê*’^„Õ`à¿ôß’D!||þ¤I·_ב0Ði Íâ/’$­ÿM„uKBÿM‚oIÄH8éúÊ’î ¡ò$ØCýŠ€¤ç_H˜©$ú$4Âü„F^ ¡ö$4òù |ãîRK ã(.-ˆKÉ‚9VäeÁ·ÿ{¢5éGê²`yiÂ@~©0<‹@ã~ÿE„{ò/vE®á€QMŽa`Êá7S_Fëæ –‰øp¥†÷·D¼HS–ؘUfÁÖ X!.í2D0ÜD>§OÙ2.“„»Êγ¿Ô ê ´”Œ˜`è¢ey’nI¾ Ûp¼NÜÓÙ~Á3+zm’gÙ«´=Å¿?çÛBVqe"ÿ”}+†´x|ìt/Ø#äÝü$õc8ÿJ •SNã•d„ͧ¹ø¾›ú˜<Ìd~7«cú>ÓÙ${ṵ̂Ç4mšblŽ Éhšê %XÄßuá$ÃgÒ.[ÑÈR‰‚KnÄ&7 8ǡʛf§ÖPolò…biHDq‰7fØ0ôvŠ­¡õgÉFX1'JU?ŸQÙ~íµ§ºíÞråÕPFÊA)Õ$ˆW]² …óÑ©à®@é7§ããÙï?cÙ_oÃyϱ•Û‚2Ô}…A"ý`v²Q]¼öP÷Ä5œ¦ºÁ,µFl§ç{õ… †CÀNqôóXQÿ¤ÕºÒ‘gj®˜É5Pu}×#G]ÿsŠöoÑ* Ow>¿}›!u]OÛaÖ¹ÉjÔ]ZÛš§ÃTzÔ©«^O/O ž3±¤ÅÊ«ÆÄ¥|‘^ÓqÙ p0Ù6ì¿éÞÄ(ûãˆû¹’\Öð‰òÊ@ŠuWÝV¡w0ÙJ§Ç‰M+Ñ@…/$-ƥ΃ ¥5]=,B©p« ñ«©Ï‹‹#=¾*R&—(Vî@Hrƒš¿iÖw¸æ`ã aã}Q‘NÁ½¥_qôñæÇO%°öêM¯ÛÑXôrùQ ¯T“Ù YeG·³aµB‹gùC¶¿ŽËpGß R¢^˜XRd÷Ò½•ü3ü`BOÍ [ßï0‰^+I›é™G*.…5?cÀó«Ú•]V{Í^ÑlL>˜Sf}ð·®ÄA´w‹¼}Ä]&.ÈVå wîÜ% a¥”ÑLïÔï+äþn¦ ™&nœâ+ÿ¬ÞبLÕoÑÜIKô4‰¼ß,q#ö`ä®ZF‘ݨ™BBL·`h3Jœ°c…6?©(ø8H™À¿¿9ò\:®†þã•ré[Ñ&30Š=xèÏ;} ”FL­>ƒçÙ(\EI‹@¹e²Ÿü%#ŒP@ëÙ×8ºwCpoƒªT°åÄýÜO‚?’ÉJl›}¼q dtÄŠS|úöcoï× I<†='µý0‡ôß>̦žÜ|´°xBC&Î+ß>Ô,x@7m¦ì2Ép+ínVÝL±h×N#Wè¶Vº«¹Ä´pZ‹ÁÐÌl½æ…aä/D]dð},v¦s@ÿÆâtüaÍ%í¸l<ðÂ}·ü\[F«8"p¶q$Òö5÷RQ/}»L·_àLåÔ·¦-Cw×kʃ϶7¼šO³¯ÁžÌO¤0æ±,@nû/ïÆæÏ¿Ï¾Q\ÀnMqWrþQö­ú's6ø®7 !3ÿì±3{?mˆ{gXÒéE­JEpjîú¶[Í\®Ø ˹À†Ùï4µöÎ’pUª•uÍ¥Âìç#7ÁbÉVpeÂø*“˜ñ IÕ}‡žÓÞc “ÀHÏ;«3_’kj…ó—¼Ê·ûFfý|÷ c`ÄßPâW?çÐ’É(—Ðý¶/¼!mU›«Š…ÞƒŠ‘›Q’ýð‘ë;êDCàA³ç×)EäaÏ…D¾ƒ§Þ÷ßs/‹¬z\ñmÐoÍåe=̧}»n›Šp/YOc¶åÙ¯2³½uÏ0+ž*}É;áß<ÎÉ{Üêpë$Ët¦ 7{nýg ‡#Z¸ü“ñŒEY'+;e>èuà‘ß rûhŠáŠR<<û(ØnMÑR³~Û¶ê‚Àa¾ËùekW“=ËãTéý—äŸKäbÕäz)Æ:¼ÈÕýD>Š=w`„–P~WøžàÍŸì½8¾ÙRr¤»¨³˜.ÇÌý%_LŽÙ³ýí]bJ¦ûVhË¡x ‡ýœ|RŽ#Î ÞgV›s[7b]K¥kÍ’•¤ý.ܲíèÉ‹½œ¯WC}G飷â=âØ( eüÌàzyÓŠhÚX2–oT$Pû¦Cê„úº¤ïéyáµÃ¤‘Z{Ê»±eªƒ³švúëAlþ+3WßÔð:Sòå+šÏ=jV´àëʕʥ«V-ɸpуOÅ9Lޏ€¥h/XÑtÆ×âà›'ãz^ª9¡,ó¥À@C½¤ŠÕ/mßÜ ø–Ä~¬çÓ/fk ²` ä߉~p~ìÛÒåB~-ñÎl˜ð´WWÛì´Ãy%‡©ïܹæØÏ/éOÆwŽh·wã7©±…ÅœiÔ±3E‘Y…ŽË>0N5ÆÃï5ÊD´6kÍÂK_Í cȹÅn}*¬ìøòƒ…ˆI¿TœÇ’×MË×#™ÑhŒbŸ ÷ÓTÏJï072és&n5YâËVÍùQÌ]óF *{Õ…'õò~(ƒµîNŽªw¿.J»ˆ>ª®j–¹iyçUN¬¶•Lè¥S5°åêIyÒ•†££ãT}Ö/¦þ"ðTÕ설$‰E×ç‡hK­‹ÍÅ@„ŽNùù›ï,ÂîÎá !Çö‘ш:ÿPAç]_¾WWþŸ¥IîTv²6éïH¼UÇfÝȪ%Õ$ÞÅÜ}~!“rþá±Õ—Èk ·…­ìÄgÄ^£hSØ iª¡Âh‰ú–Ü­«ÀŠÜCq‹hêlâ£ü®˜§Ky¤›ÔÝÔÇS>ÃVY>4½¸‹Ú™åïLל|"æ8ú¬Q>üÕ?"n ç6ÌUƒˆÖ<'@×jž¶ºK.{óâ¤t¦J{ë U•oÙœ[´éj©L¤YùMþÕ£r'Ëû—\Ûu4Ŷ÷xû(î‘Ô¤‰Ö·äÉœM‡f«^´¿uÕðb1Mц1Ò<,/º–öN)ö¨!Ô5GDºäK§\]xet¿´‹ND¼¥|-j$UVì3¥2bD£bÝã|¶ZQäÿФçÃO“À¤ê”u]a`B€x‘Ç5ÄÆGy#8/vÞ‹¥¾ñŸê³;š`†Ì¢’ùWç*o]m[¿èUÌœ /wæ´ÒI©Õä»ÒÁ=lõ£¹ž×®6¥bËê÷ñÎw‰¾ æ e ® ÄPî+<Õø–øœrx9(¸-{#¤2ÌÇ/:Õ¸+` .ãGÕW¥m Ü-è›Fëk^|¶•*{ÊSõ¢•ö±hð®ù±ë‹èW2½‚¹®ËÁL~•¥ƒmvETyƒÒ»fà‰–™‚‘.$ÈÃ÷5S"< +˜VQóâ y.ñ柣caç™^~óH¾Tø_ƒ°æã³Êk/NE† ‘ʪdKíf5Rê+írP"þ‹Z¥W=9ùÖAëE—/ºä¶s>™7¶¦ÅI´{r°ñz¤rïÝ¿xò®!^jEãkE3G˜±Q:V{,ƒØnº¥‚‘.XnºÚb˜»`tLªvŠ eäÖà”¦ª·° 6Šâõ %n4õ¦åß¾ÒwÄ:}ÿÊî®?ãôPo Þ›Ãøñ˜ %2FLºåýÎnò,‰¸±Ò)çzƒ!öÙÒDsÃÜ4D­Ê–0ßÔfŽ g®q÷y*8ƒÈúRäï~iû… UZüdYájéõ—î’¼Æl/Ñ·ã?O‰0ùÞÔ/¨¼÷­*‡ÂgE†v9¨) ƒ™ii‘€í è¥uÇSeUÃÁbºÜmµ:ŸègÈ·ëhÊu-œ:ôT—¾ŽŽçOŠ*îËEx9w‹eÞkÎ u ç ÒF•¸òUtQÌ:>¸Û~%°D‘iÎ0¬v΢œEÂTeÁ°Qm“,µ!¹°>@GQ‰F2Œê6ÛÄdͰv«<£$Kóè«QocÆtóÛéj]3Ò¾V:eç4û±1¨ÕÕŒ5­Ù8þ,ÛÍò.§VÍçëXF‹r„/Ó‡ ]ŽoÈVHy½Kg†˜ÎhØoŸEjîL µfûŒÉ#9ϽdÚÎyx“T 4±ÞhU¨e‘Ù{r.d…š‚4S°Êô¤÷ä‰KÑ.[Øi®ªÄµ§=*Fóõ•…ªß_ߟdœk¦Uß~uCºÚ¡·Lù`Ú4²bǬƒ:$‹«Oåk¦}KÕU±Ê×…zâHéQcëHoÁ˜OñIÖG{Á¸…R>àGY€¡kfœk7žÐHt…Y0958—Xv×zú/?ÚUÿªÿ/𢠅€bqO(Öƒê¿Õ¦íendstream endobj 40 0 obj << /Type /Font /Subtype /Type1 /Encoding 161 0 R /FirstChar 58 /LastChar 118 /Widths 162 0 R /BaseFont /MIGVFN+CMMI10 /FontDescriptor 38 0 R >> endobj 38 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /MIGVFN+CMMI10 /ItalicAngle -14 /StemV 72 /XHeight 431 /FontBBox [-32 -250 1048 750] /Flags 4 /CharSet (/period/less/greater/R/U/a/e/f/h/i/l/m/n/o/p/r/s/v) /FontFile 39 0 R >> endobj 162 0 obj [278 0 778 0 778 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 759 0 0 683 0 0 0 0 0 0 0 0 0 0 0 529 0 0 0 466 490 0 576 345 0 0 298 878 600 485 503 0 451 469 0 0 485 ] endobj 32 0 obj << /Length1 969 /Length2 2802 /Length3 532 /Length 3463 /Filter /FlateDecode >> stream xÚí“y¤ÿpc İÿ Rè4 Ø’q •ôgèð§6[G þéµ¢aˆì~’4šA„Pç@ añJ˜AîO œ±ýP€p²µ2;rPíç:ø0Í9Œò«è÷àŒüÍœáP ¡À1M MM$'óþýåùG/s–Œ#8ç¥ `¨TL˜ç`pD  †`(G/BƒD¦qRÎHN¾dªÀ÷mêè g%dÜwûO“€"b‚ð¿,(}%9ÛþÛ¢‹ûÇà7¡„ù/ÒÓV¿‰ÓÎæésòÜ~š“‡ýEHMÿr¼¿‘sPä ç7þœ6´øŸ‹15%‡F¨ëêZÚÚJG‹£Wÿäs!NÐA«JSSS_ûçb°t*$Ñ~ÜÎÊÿf_ç|€`(ˆè'c ãýÏW3J¢Ì‹»Jyá\¦~5©vU÷z¡q/Ó¸ˆ¬6ëðÑJ·oe9°­“¼“²!«’AI ‘ŽÏ,>œ:‘záùúd°÷dNøI·…Û° ŠÜrÜô¶úê¾Å—}Ïh{IæÑËóç[§/9¨p~Ë7¼Ò|,øVsn¼®ž›EÑ…™P©¤½ÛIøÂ‰’DæHˆpf:ÏHg\”?“¿Vmè#¹.ú­˜ÿbƺä+vsr¬–iÁËšNcfŽºŒ*²ÃËS¼ÕÍ8:1I"­¦£_”!j/·÷í ×Î,„‚ª†b×·¢á¾––ÍñÖR3õê+Ô®´?œÔG¥lÖ’ÊA#ïCYz8ü+’ª{ÿ2q:#?S¥Å ÍwïYÜU°’©0ÀÀÈÃj Öó’N µM*-— e†æÕ¢ ÊmC¾xn³’tIEºn*h¬k—ÝaîôTp¶Ú°ï桜w×ÉåL‡Þ ZT[¬Š#øâv¬&§ý‰Ýw³d±Ï£Á/˜$â|„^ÁmËùŸDé<ò,—˜j¬ãËÞá!âØp÷&û¬*Ë 24T -ßÛ¥M¿P»Ï^­$ò³D ­ÔŒÌÐiß Ë{Í™O´ÙÂ+fS’ -Ääþ2Ëm ûèW•¢Ää]w™ðH´‚q20¼y°`%I}>ëöVʘܠ@\1Ké– `2ße y’Xs6‡)zX‡ãÏ#­løºæ.ÚHÛœ3¼ºø¶4^fKŸWÀ¼— T\ÃË·+¬2ô;”|"Ф²ì×ìî¸÷¾QÜh:*æá¹ßþéÒëæÕ¿¿>ó•$´MSyœ÷¨U7 e'ï#´Œ¿»7Xó~Ë^Õ–Ñ£ð„ˆvÿv{«še\ðʰy¾cΧ3¶¬Ôy‰¬~#å)­~yÃÆà&c´h`Ⱥ¡ß¥ËgÂ7×yEo Iˆßx £‡îìÞ×ZË ¬µÁóî+äIªq§E³'Ôíb6.YàÂ5Ù&º•>8—U9Ô’ŸuçñK¶?¹¸%âÊ®Ïá¦ü¬åh‘R%bû³öê} ˜¡0µâkøòu“ûò½µÑKWÓ•–…b[„$³á“}²ÑG2¸䦵~ÑÛog5Ô¦(/*1rB~C¸Uv ¾\15†[7à1cní•ãÐ!RW³ÐòHw”ýØfX÷µ¶ª™Ã^SöÔ×6õíoü4Ú¶ ù—Õo8ØÃˆ#Z#ŽÖQ¬§"õÕOÔpYs=yÆ>¢»TÎÚ‘U°öÙǹëöÝ⤚k]}[PÜþ·Å›N©T‰Ÿºy6·¾ã¢{²­ùÒFSdsª~Ó`‹ðⱪÅÙJ=sMÖÆ*#â _ZášØ&Í"ÓS#y·®ßJ÷;Vsí¯“½žPk÷™ËZ–k+t #¸Ö ¶Ró65g“tÆÅ…dðq],m³kfìœ=¥œ%È'—œW¶re´"ç¬c{yÐY÷ÐÕ0Ÿ ¨ÐÐt[9JÀ>‘éa, ]W©6ÞŒ¦µy[ߎR˜ïð¯dó_ᙵ»Fx¢phÝWÊGoïuðÔM"h$†ùÕmÍDê åúøÚ`›a—ë£ûÞ‹F¶Ž—WSÞ+w‹•öº`Æ'L2¾nH‹æêÕòcÃw ›Ï ZU=ÈXÕ<ÿäÌ’sÄÙ|_ÃÑG ¸ÔlWÑVÒ,Ýoâ ‹¥œœû“ý¨‡ÇBB/Å¢µ«Lˆ•ð YÜE{¼yøŒjâVƒâwó<•Ékw}nûÐ9Kü–K³CëòÜôÆ^źå’5”±BÁ¢ðé:g“9›‰šWå÷½ä·Ôâ/ëàO*@¼ñUýVFÉÏŒÓ*v;úÙ`ˆö_òbøÈ¼±•/$¤&ΘÄ ³Ÿ$¦s§ÊØ¿GÔ f]¹eŽñ% ;µ“ð÷X·â(Z}7ê ”É Í þ<¹®-CI©”_£É)£ûñaBnu÷òAJç]çâ{O_ÍÛ˜íIiÌ×òEë¯è®÷6˜q·Vdú?^jäE”_°™œjÚý@ç:Qâéž™wŽaÊóÒ/0ÕÔDRÆÅTU(Wk:›,û'=2ÚÕ_ó5ïo¦lO“Œå¬î”ÿ‡/!5v¯ƒÅ ·Ýs]Ù£¡ÇÐ þã¦vîdÈô¡HÙĘ’½_ï{R¤œ²>¤$Š |ÝÕËÕ‰8Ðesö5¾-…Ùñð¸‘HGR>«Ï ¦&³þ–‡Ïw»} ,1‰ÛÅ Ã<ÐÒôFÉ—-óÛ";éËm-å^>‚³fc\ô9ÚÓÏg»o”ÑÖç½,Ëœê¥ÍïÞëSÞ+ÜA(yú¨$%îÝ{UÞÎÍÁÔÂøö­óÇo‹OÜ‰Š©ó†‘Œ/é¬÷:ÞŒ¤†4¨µš²lºôò´n”s UUB#VéÂuå¼aV‚¼Ç%bRÆ5„4tvÜ ùëဒò®ø¥®ÉÛÈ,Uµ7Î))BCýÁ¾~ϵú²O)|@¬™UÄ1÷Ç2R¢!ü«Ä¨ëÓÃ2’RŒçQ%ʯ¡ÐÁž…˜ü[›Ú!á«~÷+Âã« /Þ"𿏏i¥v!#ÿÃëqÊ ;–ÆL†ôl+Þ›-m¼©ÔC&chIÎpEk ’yÂèè ]/yLM%·m¶"1tÑìØõb÷†³-\2wã·ýk,¯ÁØðy‘eŤSÈ7uÌ'Í#6¢›.’•"YèÁQqž²Ñ Þ.è.ñÀU&®R,µ%6oa¶píí£ìÀ+eÛ•µ©gÄÙW®Yñô¼0ëA‚¬Gzöá9RlµÂ~ oêÕá€)îy7ðÁƒq c\iéÞô‹ñy5YøLËg®nU¾“ ±~—-³‹bÅ8,U Ä(â HD;aŸÂ7å šÿÃGàÿ üŸ(€%‚*ˆ¡üš…úpendstream endobj 33 0 obj << /Type /Font /Subtype /Type1 /Encoding 150 0 R /FirstChar 46 /LastChar 116 /Widths 163 0 R /BaseFont /RMICWG+CMTT9 /FontDescriptor 31 0 R >> endobj 31 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /RMICWG+CMTT9 /ItalicAngle 0 /StemV 74 /XHeight 431 /FontBBox [-6 -233 542 698] /Flags 4 /CharSet (/period/slash/colon/A/D/E/I/L/X/c/h/m/o/p/t) /FontFile 32 0 R >> endobj 163 0 obj [525 525 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 525 0 0 525 525 0 0 0 525 0 0 525 0 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 0 0 0 0 0 0 525 0 0 0 0 525 0 0 0 0 525 0 525 525 0 0 0 525 ] endobj 29 0 obj << /Length1 911 /Length2 2612 /Length3 532 /Length 3257 /Filter /FlateDecode >> stream xÚíSi<”íŽ"FY“²ä)”3–±WŒQÉNGeɘy0cÌŒ1ƒ^û.DlY³EQ²gɾ‹Ê¾ë(”õLuÞ÷=§óñœOçwžçËs]ÿë¾îëþÿïG⸱™Œ†hê ˜,L @˜Â˜,"! ƒ( –HÐAQ@5¦ª ´¨€<€ÁÕTÕ ò A$ÑÈXG ‰8ý]¤ h9ƒd,E PGЙáFá3" Rh²€˜~_á ˜‚® Ù ÄÈB`0ƒES;ÐK€È}Ïs‰`O”Ò*é’Hve„$!OŒˆ"O0 =DÎÈØ d$ùo„úÕ\—ŠÇ¢œ¿Û3zôoU”3OûGèL¢R@2`@Ä€d¯R ðg4ƒ¥:ÿZ½DAá±h-‚ ?)¬«.ÖÄc)hGÀ…wð ókFÛ~DC ,ˆËÒ?¦ù£dŒÂ(æ4ÒŸ¦ßµ?0ì/Ìè ëXBe¡PCÈxÿø²þe+$MÄ` Œë Pd2ŠaÜ RnÂ,z #¯œ,Ha,-ñì‰dÈ÷a*ªrž ™øýI¨rDø'V‚r÷¿êJ0v$ƒÿ¤äì‰Tò_„ƒÀºý“BseœçO¬ÄÀ Hø‹r?§ñ'£ ȰÿòïÝÕÖ&zÜ”aü2òŒ„0˜ª ¬õþWáÖ… ^Òa UVQýÁ¢©d2H ü¸ÎŒÉýí±Œ9ƒ ˆ† Ñê8zipž2³+ŸEŠIÛ¡,ư¤¦·’#`0– ÿ å²‹ÔHñÕ‚D>ΖQ÷-!×ð /“vÝ%?—˜„þ7Û™DÏBWW hÓ¤ë¸^–ö}ù]‰É¨g¤5/þZVCʧÆ鯒:æ³ûßßSkéö´6)®|U7%$¨ø¤ÂqSî—¼PÅawîøÛû†;|p!lÏ¥ß-+¨¼™liq;V_æ{Î[Nî‡[:úß88ãQ‘¥E#3o%½(ßÚx”,w®K¡ôdL¡O39G>»Ýß2.èõ4ÅGÖÿ}_Pkº·àî·Úâ>SVÕe¯›¼N¤ +{ôDmýº¯½nÇXbã K[ÃRMýWŸÖ|ãъSû¾¸4Ë"D\ç’*\f«CïÛÅÑÎ-]oV¾ýI~Ò®OнˆXχéðu(”WqåІø¤Xíš02>dò­ý÷qÈú¸Ñ²•ïç­,ï¡v Ï…(~&o1>aöÜú,€¹)³cÖ†Z¥¿¬¯9Y¾² tš098pÉÎ}\d×Ömó:÷•ÖýÊMô‰sZ­…¶Éšt§¸Ñ§ûß{~rÝûM…m8oÍdM¨mýΖDÖ¢Àç6¥«bÍ]ÄSê3,¶Hj±þG»²éÙk¾¥¬SKñ¾VÇf³ã|K ›íáyô)Jœl™".ù²Í¼Y«†o>úò–d~\$éòÛ¨ún%“¶éSU«HæyE}I4±›Éƒ±W@ç¹#R­qY3¡KiùO~vö´sì %—V¦m¨Îäq -u´·H7îÀß¶Öæ2úíÙã·éåGTÉË׺J, ¼X7d“^¢ŽC`MLÂ\÷ÊèæIVH±¨®a§{= ±’2Ÿ†Že¼ëŠcSÝ÷`ȱ¿P½ûZ—Ðè™Ã W„mK°êæoÝ ZÿzU}éb_žwG~U™Çö–TG ÑPôàmeÀÆŽ;ìœ{ÅId”W‰e ÁG£Úy‹Â·Êñ|›’›šä7{}H¹á"UV|Kº]« h§flÂÚV›=ïC©Ñ«²zz»,ú‡šŒ= bʈ:ç{H÷Oúé‰×³L§˜°ÇG‡ä©o”ïðêG]ý¸N³]½èåœ=«˜Tékl™ž¯UsÆ™]uåÊç˜ð ¤×òkaJj·¢…wÚûüX ,PÂâ’¬'"4••ZKļšÕ˜Õs츯¥Æ\mlê£àÁñ^ÙÀÚ.hÛ¥w>€ÒŒe†YŸòàï]h­ä²©Oç*eÊJ6·ç CÚº½°Rsp]gr"Å! wùà¦óÙ¥’îùja4„co0–[ Ww¬øu_¡–QR€Õ±NKud¹Ãì^3¾¾æ®·ª;9Ÿ4ß ôÙ›VSú'^ó‹g‹K6,¨±^‚L,ÐF¬iô(Y¡,Ižñ‘3²¶ÿv$¿´…‡Ža¶˜^Õ E?}Ì {R'i¶+§ÓºéVÊ{‡(cKNð^H>Â×7òl¾©sFì=ØæPâ·}Äìf¯ßNçãóýýÍ$ùT›¬ec¬éN¬²F‰»F^E"xæc$ô0“€øäêI\›*s†Ãýþ½FñɤèR`FÉ3ÑØô°k<,Ü÷€ô£*. ‚4‡Ð‹w1÷œ&S-äÇâdgEâ‹r,9­ ­4§¯¦ê }æóV¤v$bϸæ…Ö2ÜWÐo»<¡%ñî ß¢‚èe䮪“ùzågq¶`M»Ï‰­–Èw6"›Z¿¥Ò6XOèdÊzÓʃˆQt>ÞÈ©¢gasï>ÌÈýÜ>¥À¿–²`=úŽ5²Yß’-æÂyê$ýq3•/›•£§Þ&è†Iág– =HÞ(”V8¿É‡kcö©€޽ªÊ œîôU÷&¯Ìãz ⽋šB|ñqD®”H¯HÏ5ײå½yÞ 8wSZõÌÎu ÑúMyp¶vgøâÔ35œ ß©KV|1·~Ž“°6*í=ûâ[λxuðÜ~Tö·Ñ)4šj[[°¡Ájù×¢˜dlç)ý/¹l%zn‰³Üº¥±è„äÇ‘žÖ¿;àaÔЗwíZc“0IììÙ—X‚ŸšÔdkÀAçý³F´ý¦Cs3•Z¯L w[d»y„f¤x!ª}ñŸR£Ÿ„oUV;<±1@f:ÞÒsaSá9ÛþB>'·5½ÖÚT8ǶáŒ_Ö=À/èqÈ»sªS [éyˆ]¸©œ#de|_\.Gí\¸ ÚÂîëì*Ρp&Á°(ÕW”­µàXÁÜëãz+qÏÜñDjÛHΊ9ìsº¸×j:SynQ AÁ>Ööjù`äPÒ4<ÅëÕD{ÍTT6G7ôÍŽLèç<áíârGT»‘Íy¤°éí6hŸ9á>ûÕ©-n¹)·ÃO.¬˜kpóã–Î9…½k|ØófðQñ6~Š9bþQÄ¥¡z‚«ÍZ˜ìm+ =omñ ÷t[ðíB]·Å×H}Öðw…çÕËÌaìžgC¦0Ýï8=‚ #îêÔDן™6õ«ˆ=ªÿmKœjý$9¸;vŽ”—ñ扮[Örƒ;,a(e§,wyàê÷%E”½ê÷3{/fÄÔ¦/Žªy'¼h¿éÏlJKÎ,!!.©jí° u¢6ý× ”0¦GÚçâ‰}ºÁlýªcEM*¼_„q¥Æ‘ewŸí ¨s¬d­J»Öµ¨pž5¡=@ܽRÍùáÈ”ój%µWȆ‰wðõóÓ=n H^#ÊèéÑ-ïíøûo:öÄÈ/@²…$¹×äÜŽºòLÎРi5è"Þ>}ÔYÛu ·Áþ»pZ•!?±¢Ÿ9Îo ­=e_¼?XµPR¶ZìßH´quáQ{_ªÓv#><|·;æLá9ƒHúo®ØøË×ÜZ,º L){ß8^úi‰½Ú~¤û¶Üð) TA¦àÜÒEÊÄÍ=VÓÝÐ[Íü÷Rí¦tU*^ðà°̪Rèö“ÁÛÏÇ:m$Zv{åüâ©bR§‚eWÈê%Ö/YO)[Ü?:Ák†ÐLúFÔÕRà‰ù&ÞZ˜ ¹I—|üünHÒˆÚA6¯c‡+âÞ(R½å½`Áø™'Ö6µØ6éä‹Ó*ÓÏw«{«‚¶··ÒR³. ›¥ÐúÖ¡ÿáù¿Áÿ„¢È¢3Šìù;ëì¶Êendstream endobj 30 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 48 /LastChar 57 /Widths 164 0 R /BaseFont /CCWECK+CMR6 /FontDescriptor 28 0 R >> endobj 28 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /CCWECK+CMR6 /ItalicAngle 0 /StemV 83 /XHeight 431 /FontBBox [-20 -250 1193 750] /Flags 4 /CharSet (/zero/one/two/three/four/five/six/seven/eight/nine) /FontFile 29 0 R >> endobj 164 0 obj [611 611 611 611 611 611 611 611 611 611 ] endobj 26 0 obj << /Length1 1532 /Length2 9823 /Length3 532 /Length 10726 /Filter /FlateDecode >> stream xÚí–UX\ÛÖ`qw‚¨`‚»'H€àA (U¸Cp.Áƒ»»»[àîî]çÜÿž¤ï}ì~꯫êa¹æ^s¬¹ÖÞ_Ѿú Ê,f 1JCÀÌì,ì q-v6; ›8-­„ÐÈK9ìüüi 1ôúàæ`ãA£H@l\í@æz †¿’xbÖ@;‰ `ä`´†ÎabdP…˜€€®,1++€Ê_wØT€ö@;' ) ;;Àdâ0šƒÀh¬9É‚Í Þ…Mmþ=ä´³‡JèÿÖd@%M!`+W€)Ð U­„ºüßÐúÏÉ¥­¬¬ÿšþïNý׸‘5ÈÊõ2 Ö6Ž@;€ÄhþÏTMà¿äÄ!VÿUFÖÁÈ d"6·ØþÙKƒ\€¦@&3#+{àßq Øô? û[€UVCALSãÍÿìé߃Œ@`5W›¦ý+ûofÿÍÐîØ\ºlÐö²C¡ß_éÿG1)° Ä6ppóŒììŒ\Ñ §JÜwvl t] Æ¬,`ˆô´%ž3ˆÚ_ÊÎ`5ýû¹¸¬®6@ðï€ÕºkÓß!>«Ðò;À`…€ÿ07€ÕÁù÷87;”-ì€düUâh÷;Àù—ˆÓ\V{hþa¨š=Ðé3è‚Yÿµ…ÿD b&+Èïè]b¿‰À*ñ› Ù’ÿ/ÔYú7Aud´ÒûßEá7A×®ôñAgùð› ëVþMÐ5«ü&hÕß]­Úo‚Z«ÿCÐç†Õè7A­´ºÉ?ÄÎ-oúBëÿÀ¿šþB Ìÿ@¨‚ÅuýP‰O ÔÂê„jXÿFèagÿP ÈÕ°ù¡¶ TÃîükÛÿ@èN8üP+Ç?jåô9 . TÃõ„Ö…>¼FöÿZô?ÃââwfNh™9 'Z› ÀÏÅãù¿gªƒA¶Ž@YIè¡gcã…ž©¿¢&Žvv@°ÃßïMh³ú:]€&hó3AË„ºÀB/©ìñ"DFXqóú(ÅêŽÉVt¿¹hX«¼!y[Æ•*­ûâd|¬ÄJçG2ûåéSÛ¨Äé§§;ÉndZÉ ®Û6T7~‡ØÍuS—GܰJ+Ã…_µszSÏú3?ÐKªí"/½‚éÔuªéLñçáÕ’N¶R ¨¢ã|¥‚“h[Ì´ìŒó5ayÌÏË2¥áÍâ9¤Åï>%#öÉæÎ)4Ôž4xÖsá˜LÄ׳qµ†—™Ÿ»+p3m·$½®°vTµŒ¬c[gíÍ£´„‹sãµõfS Åý¦äò`1™Ðp‡‘oÔœp¿ÆÝtÛÓ01sÅfRÂ…éJ+2˜‹åõup Ü?¹j€8–MX2ý¬"Wjg\ ¯Ü‹Õ4Y3¢>± ºÞã`Ò&DZßîYÉš°ëó°j—¨ƒl5˜{–ŸdÆ‹‡#?U^ÂY¸•Z/nqØ*º~»—Ë̤ÿÉJHÓâ-v¾£8*ªÚ“ŽvJvlx Ã’çk]}-Áà Áò% ÿÊiÌ,EàÁ:z ,h¥BhçûªRr6VàÔóWÎÂΫ0«U ì·<3’Vl¬Ÿ½ÂYì¡™hÕŠôM}{Ì‹äÛÁÕgÔHñŽ›Vø¾ytãÔ}g6݈ˆ/ðT‘¿©g{)j—1¦ñÔq¥gu¤T^]J¼U<í7Id;D1ð‚´Ñ™•èð‡1_Ð#1Ž¥ihð£øyÈ%ñŠÎٲЄJáKÇæûj+ŒƒÞ(´SöŒåÅô`Iþj»AÀÁ%nQÕÔ½x;{cëÊUj«Ó-¨ÏãZï?(*½3"„6‡õãZƒ®R‘sl\å«ß#yoŒj¤ÛácÿLŒØú8${…ùiÊïW ÿÝÞ8®´00㜉n à„ÇÑ)¾ûœ]rî@CÖDzԨP¶;Ÿº¸6 1ö{ä“vFi€òè¥QŒB·¥´Nfå{Îû„@¶>+²^  5ò¼`¦6'm£²¨Æõæ>[ŵ´Æ"¦núuûÕñš¹vY¨ qdN˺2ˆ¹¢­9‚šPûÑKôÉ(×$ËœŸ£ A‹ó>[¿Šq‡š{zÉ^n³ÄàÄLk6æÐŸâåCŽØÕÛç¨WóS=ÑŸö®Þê•:‡íôNÊm6«0L§ºªåPä5mšª ö¯ß^C<2œAXü ­!GÍ1‹•®û|/nìEcBv¯àYÉx†DŽzªP`é­ºÈÈsr­9¦HÀx© ^Æ1×ֲɳz¾3^!e…ȳâºå@ýÓ,¯|Ée«ojÁó3pÿS²¸º×ááu‚ç=zÆ7ÃÃkë Åf½X¼ŸÀEÿöizÊêUÔbŠ Ê@ÿ®D ]ëÝ®ybØÏ¯“qĈM^óS?§An…¶¾­ %ÝÜguxéïâwßI}=M º|öÖþî#ý²-"l½á‘Îð>®†]wëm·Í\*“®\æ†.~­’÷ÕÏWK­¼ùm+8«K…¾ÏzºZéAVKËU&GM{¯ÇÝ(˜°Ðå#qBŒ™VP¥Éœì‡*œyÔŠõ˜ý)U0ò¡ãœá’64ýÂO”Ì‚`Ø\o9¼VÿÕŽ$ÅDÝ¿šÒ**=ÀS)Äó?²Œ{RLÅ“³ 9PyÁs*MN áÏ`a„EõïDøõ+/_çp¸>gƻèxŒê°äzñ …=ÃFoÊ󬎫íÊû‚jdî–dÚvy%BÞ…<Ÿe’Ïž¥¢Û´¤â„Öáœ~“±\‚ävç aÄÃÛ<ô÷ÒÕu”=îŸ[Þ¸8‘ èNE{i§¿Èß÷ý œõ];J›:'Ü)Zˆœ¥«É8bï: Çxcu³ʰ|‘<Ìq7žÒ}ÚŸñäžÕ·Nx ë!EÄ;ªäïv-5Ù2NÎ#º+åbÒTqµÍý^ ØIåÍ«79¦TËùÊΚ9p©ãb®NnµÏ¢Ó¸l,/î7ž–!(:ì%õ2œ¤„ꥂÕr£xŽ{ʦi=d*¡¤»{øNœ¼©WŠÝ{{¦(V3?zËä'¢°©¹°ž‚¡1KqÐÝ÷n ×3ŽÉ§Íß®ÆÛgß•Vãd>ä+üÀ ^Üí”aCrÈkjHe{åëÅZœ2Zcð‘p½- !êÓe©·‰ÌðGnã ¡|Í‚±uÍ ,ěȜÐ;¸Mš–B»¦gêVÈÖ¢MC0åóº€hIÑ…¾+zÓ@j1Þøéq„`””W¯UÔÈÙ“eÙ™­Æá3osTÃjd\Ÿ·SŒ|)ÑÇ3uƒW T¿ûº“§?7.µ‰æê wGóR—)>ç0bX3Ã…à±#­mø|ã·ÀQÔ¦3JrˆBôšð1êˆ! +ËKŸ’´Qàî¼É¥òrÜâýÑ·46ÈÊç§›Zvg£X1ÿ™Šk~f€ç…ú,aÆÅOùÈš¥oÕˆgHr¸{-¸©Z>öÌrW_ÇÄLTV@<M‹k‚ßâ9Ý>1)¶­óÌï5ÏôI:ü<ò0/™d4µ°¸Y²N‘¦•Û·Å›ÂT˜“}5΀j}Œ™º/Ü«J¯…ª)E×ÒTԜǒ:*øË´'RuVL{XØ,Å™”2.ZËéï.7¦³ÈO«åÊ·àî‚|âI\Q€÷ÞŹ¤‚ kÓ¶ý0ÒŒYƒ¢ü:~¹›ÝAÙÒø*‰ã+éêbw‡êZ—.)Ú²ùÅ:„œMhÉÀ ufõ…@“ÑÂcšbD¸g‡:f5Z„u´YRÏU_p;F¹»m°ÐN©{úÂ6÷¹:‰QV¶ zo4ßðÚõ¦‰À3.gÜ•Ì/H¨Ì -ÖÖ÷‘ºèô¹ÄT½Áò’hÇ”JË ‘1jýoNž`…Oün~ù8U®Šl•ͼìî´´3¦E¹u}­WO4ìÞg*ÔÒð=¨9¾ro}4-Ó¹Îîþ$R=¡52©­¨“6 ðù±Kå|¿‚.µÝñ–ä‘ì5Óæ©qîAVo”&I)'äÐö9Óì·ïÛ»bƒ7UøN¢Ø7z°–­Ÿ=W:úEz êòàuDrÚûÒýÉÐ ‹›/–¯…»y"ˆâÃUuäK›·û/©h°‚¢2‡$ÜÍéJœ6w|þãt˜Ýª¯®Ä?Ì ¢ã’\®žºÐ^$ÚxöC{~6ÿƒ›My­ ÃÚ°oŽ*GÿëŒUCÿ#·®Fù{B[|q+Y@‘#ó &òm!Vøš’ä:ÁN¦â¡tÄô…eLµ$³W4¥®#1î'©C¾8ÅÍ<øã(m~ÔÈ©—«åÀ–d"¯²÷T…ÔŽ¢ûlP ^ÄŒáq³Ä½çÚ×$ª)Äi;Ú0XRA-.ÕÔc¶VšÝ×tLȯ©U‰Iºâ ÂÉš…B^õÕ@FÖ„BÅZ–òÇyBý‰´Z¶vÒÞzBIiÏqSƒÏH¹ÈÛh-ð–|vž²ÊFχ”>{^¼­èéB;itîâÃH;àùÆŽéc¶U_œÎÅÊ€­Æa¢@aMù þ<4ËÐâk3![Dµ¡x”²äxghªGJc@¤‰ijfšMãqñæË޽ÍV\‘“|{•x†…÷XÿµÔBö´0•ýù¥„_rHL€³3„DÔž¾d>Ëñ,6 v”ü–‹‰A­Bwú»÷›û\oWX¤]=C’Q±çúÉœOG¸mìóÝŸ·¸´¨ ‘j4:0tº¶ç„‚û×Ò ¥ÆJ#ƒ…:¦/Âò&xQ=H-… ŽÃ–z6Óé©À2âl'#îx¤[¾º¯4x)výAC®;£Ï‹"ìpW_ÝZm½ôÊ##Y¼†oDUƒðhÂäâ®>5=¶P÷V¤8‡è¼`ÛÄÊ‘ Gbò‘¢døõ=€/Õ|þÎ.a‡Ÿ«ƒv,U3!ŒËðýEûí õf‚ªò½O›“^°¬ñ/* #ÍoÄB<‡ü¾wô²Å_Œ/ _ˆ&™nË-”w®£ÃËÝPüj±3z;Å+=éÀG`îkÂÜ …A‰Ú0»ëúšc;øZ‘pEþüf±–L½®A>¥"2 ñU¦Þ‰5‰{Eeã&Ïòá±fé>λ>Ìà§¢¥ Ž@mÚ©/LS“Åz}f Bœ¦4ØÞ(ïîÞýò¬œÁŸG,Áß\¤ã#.}-â³ö€q=ý€ë aµ†2œ®/럇Ð*„7¦ßû*Ø?Ã’Üd÷‹J@ËÞYžy{úfk³z86Nýû•G¦v%ºHÅvߺð='c®çþä6 )ÑQ°Ì´>š=Ãä™é¼Œ£(†KDÓ]Æ£/á”­o3¥;p_rÒ„ø›ÞLG.NK‘Ê$ÜfÆIÔµ”døÚÊ·R‹¿¥™OHÞìž­H8w*´4(yDP­›Æ“ŠàÔÑÑ‹ë“<ÅqÊ»kîrÑ>w(á ¹à ›ª‰!ÒÎH_¾hÙOL‰ ÛÓkxëÑ«[‡v ­'«¢v‘½xgèºþ‹@e07Êv^ïäƒoóé@~½¨VîÂ[óÑy¢Ì¤ˆ5å+|ódRcAí=%±ÿuœ/ÅFö~IO,š4.E¶ì!¨ÏåµòSªõVOØ0è‹…¿MOÆcðú·£ª‹„?WØh €“TTPÜÕ)€,ž0ðâõ Á€s³‚U!ñûœSßõ.D5zu«Ú¬ƒ•4s“©®Ê/Õb; ºÖ€4]rö l~äÃä¼¥ø Ís4ÂŒ¬Ôß2_ îk.®dqC´ÂŠZ¿ð¨âHHÀâö]~u÷PÒ|vù’f´B0%µ¬öÜ\4]Bp )z_–úpDÝqŸÎ¦>† ¤™Ly \þ¼ÄnŒ[DcÁ1íe›ý3Þí!„¿ŠSלá¾ãaÃÌè´,@å>B«ëç"îš"}' ûåŒCÞîâÂ}{NEvH5ÈŽp€XKf¬ª³©ptôvˆª¯Œ.ºuÓ4ÏxS¬±ÕG̬,w‘v’fü(£…-«É,`9ˆ{ÏÂf=%´–ß7ƳÀ²´È²E}ÆÈ„©íᎃ(†Ðl›“ô,ÍbëÐÚ}„}˜‡FÎN} ojÙ!pñúÞZYúÓˆvä)·‰Ú»$vÝ7€xi±³Â óY*¹õafCëI+Ò,Bs¹P¢¸ÕSìë˜È=Nûm_™vØX£IEÀž¯º¸i¤g9U9¥‡Xe—ªmNKñ³j.'˜œÜÆŸHÀñ€JÈCÉfþèNµt˜ñZ9ô¿¡UaqX$Í/ed½Ê‹-E M=gù”âƒv')7Ûªë·ïFçÜF.{}T«à¿}þuØ”%Šô†¹±ÉòV<ò¿¯&èù Î)5úg}ý¼ -ùb†Q©ùníàÞª;}†?»ÿ ­É-Ký)Ù@>ÌÛ1Kù7£‡æ>¯'1<䣳:Ï®6lgÂØÆ]ï¥xË>p\­½ÛA° ò¦¡S·E¢æ •hBfu™ÔJè»E%õ†‘§rjÍ2àrþñI9FØPyÆ (ìËFfP úƒåîmwìß·¹5—Õ’ˆûçù­û¡)áø Çøœçm¥|¶y[ì³óµìÙk"ø S¶F(0Dç-mòà¨@CЗ‡Û¨¼:=5Dxì“Æ\Õ5M5ÆÐŒÁ·rÒûÌÛÔMÎO€á nå„fm‘â”q›BÈý=buBI\¼“QŸ–ì°öGkLKÃ:qiµ*^é_ÏZ³éÞï˜!ÄÏ……÷¾Ö¿¡þP† ñôu'ê×ùý×÷´Qç•¨ä  šg³KÕ—0ì&ñÊxèù[+J÷º‰6¾ä`ûöm*¿_iÝkjåé±]Wb‚º”›p6º·ï»ÇRZÐeÊBíMÁì,;Rõ¬'’B$ì)lg«)7CÀ—™ì¥ók°Õ¼€: MU@3løƒõ;´-n¹Ù1jɹ1_‚° 4­BÖÒ#?ÛJ2ën“ $b”¹À$GQô¹àML2…k‰Qo- ÆË½‹K.«éN29yÝÜ«’ÎÆo |²?%Mô+#QÒ.VÞ-<‹(à\6üR¶†QŠœ9"ÐÊñvóM^‘äÐg:Ø Â*‡Ã´‰û¡ ˆ ÐSÌ9]ŸŒyUß~SPÄl#ÅŒÇ!ұƢ•ÿ°nìSllÉŠX( €\˜÷¼NÈÊŠ.¤9K+óÝ×`ÿUnqZ¤uƒ.ºvQýÀ´ù¾ ’ÇÏïwva†ùÁa#HÑWkè³2êë“V{†1Æi¥1c*ÜdÁëI}(΃Ø>ˆG;¸1}D—‡–‡ÁOó =õÆxug÷Åcõ2ˉúEߥµ­DʱëÏžQoÑšüÝ IÅnŽšGœ_šÒ½À0…ÍŽ©âìÓaÕ 2¿™šâg°xʪÁ·@”ýlêçQ…-o½/)vžc-’ý`Ã#ðErv_7¦¯Žë£@öj@óAÒjOŒ‘?a¯ê²´|áà#‡ÍÏ6®wM|­ ÂP…ÕY œòÛlÏ›¡«³öi™‰‡B^voÓ𻓶gQ§quV™}`hš†õiÊËnð¥µû¾p–Kr'? Ø}Øaw–W³ß`FÅõ"$¨ÉÓ¼©gVB£_ð#ó;Ë`Dþ<³½¾•|¼¼å§¢X¸,á‹î#5Ñ ê›ºÂe1ÆÑ¾÷<µœZQÀé^{­<ÚAå¦r’õŸ®DÎ'€?¹w—ô\§I]À¬X›ZmNqÔØÇ–!Ū¢Dßîfm¬!8V`µ÷}ç¾;?Ý÷XüUƒ1êÏ}ÏcRÖ’$ïιß·Kg7·ìyHªYü/8‰½‰³!<Ú–Ù³¯øÌ›)Ïòa³ À˜’ Jðj34ŽÝÉ·Qó3¨£ˆ *ËÅ+^ßȸWŽÂFœš—Xµà’¬_; áÇV’Ge´¢¹°'{¦ïtù˜ Ç6œÎ£¤iÅI(æ>ͨQT¹p5t=·õd`µ?]/N]›Ñ4Ô.Õ»ÃûóYM¦4û7°coæ+,#Çr ‡4l/™z_|>Ë ÉE»n‹oÒ¤²—%#›:ˆ¡›VÌøÙ=9Àœ=æ*~eÈÌUD_ÝJ§R‡— –u.Ç7çu•G¤f"ÓÆG7”ôtÍ™¼„ÑzL¤TI*Îù… h“Z‹p+ô«+C t·-ëC`FÝaÈóþ×€D'"N˪ ø4x}oaœAž¬‰zúõ8mµ³¼Ï,qÕú13X\<Ã_u‹cEò®}lt[»•upÀNáà ¶Ý0”ŸVGn|«Üc‰:Ѱ×+z‡ª”s½ÆI,¾ÆüºƒÕ`š.yïŒ;Høù"{¹ŽàvTìšSl&Àg¡<¢µ‹‰#Wž²C¸Î¸òçœ(.u¥»‘ú œ×ýv26\T7S@é&Í»<±ˆÌ¦@yžZ¡²¥¬/'Å%T` «©S÷š³¼<‹õÓ†zVzùÉwy)¸:ËoÒ£µ¸µí3cŽêÌé?7®j~LHf¥+½[Ñ´9³žpéé*^G­¿æñlîñ´ºÒÕœäø$’t:ƒc]ç–ÇiߘÒAk¸ÿã…׿Iyò2ŸÓÚ*þÄ-Oi›&ýŽ Õ–áÒ`ÄbñÌÑ(•׫YEŒëùÞ1&ƒÖ=2J×Ï}Z¤©+L¯R'„ko5øb"— îv9!£²;›ˆ¤Å¡*ž 2"Oµtø'Kì´û«¼7 -›6k Zió%ú§_²än ʘÖB½ SN÷uÁ4Éf',Å/Ç÷ÀÝSÔÊU/q©!N)éÁïxq±[§ÛA¥o=b²Qœ)¾Éête#T¥å!ä¾?œ~<oȯ Æz[þ4 gØ*\<#»·ä0wÏvx½!†w#µÏëœõL÷ŽÖžâñã™'©E×— FÆ‹2$ZU°ª€Søš-Ç„´iÕ—»«Ôú¹»=àmb¡u[ÀS í—"ˆòÞ(ïëÛƒíWÍçM}§ââau6–Íéaâf Jµ8‚üu1*ʳýÏÄ:œüLëÆ×éü¶Z°Ÿã/9Üß A¶òTß¹©áy›Ð6~{SŽ®S|ÔÌÚFÁ˜ÊgÌáÓ:”ĖĬ©;·;$Ç’ÚÇd„Cn“7.'ݲŒPå|^À¿7¦Çñ˜:ìš6@+%Z:0%o«‘/ˆ\…NFþ¡NÌ©ÂÃTe»]wì¥Ü9Šd¤n̼ƒIþ>ƒxÙ "r2ç=Ò|ñr>õ8Ú¬ˆO¸*G?X>Õ|‚Óži¸KMóP†³‰ g,Uä*íÉ’®¨Ž-L ŠT÷&\ÊQIÁUÑ¥/‘ijUÆhPf‹VžEÄ9ýÑ¥ñˆïÚiã‰Tv¬_;;µ “´&ýЛª^ÊCa<$ûz³‡éoªÃ/¶(Œ[|Ù½^C³öÚd¨öiöM¤“x¢Œ{¥ zxò̯u¤ÜEŽŽK—ç|‚ªGaè:ï"½â­á‘Ü"ê>sô­÷ŠrµH;ô¢3N{q–„æ)(Nd¯}Æ“àTß^Œp¼¢À ö'äv'ÌŒå[Sbs&e¾dº¡ùÂÍtÁŠO¸ ŒÀK#2km1†³a›W4À êæ`ï5Íêà™òŽï¹Ã\éy8PsµMÙô}- /;³\?©`ÀC~:ÊÞE‰6UÞŠm8Œ««³óa¿ëSÃöÎ'ÈY@è¾r>F·cz‹yðú“¯Ù£[Öå{±2¶^‚ ±;î™±¼+ üsѪIâôàÔ”©CNJìK{ÇHZ1'qE´Ù7¢©:¨ÆZ|ùO(f}áš„› R#t†7‰ÅÔ†:^·‹Q Ä…Û¥ð­}·%ˆÆÚg-Ä=\Õ©-ÚÜB®‹ÝÅØлeÂ*ûïº%´I¸ÍŸd˜nªÐiãïçm“úã.ÖAMçõ%i¯3\ÒÖøøáìXH›Øþ?hÿ‚ÿ'&0±Ù9@¬ì>¡ý/ÅÅ„'endstream endobj 27 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 12 /LastChar 123 /Widths 165 0 R /BaseFont /IVMAWV+CMBX10 /FontDescriptor 25 0 R >> endobj 25 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /IVMAWV+CMBX10 /ItalicAngle 0 /StemV 114 /XHeight 444 /FontBBox [-301 -250 1164 946] /Flags 4 /CharSet (/fi/hyphen/period/zero/one/two/three/four/five/six/seven/eight/colon/A/C/D/F/I/L/M/O/P/Q/R/S/T/U/a/b/c/d/e/f/g/h/i/k/l/m/n/o/p/q/r/s/t/u/v/x/y/endash) /FontFile 26 0 R >> endobj 165 0 obj [639 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 383 319 0 575 575 575 575 575 575 575 575 575 0 319 0 0 0 0 0 0 869 0 831 882 0 724 0 0 436 0 0 692 1092 0 864 786 864 863 639 800 885 0 0 0 0 0 0 0 0 0 0 0 559 639 511 639 527 351 575 639 319 0 607 319 958 639 575 639 607 474 454 447 639 607 0 607 607 0 575 ] endobj 23 0 obj << /Length1 1795 /Length2 10723 /Length3 532 /Length 11737 /Filter /FlateDecode >> stream xÚí¶UX]Ͷh‹»C‚˜ÜÝ‚»»׉»Ü]‚CÐàîîî<¸;w;3ÿÚ{%{íÇ{ŸÎwà…Ö«Fï­zU±‚2 ±­!PÌÖÆ‰Ž‰ž‰ ,+ô™‰ÀDψ@F&ì4p2·µ1pr˜¸¸˜‚ΦfF;7 +7+@ØÖÎÝÁÜÔÌ @)Lõ{@Ðè`nd`5p2ZƒrX”mÌNîôA++€Òï'J@G ƒ И‰ `lnä0ššÛ 0ü6’´1±pü+lìl÷ßC.@G€$I)ÛÚX¹Œ& r¶ Z@ÉÿRÿ™\ÌÙÊJÎÀúwúºô¿Æ ¬Í­Üÿk†­µ³Ð kk t°ùÏ©êÀÉ ÙZý¯2’NVæF‚6¦V@ã¿BæŽbæn@cs'#3€‰•#ðŸ8ÐÆø?@mûG€ARDVTZ•æ¿öóŸAs'w»§ý=ûfúàî8˜»´é™@A¿ÿý—ε1²56·6v€ƒƒ;èd€ˆ àÁ0·1º€n cz['Ð#PK¼&¶¿·¤Å`bþ;ö/d¡Õ¿‘…À`ïlë46´ú×Nþ{„ë¿Fþg˜•À`gà´±šüeú¯èLe7²µ¶6øa0˜¹Û™mþ„ØAÏ‚ªØÿ q­ ÍþD8 _€¶ =[à¿™ äåäúgœ dädæükÆïFØ:;ü ün…¹Ë_3@ºŽ ]ù7ƒd.¹‚v€ø?–ÈRµ1ÿ[„ó÷š­lÿ<ÄRÚ;üé:;ËïÞßú?AP5Á?Ê+ü‡@IEþM µŠý!Pzñ?Z¥Ä’üC {™?ª û‡@äþ¨»òÿ&NP=…?ª§ø‡@õ”þ¨žòõSåÖ§úo½*þ .PuÃ?ªnôçÄ2‚Êÿ…¿ÛùþÞÖ¿d`ú‚ÌþBÃ_wÔ‹¿ädù‚¤¬þB•õdYÙü… +Û¿de÷þÞð¿dåðþ>g!ÈÊé/Y9ÿ… +—¿dåúA ·¿dåþ‚¬¾üƒÿû}&$dëæAºtÌ »2æp°1zýωª6æ s+)ºnŒŒì\ÿDœ@7ßéŸè]ùßlbz³n@#„Åy[£OÉ ÁÅÞ¢¹?J ©Á…Lcåj»fÚ~~·*‘¶§^«ùüXš†‰²½GäúŒïÞæ©8.væg›2÷ºç¢¿—ö¥ÿóeš¬û®É]À1jkÃìõ ¸üôÚhq‚F^ÆùÀqŽ¥ˆÊ>ì 1X·–K]÷·@vŽÏbiVª!A5ä,ÄJh)öÅ¡¬!«®h qP«“Þ!pM4˶mιpÙñ¯zÆãjúwÒ¿’Ü‘·5cÇî0ª}uŠÂ·³eS5¢ËŸ µVˆÒ™´¬.#¿ÍR\Ñ:i§VtØ-UÌfæi>ÈÃá²–ˆ‡Iq ›‡·´ç«‚UÇV’ûL6®~o3Ó×”»%Ëÿ`&-þVúåÓéFÝ JtK' é#9Î1J%å7*Ò7)é Å˜ù Ñ—ò:ŸTBÇØj” ±üÊP“.4Ò¹Ý`:ɵúŸ'£‰‹Býì¼fy±ö"jhç<Ûúð¢èá–]µ%¢ñhr oÅ@¤”ø=ü‚·Ì¥»ßmÃU™d´(;þÃQ¥*ÅÍö˜;2c ©49•-$3¾¶ªégõð°}:&“ÜþÚÒjŠI!$&ëõÞl™óe²B6§¼5zy:¹hDa•IV<üe>r×î¹òÏýA×™p¯¨Yë‹`Q&È»ˆß¾9¤¶1eš,ø¡á7«mÃç|‹JòÆÛ±ÏbD|ýlr>¿¤Û¯‹G:Ó{–K6ë#Îa|øm¨-ÊOû²¬üÑJÌè€1HÇ”ç0¼1FÏ?Ëç;y©ú¹Ÿ—œç6ÊLã12#[?VTÑâ#«+ÖKÑöJ¦•x&߯4ôlŸa8½<#¼©ôCö h¦d€Oa«êäÜ™CE7]Z’3é‡/öL–ôXQ[9Ž4ìh™yb£Ì(­[ûþ~ãça(ô ö˜lA>„Y<÷©ìãç:ºŒV|äXNà°wGìx¼ãߥ 8òdl`‰s[ãÓìbÑjŽÉÓ5ž.oöÛ§² Tü.ºz[òÉŸì°,ZŒ±êyÞý„¢¬ƒ×ëÖWó±0Û¡^¿ø<ëÅÙµ9,GÞ=.NWÔ¸‚œº,™J§MNâàŽçh©,í$±]UO¹ú¢nBLÛƒ'“Ò¡ÇÅ÷u±ýÐsßÕËZg ¯bYïWšL²K±:GAÔCV„õ†NA k0Ø4ñÒô2JŽüöÊÓ¹›|"°X‰ÝçÍy’ù¦õ×K 6˜_ÕKdwÃIÄšy*®óÑä/ÊÕÎÎ5Ügsß÷Ý> ÓåŸÒè²UÌL')PAz¼½½·~`½Ý$FƒÜlî(ñÁ]œ¹³O*„ôËééJ§Ø4é¹gvWü¦LNxú!bw¯Ø7Ì=®+qVó›.mTÊôá¯kRê7.aÕи‰â@ú±Hz‹vyh†DN‘Ò½ž2=Ñ7ÞWxŒD‹—þ)ò!‘DÜNÊÚw=Ì(…¯7,×mÊ”ü]FüN:"Îç©x12ë;‚‡·Óg¦(ÆH à=É (Lp3#ÞVoP„+-þ¸w±¯¨–ÊFý‘F]Pö„+x¶R˜µP$5ËÞ~ÏøÍ9n)ZZ%ø5³³÷ûÔÊ´ÙåeϘ=rJŸÇ»ì¶îÝ.¨r Šg§¤äU6™CŒRBšä+Ed"çï€ñ<½Ú`møi…õ4ÂQŠ÷ıU¬c‘µÐë4áa&Òâw¯,UMöËËYIöjvfY.vO£-|¡ÐP$}yFrÌÂ?GºO•†#+«Ê¤^ml<¹`²|ìYc¡ï.ýˆ!‡µNl·–5¢¬-L]z5ˆú+`WÖD~Š[.;"¡xËúÒu·‡$èÀò>éqœõ˜·žØîÎó¹1fšÙ²®à‡¡*c—Za¿HácN¸q?½†ª¤“ÇçùjqÄCƸѕÏ%BU:/½ÎˆÏ̱NÓs"lç|““¤‚Ô‘Dj÷xÉ,·a„IñkA$­yuÕÚÊIΊ(‰¥¦ç ˜☥4˜/íIʳr494t‘c™b„N‹:Oo-Æ}ˆ\õYˆ i)!“oB;²®$uÓœ11¼é°7x½_ž †ª¢EõìÛwÇ¥Ä!Цñõ+'pïèÛ³mµ¼:Fcr¡“îôpÆŸ$Èø./8™ßÁŠvÜv|B±¹ò‡£/tê¹@hø¤g=×=1ñ\/Ÿ–Œ9üú+©\8Åöf$ÃÐÕíÙDzqfh¼°¾Õüûšì'n‘pô ‹ä ¤øgý¸£å«ñÝ‹KJ}ðšR¨v(”€¹UçõTŸf6[q˜¢fÜv b*¼Ãbaýþ7Onâé–&éëù–6ú.ä+ÁJ'º»¦šÍ ßröV—ÓJÉËËT9B¬‘¾ÃvÛNž„ùÇJö`æÎ<Ñ ö`©Ô<·¦Ì´Pµ:›mZ3ãÆ¾[¨RÏó:zßj*“Ó×¿ß …Ó×ÌgŠÿ¸ Ö–*ßÔV{áÄ`ƒµB—è;Ì)Ð)šæÇ^Ú©õÁ±ÿæ9Ú¦}_;0cÇ¡B œO^«DŽä¡?¹%f—RÔ“0÷þ¤?ÔÐp-_è°¤ŸïWضáŽWÙ—:ïlááÒF÷ SÓ¹µ±‚‰~ã›NW|·^/n sf7àFp£Š‚te¦È·*¿: Ëfw…{¡\Ùæ“(†Ä©²Zú~ªðEȾ0kó¨Cò»¦°60¢YÄ”US¢7òfbig;îräò>‹ïŒ„"vÐ.-»ÅÌ´øùà'蘗íê–îë:.ÖEä¹f˜ Þ’Óbšå9 8ô=LÑĤÎïÏ!{Hï[ãÝ{—² ɵgÚ;äöÎ ²Iõ»7(›2ö¢ìÁqkÇ×ÙTÿp׿¼÷ÉÂ[ˆ¸šJZÄ«[Ú3ÎÇš›a Þ),Â5}»£:¼ùðh߆|©YÌèîÁBЍ4˜áý‘\.r6ÓÅto G"6š¼P?v^©ç[úÒ+Á½ñGç%ét× y·¥ôéžN)«–”¸1ã±i»¬±c¥.ÁW_ïJ ²Çì@…—…9&H¤¤NÒ̵È%äö/ŸL;•ÏÜK™º}¥OpkªµrÀqDT_Ž”[ߊÓÚé•ñ‘脌)"Û qbl|ó„w³ã9èEóÒH^Ú†ß= ¿^O>Å BžâýydbŒy– 9kÁfÙ©©N¬­nEe°#Û;£Ó€q¸¼Ö‡Â¾Û˜BnƒP0íøéÉ¢+»BµÛ®Þúµ(çH/—„ )«A«Y¡ÑŸC¢.VÄêyúÁâüö©'ôçã « · ŒRQ÷ËÖ–¯ÆŽ5cÃú𦨮½™Þ#ùê‡SÜ^Ý^nà Ô§mµ« ú¦a=ìþõ"æ5å펮>1(ëÏ‘,ÐéÕ&‘`åg(¼ç 6†™YÓ‚±µKvÊxû7®|ÅìŠU£Üu$’æ¿Ô÷ uòXÌNÆ4~ñ—Á¯«<‚g‘n 9ï–9‹nC²ÊIºÝ8…Âù€ ]uc0yN ΆAv“𯴔R íqž5jíÎÁ&Zk{³t‹ßAð½_¦Åÿ@È;(y­€?©ËW55ůˆÍáy”§Âlã:Kè:þ™©%ôE›î’ò´Œ @6tH³(%ƒZZ‚ûšÑ|D¤ÓFrÝ-“¾ÙÌ÷ó‚FÆÇ¹fÏùâ]ÅQ¨F~¥åµÍ ÔÌi Àn)W–&*)LöŸ¯èq#¢Ã›”ËuÈXŸ²pÆÕÕ&‚†jMµ!Ui“f(H{$È„zl è1Çz’‹)ã) wø±à4áR\ûŒÌšJbYÉ&EÃâgлTr#æÜÑš 8øÝ?"cBUh´ÖvÑïyOðèõUyp(_3 ÜÝ•²¼êDJ¼/¢½ÌGášò¢Ò…¨M¦/ öÎϘ1—Ñw×vå–ç;âÇ[6=‡D³ì„Œo-è÷yS"\aŸ¹ÁŒà-Òï&ËuÜå¶tTã¯rÉà°³/¹0ªš¯Õb}‹³: ™µC8£Âj «-Ýìzë§—æjÖ})¦D¿ï+¤Z;“ ÇËv˜ÖE%ð¥\k¹”—° D"Ž’‰Ž¾Ot4J#")ìÍ?ññøzK~~¾¦²´jű®›ÜÂ5<"•R ›¥×÷vü"è¿É§ÙÖ*E½ÝgªS¬ûí„ÈΩ)"ņ½¼SƒäU ð$]•Šgbo›Í\ —>¼9+lja¼º¡oN+q:Û'£Ø»öJøurƒ–èed]Iê´¼ž—£<=pó.®¢ M¶u,¥;î4:Èë]ÅÅ‹QµŒÙÐòñ¶Îï=²™°lO™9Ì!PçI®z)?%ïD]°09ž{–Ï¥2]o•8¼†ë Ø%çæÃ‡“ã…eÙ wÄ£Qú…ø†ŸBЗn¯ŽDë7ˆÈÅ"!:VŽË8>¥õs}p› U×v¯!ç!½\ylðž¾rä1òŒõ+¯D Ji1ZÄÝ¡žúÂÀS—ªf/üthŠcš…%î“Q,–P"• <[‡!@ÿç'ô=†œaaTݬs¸ˆCKîB¤2yS"釷>ËX\ÖSñbÅ, ǰørmÍY$N°.;ò°ü='Þ¾Š9š7ìv¢Ä#2Éï#s «Ô]mÜ }ùOòÍ,·–ÈB µ(às°7úýZfnù†ç¹QQ;qÈRßífV[¯§™ð£Å">ОÕõpìw8OW—ðÆÂÃ]žnð íRßôö0éD×Z~ü9yØBûéP€â%§A…$÷“ŸU¶­Kkv©Ñ‡ƒÚ¾2{NÁÙó45‰Î€4¼þ66âÖ¯v‘²EŽs/¿H\BCÛ€^#)ds–(,§Ñ1=¸þZ<„/Ä]ˆ²²oR¨ˆm'±ÏÐ…Xl{øvÖkÄ𙉛)…#ï¶aîË’8Ä }ÝcENB.E²€ägöPå–{Êf# +^ï2QܬçÛ^<í@[^`ÞÛÿ2^ñuJŠù:°mÒu°…Ò£¤Lz¹`è¼*áÝU–¾ÓMÛ‹³¢ÌØÉ?-kwÒM&•¿Æ[íðê–AîLö}(·³Ev$\`kÆ*-F‚,ó±ü Ä’#Ó-P!Üñ&ÿ͆[ТÇG ùÊ 3¦ºtÑMŒÌ’Á¯ ªÒÆh×ñ{Zæ¯{–ùÝ]¼·aä—Oº)¢/áë‹'}͉ŽK4Ö¥òx&Zdj¯ö¥r5m< ånãöÈççÕÀ=µ¯¹!Ö• ½Þ74κ/ˆ7òbŒl‰jP¢~Þ'ï ¼F_áëzÑ¡bT‚L8©W¼Ïži“$™ÉÍa½&Ì`.‡–Šüjò­—!‚W-’éY^v¬cœ95Zg,Nlpd‰ à2QLÖ96ÚÚ+ ‘¡íCàµ] 5 þ§‹š\À¯‰!?G]Øeõêr?;–Cð¿gçåÍa¼ uMI‰ãóòè3c™ÌF+‚΄¸jÓÙþ®½¤]u~Û0ô:Ïã í²å´f$è €D&€­,¼§!V¤uú¤Y00LÅø2-…ȳø]¿S%Xoò0 ¯i¡V’2c¨‰.Ì"ÙV·Ãz¡2æW}ÃÑ·_6#£l?õ©Šó<¶‰Û@ÑþQ³VŒp ¹ht%\‚Ì‚qÊó¹ƒ{•I{ J õÀw-ŽÅÂÏUwäbF6RܱI¸uI9þ?`ì—~PïRµäj¯×²z*FfEñxö$Ì)pï€Ö(äéÙÔsŠÙa/d*ØRlí \Ô3]P³%ù5Ž#ßÑå °Ì% -)Ï„<ã’‡¿«qžcÝD繃¡ «s‘Œ7«2Ü@ÖïŽ>@€±Á—q¿®u¿Ôíà¬=L¿-­Ð8ž Ë—PC{'Û/ûi­ªI:¶j|“>”÷@Z~¾‘OÂTê©ÈŒI;.>€1"ç©óa{ѰCú—RòjPÁ öÞ3³£ðèø×ÏË™›±Ù¨GÓ¦ùÜ,ÝÒ`5e¢üË‘ýØŠ°”V¿ð†oJ‚!b„‹x×8VŠ0ÐêNöG¨bvG¼¾#I¶tõNR„ŸT‡‰?ÌQI+!ûËÏýÅ{#RÑ ¯uñVA°0„d´iîiS¯øÂÐ…Kä”L>~»…IB§e£ Žœ!ºFǰ y^)·‰!¯Øf¤ðÊë*~mŒj¬`ˆ’ÑÇú™Ó‚…"šùÐ= 8s+GòÓ°MËï«4]¤íš)òÛ›:Q&¦ñRöº±*y“ïV?™'…¨ˆèï)oÔíÈÎzÏ ­bÝÜÛ ™GØn¼pÇhp+ø¨jó­$-J ] ˆF÷Gù¼×Y€®dbg¹.8õµë&2{y["<¯ß•t—ÜaÞé¶Ÿ;Ml5¾è‚ë€o§|%%r¼¹[yŠ™i#T4ó@Í:ã\ðÑÒÂlÙ{k…U8íà$§D”ùáTÚ|D|ÆÛÅL¼šL 8d膄[z5{tÜ$ÍF__øRG£J"kž¾ÿùµ„{ë³Éɰ‹Á7š±ÆmÙCíÔ¥òE9(Tc=·Í¡·.2ó @_…Ç<~Gqx7¸q—!sÄü}š+1à+q2ÙÔVñ£•{jî¡qÓ‹x<ß E1… ¶ >ˆGFH¤"q¤ÏÒGeÓ~[Gº½@Ä„6$>Vè¼a>ŒŽ»b¢Ù<õt&‘Ì$þiî<ùCº …‚u^†B´ˆQÔ{™ψ®»þ¨Äì½ä¥ŠÄ•âå™÷à?_]n-]áçí nûúá€Ï΄#>ÆæX…_kRÞi7äÚ›Æ|—û,…-¢&ç­…Š‘ƒ`Rx^˜=Õâ‡\î|(yzc’͇kÒ ¹¿c¢Wü“êΛ,”’WÛ"­ìíS² ` ùð‰Gl(4ä¶æk0¿0[R´Tn¥1¿àÕ<“¼úíB'ÿ &AÓˆ÷W»ášI|.¯t ÷~Yç"€53/ñç"EíŠ4k9òCà0„&":\¸w‡êç_—wO‚{%<цG£Å¢ÌÁV_¶¾ÕmÌk·5ç^Z¾JD&oîȧ"LCsàôc¯­¹ “Wíq„‰ÐfÌî'ÑÒÖE 7EmD"«Øñëðüt¶0ÞçM¹µî!ofccÂx#”°'€?ìœxmb:Hö50ý“8¸ŒÆ…P¹½G…Þ{¡ýltΑŒ™™28‰°|©.y,OWZWp¹L(>-vÑl4@‡¼ûþýÂívÁ ½ŽäÀr¨²cû VWÅÆÉ ÎÂ÷æÝÓ*`k´ˆàyMdþrIaww¼V«ý.ÿSÂÁªdsìá"‘r“îò—$U°¤G^ÚäûVÄú4Ïó¥V„ßd²¯IGf' zŠêîZôÚà r]Hüö»ëj<% Æ…XáÜs°;v§£WsEÒâ^Y÷x›Ó.zuÙ›HÍ/E’O;µMW»MÞÃ+ú®[Öô*ÀaÜMUmd¨0· ¿'fvuv½€Ñ[åŽ6å,¶¯N|lúàw¬&0Ñ¡œ†Ià{¾‚ù_pkí>…O°ÈÎü,`(©ésðÆ˜€l¸\WþMÓç&!š¿'o ù|!ùÓÒ¶Ûøûoà%ÝðÔm¬>äd`5úr¼é¥ÄYL?R±–M«EâëÛÍ5DÚ~M ¹xè|©H½£E×Àòù‘¼HHKvmqãl”—1‰s<È€@^Ö ¸nb{(@†¿Ñÿ,cÀ3Nž¸(éÉbå¸õ|P»Óæ©-ÃöŠ‚9¾ôË”7ÕżL|¤%Ó 7¡o‹HÐáÙ75OÙ!_¡„ø.hŸ »æ¢î·ˆ'Š+zÚ¸UB¨@0*WìTNrµ Ö9/H0ìTm±¦hîL}l;—÷Ž·•­SÿÆÏNjù·âäµDõúÔ¥©4ÖðZã1Èf>§ËÕk#F(I“—Èï¨Rè‡\ææÃ=±Bs9FF¥¯5=Zº§ ̺’J¸-¼¡¸¬—k }£Ï^õ(n;“S†ÒÜÇ’ÞýqÀé,±1…‚Ä™íº£6𣟑ÜvAÿ¦QóÜí:-â¶v¸‹Ž‹µ˜‘Å$Õ¥PÈê¶%m¹oäîGqJ¬Kb9âýL ¯Î{QŸâª3†YC;Ò18"ÒAvß0~š ð ³Ükj^ý%Ïû¶ˆ³’m’ý1/¯Ý”‘Ü¡;høŒéUÄóF×¥·ð1ÈhÜno.‡K\6ȇ\YšH§cl‹*%áÙµ\±eJS:(3c·Ð@³±×Í\o¤«¾×†˜°. ’+¯MœßjÄó¬ÞuòÜÑó'µ;Î}̓u`u¶Èµßk¾­óI7±jbZG ÌLH±§µ€ô³HÌ ÉdIØø¡ç¶ýŒCìÏâÜìÿ,|m„0 ß&Ù7r¥^@}iî:·ýÎ\Ø›B" =ùÆkáåË(*]¶q3þ|×®Ë ¯AQkt|Bsõ!–xo~éãô×^ãfgœn¸óBòuiWQúÍceâÙêäÁÍð)Aä+(¦kÉ}ƒÉ§&>‰ø–bG‡kQ=ð}!°v{œiô]E|ØÙ»/|aãþþœ_lëÇŸ¶ÊÙœ ¾ls ÔS^í\tVtág¼y¾œ¼ïð yó±j’’û)Uµ ˆQÏPú:í£Ý2öqi7”Þ£y–É^Nl ðš²E’ýÓ±Ò¥š—Ê·G¢ñµ/¬•7Ã[8½Ïþ[ž$Š>MqAl`{Œo£¡ä1¾#KÎÓF`ë±È|¾Û¨ ƒÍ~|õYgëÈ&~b kj¾iøM7 õr/B!Ö–1øw—8ÜýN™,$Ðç±Õi9²P³Þµ3dênjq\AµÕíõØ])躶V ŠC§Y’méé›^A²¦Ef*…x<Šv-ëC­2ž?tßDø[¤ì:JìœbxR™nw•ùÖcuZÛ:{æqÓGh|ŸÐF÷é¾ÃFÀÙŠRC8©ã% WdÍAK…ªDd˫ؑҔSùQÑŠ$•aÒøŠ…v¯1µ.npâ—øe%¨v?Š%æxöôC9Z]r¿ 4Y/î‰G“ÒsOW¥îKu”P3WçtÌ‘4?ñµ}’ãhvÔ[â}ö¶;á«Vžh‚!ß'h¤Ô¬¤ª“ÓÓ’4lªÁï1ö-¦žIK/G°i]+ª$úïØ2ß÷CÙÚß‘(¢#!˜fo¤¯Ü 1³ÍŸìéϺ>ç“H-mnx‹©ØoâOI²¨tq[È0±ð÷‡]HF”0Ò¤e…ñ$*¶zÐØµ)P¯àç-Ý{çÄ6)‹‘§u¥€üƒ—¨’»dØUÖY» Ù•ÐH,çbU°&¡õxïPóÀdù”{Òî§É!œFƒ4¦Å/fâY,m`FÔΨ~H™º©4s­¤#äÖxQ•§;• ·8Ü“Û{£`=©¸ÈæP#®H'‡ÌæQFêþû5ôà`¦ ˜@ZMD0f'ç¥&›òî =”Jrø@‘ÁëF·ÇÉvL‘6›oVÒhƒme0|†WÐFµTœÁÅî2-½-N÷þ^V žšcÄ`å±K[fbƒ¯ÜQ—d^i¾Ü«µ+,ámDØëç›^®oQ2ðâŽz¾E…ËáQÛÒl¨Áf'o«;–@œ0ÉP”ĺ‹?QE-‡âýÀÜ'ÖxƒsBÈ›õ-ÃùŒŒT¹ÂVâWæ‚oOá' 1]™lXy <’Ø0â2eúVXq¹\ŽØ{ªžì‰ðDà0è_¦«FmB[þœxñ ‰B ›ô­3Á½ú¥Î5›ßˆ‰Ýó)\gI¼·üœ75{ô.ÚO<™ÝŠÙë=ËÓbÞoÙ_{ð,×Öo´s^r6Xž†»¼Ò‰ÊmR¦ÚvïìKžf4éÖð˜Ö)~®®Hò½†¼ïFÞ³™h0¡Œ3"g8Sw5&ì„fAôJŽd[ÐKYÒÃôn•£yäo»7ªU¬ç"Öi-vwÈÓÍN…6™¯¼Ào é姦Âû ã1iJñúfô½Ö4]›no†yƒˆÚ> {¬ŸG9};^}l§¯ûÁ7•üfsÏ/°zí© ò:{ík,[ ˜ê7gìò{ãÁÿÌ8ó!/Ézoweú÷úõAJé¾§Úz" Ýì(zì÷¤òdÕÚòÑW=æ_ôÖ#°¥8µ©'öÙIIË•å™^Ha,†ÝW‘€¤¿6.&T¼8ÆMÆzÇIØÁ‹¹Yx|Özou›~^`¯&MÓVš­àù<”'NîjV0ŸcT)=YÁ‹Ü-Wz¤œYFêìJ7G‘àÐVZ¾xQ ™ËrQd¥Œ•t¹!OEŽê­¿®RgoÞ§NUר:&ðO#‰ ]mÑO£ëUŽ+{öšÍ~|_çSßänß‚êaI¼ á×<ʼ™á ÅH¦ë³ б!¦Ö/ø&Â%@˵NŠ£vˆ:aƒ{ÌÉ­Õ})Ùu$6ŠVF6àIÅž{:+èAšýÉ£"žz/iP!ìÜflÖ¼\Ä]vÓ"¼nΗvµDt$kõ0ÈÓt°½î41Š›'>œj`JÃÙ#ÂUå~²ÊS¥««âÔã8æÏjìˆÒµ}¸0CÞo‘§ƒjcdO~̪¬"{vÃÛ%x&}LóââÔ(ErÛjR'š:ï1'é$Sž±ƒ5>[!ç§g:NfbÒxe°\Ý{´ŸŒº1”m£´‚unCÉÝAW/4’ôûò¬Kź?>²«ßo¦G™ÉRÕ$ Iì ‚kB«z¥®u¨g¯ÞL™kT¾‰=$Å+¬ÞåÉã›¶iùÌ÷öÁÐL HªËd%£ÒNnT‘„†=°ünï«× c$XqM±‹+ÌÏ2{æÓ‚sqiYÜ„Ú6£m5~+H´+µ^¤ô7ˆ2x¸„Šô£kE\ðû‡‚bõócå-'¾Æì¹¹þí„é£4·Ú‚&•84jÐ'\xÚ_fdÏ¿RQÂù²L̯¿ ®™%RËg$5Õ½ƒAÄ×"ȵõczÕü!Óòio♺ÿ}7££HÂuóÜóÅ㡦SÅ@6ØÁt@Xâ~®=3ûà!ãt纑S*ÎQK`1<ùõ]éÛ•Mü ÑrÙÓôE°ߊ9æ1ò‹³`1å¢a˜ ;Ä´º‹²æ¨- @à’Ïínðº—YðåôÇ«¨Ê Ã$d²P¯’o·’ÊsÉU¼¡à¸V¯ð±)Ô|„Q3äDhäxû4çæÏŠÎ¡‰¼Ó4"kã¼) [©mŠÙ:³öŸÕõà ë!°ÞQœ'£9–³+½÷Ó9ÆÇÛ‰œÂ\àJ«‘Á@/g+ŒsCmX1V"Hœ­ˆŽtK«9·Ηµ›Á“µçß«-wç+‹UOaiåÓHqë55šŠàð3õ#e´ÔïåKkÎ4‰h2#Áñ  à·ƒ…Ú½”± ± Ü]!œ´)umpÁöQ¥A,¹³ÿ©€ùu[ƒíOöý)'0Ìäh0S‹‚q=¥0WûÈP/1êAhž±~âðËÀ}êÌ@Ÿq?M˜ç—©¾@NìAÇ3ÙCݯ"þCŠè_É—…ð•ôÓ€¤H(ºx€OÓòb;#o4Êk¼ÎÆ ø <‚çŇˆ±giqñD+2?Y?K’j·§x˜Ä˜$™WÑöýÓøòI 5JvÙË–¯„`aF‘}¹èFïkÃmL*ôgÛ«UËãp¨¤Û³ øènO ¿Ù):VÖ1&j78"Cî +™L›Çãeµ5X² Tì÷Z!ó=‰¨y¿¶¸gÐlpO`áÿ"ðŽ•0ÄuOwàO©+ŸÀ™’sT_½árÓŽ“µ‡"SìOÓ˜\Åçê§½höÄÈ“¡uJ§iÄ'$ÖÄiRBKXÔi®³A.ÓÒœ–?Õ!y×X<(µ>”âø¥ÇÅAå"X'Šß3g¡—¥b9dÝš\§¶&“fæ@-]!£å_‡€ß»ög=(Ù¹õDqRy²´;{kúÜ!t( G©|ŠôÎsîf×öšªávî`aü>¯ ­ÿÀÉïý4°P}vpŸÝâ| +QX‚$†ìW”âìÉ­ph#2¢pßSôñ6 Ôx·ó:´«áW‡5-¢mv¸+[°Ì\±Ä<®wgùZÅ'ê<õ·¿êW¬Ž)î?½G$6ú‘ÐxAÚžÇøÿñáÿ%ø¿"‘ÐÀÁÉÖÚÀÁáÿh0t‰endstream endobj 24 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 12 /LastChar 122 /Widths 166 0 R /BaseFont /IDMEKU+CMBX12 /FontDescriptor 22 0 R >> endobj 22 0 obj << /Ascent 694 /CapHeight 686 /Descent -194 /FontName /IDMEKU+CMBX12 /ItalicAngle 0 /StemV 109 /XHeight 444 /FontBBox [-53 -251 1139 750] /Flags 4 /CharSet (/fi/fl/quotedblright/quoteright/parenleft/parenright/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/question/A/C/D/F/G/H/I/L/M/N/O/P/Q/R/S/T/U/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 23 0 R >> endobj 166 0 obj [625 625 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 581 0 0 0 0 313 438 438 0 0 313 375 313 563 563 563 563 563 563 563 563 563 563 563 313 0 0 875 0 531 0 850 0 813 862 0 707 884 880 419 0 0 676 1067 880 845 769 845 839 625 782 865 0 0 0 0 0 0 0 0 0 0 0 547 625 500 625 513 344 563 625 313 344 594 313 938 625 563 625 594 459 444 438 625 594 813 594 594 500 ] endobj 20 0 obj << /Length1 2131 /Length2 13910 /Length3 532 /Length 15085 /Filter /FlateDecode >> stream xÚí·UXœÍ¶p‹»»Ó8ÁÝÝBpw‡ÆÝ]ƒ Npww÷àî.Á‚øû[{íEöþ/Ϲ:Ï.z̪®9ªæ|ë} "SRe5s0J9Ø»2²2±òÄåÕÔXY¬L,,bTTâÎ@cW+{ cW €•—— êè `ã°²ðq°þ¨âŽ^ÎV–®ZñÿLâˆÚ­LíòÆ®–@;ЦƶUS+ «@ÔÖ òÏ7\*@ ³;ÐŒ •`feê 0ZXÙ#0ÿãôÉÞÜÀý_a37Çÿr:»€¤´ÿÒüIš9ØÛzÌ€æÌ  l@ËÿZÿ{q)7[[c»–ÿ×Iý_ãÆvV¶^ÿžá`çèæ tÈ;˜íÿ÷TMàÉÉͬÜìþ÷è'Wc[+SQ{ [ €å¿BV.RVž@3%+WSK€«³ð_a ½ÙÿvÜ¿ ˜EUä5?Òÿ»¨ÿT2¶²wUórüϪÿÌþ³¾3èxœ­<º, óeMýþ÷'ýÿ•LÒÞÔÁÌÊÞÀÆÉ0vv6öBµˆ8>¬+{3 'è ff²wp}:?€¹ƒ3Â?eç0;¹9¸ÍLlÿù¯ '€ÙÞÍÎäŸ2[Ø¿‡¹Ìf¶¶ÆÎï!n³#ÐÙhïúã0Û¢.Æ £ùO”÷߉þ«%þ;ÌÁZÀØho 4ÿ+ÊúïèÿšÌZÙåŸ%\lÞƒ ˜:ØÙ¿G@ú–^Ž–Àwu®yZ9¼ q€Ô]l],ß# qo ³Ã{äì`üs‚d]=ÞÇ9Aš®–ÎÀ¿f€ ÍÜÞˆ“°rÿkH×TÛÿ0HÖèþ—+¨ŽÌÀÿ±oNª½Õß"<ÿìÙÖáýK\ 5[ ‹Ë{ätr3~¯*ÈÍâŸûø®ÇÅþOU€.ÿÜ1ïA¢ñ{v.¡è;ìÄÞ d&þN -‰wžäˆ$(õN »ï2“~'Ó§we—}'Pv¹we—'Pv…weWüñ€²+½(ŸÊ;ò©¾hójïÊ®þN |šïʧõN |Úÿ!^ÐþLœMm€®ÿ£±A÷7³ (ü?—ý?³ÿgÃó‚Ò»agSç÷òƒnRæ÷vçy˜¼ÈÃô?ÄÊÚ¸Ù_øOWü…ÿ´ë_ò°ø AGaù‚d¬þBP)¬ÿB“Í_’²ý AVvïº ™íÿB•Ã_²rü ÿéÑ¿dåüþóüü… +׿dåö‚¬ÜÿB•Ç;²¬<ÿB•×_²òþ ÿ]3àÿ¨/+ç¿Ãï…ü¿_bbž>ŒF6ÐMËÍÎ jO¿ÿ9MÝÞ ô\~’Ý9,,<ìlÿŠšº9ƒîD×½ŽA¯ÿfs+Ð; ôš"¬.9˜ò¶Nm+ó—,˜)‡¦³h‰ShèïB Y‰·-“u¢Ûª×úU‘މr}Hêñ›Ð%²ÓWyRê*È)îÛâë¡»Ñaºw¡ÖMº¼×#ùcÈjGóÂÝ9'¸âÜÖxY’vá`ÖõÐYž­„ÚìXŸ®{c_Æg.n-©t[õðÐzjv2´oNeá›hI P›Ó!þÖáp­ôë?:Ý0~Àå&¾‚=›ÂD³‰e¯´L[ †§3âólêIXOèuf¿—"‡¥š0Ç3.Eð­¯c/5@?Ë\VŒxM®©Šò¨¢ÞJ*Ú+ýO]_H+®Ž­Òö.B#ÇÉɳ±MØÓFV9]dÖÖ¼±LúÐd… t5fš~#JãöÙÈ×c/Σ`?·³(–zñ2ítöþ(&qmÈûÍ'ˆ ·L)8\Ž<¤ïJZôêÝcD…0A#)Û—:&—Rdr!kàõ#ÌÈ]Û ì:ûWŽ{èÍ=„ÿˆŽ‡Jx ÀjKA^ãh†]š@5ß‘¾DÁ †Ì2Žešv¥mˆ_=¥¬‘žýh•|Uo¢—/‘†D¥+9plX´U¨âòÉpyé-á4Q¥`ÁJ·é‹ jÅnúyäpøëw?/,=:LÁ=<AõQ3™ÚØwgŸÙ´É‘Æý»v0«`eº.7ÞݘDÔð7¯‚'¹çÏ⥭]O§ÙÞ(¾Kˆý,Ñ) Ç_†SgÞhߤ?‚Ûæ‰9 u{_fîøIŸìHaµçíõÔq˜„wm¦ø‚d_ëå çÄE¦_Ò†Çð„4Ï1¦_ö>‹?Ò@» °8„0ý ®š)Çú¾bžŽÛ›cJ S“—üŒ$¿Áë‘}ŽàqG†°t‰¯ÁkJ®Óÿ“ xÖT<ÝÒç—íDFOvö~0©v©BZ|<‚³ÕAâ”.ÅHvû†3Œ]³©>²–qàò ¥®ä˜Á VAÇ/™ÉÉnåæÊÄíÎkºBý÷nÇùòñê(ê gvB–‚¨5E—v^ã[xmò™éãµJCI¦Ã’}ý ý‚íò:K|aK¤‘Fƒ<.!XK ‘Dí*`•R,èC°ïF8þdo?æ(jÄdEº}Æ¥ðwÓåè›ZSE,…Ü„€+ï]§ æaDjEÙ3Ø Ùhôo®ßΔ‰ÌîööÎýgMÚªÛ»5ý{Øs‡®ÿ¼ÁÙç,§QR¥T‡¶zs²™»Sí9ÍaÛËA!üžg÷I܆±m~%ÁLÅ?óm„¿ Ôƒ«œë5…¼ÈÜ“û^(@(õ¨<ôÚ„Bä½ +ôÛœ©?lÜM½ ‘I˃)øu&)*Z<çÜ@a<}ƒO®Ó}.nÎÔ<ý³hã³”÷·:BÈfýXÁ–ÙY=¼˜ìP£ˆó“k"Eÿ{>æ.£Þ¼»^}XII*”©«è:]¨ü•J‰Íc¼ÁøVÏ…»Dv‰7]³@:td[(^ïäwbiäzs<í*­”7¢qâ%'‡£‚-ðÓ¸É\Üž„H–ÀI(º=[õÏ®ßÖLÏFá²(J>Æ¡Õ&Ã5†óbà:¼É8»Fkœ×qêñ¢&WÀ¸¬ªp½F4(%_Ý+•ìµ8U.QcÛvPuÛuœ¦Úv›$'Wù8–n[®5#£s™~‰ IûÃV‰N™AÁm¼µ§‚àÃXäíÉ&>¾Ý6Î<ëÎ{„‚+ÖýtÒ ZÍA àÚÁ;+ìm¶ˆ@X-R\|hû~pv;$†6°&kå>G´eS‡G¿nýb,»¹—[P¬­ª uŠÛtŠ£â1‡{û¼2ïSŒ¬£@‘Ÿ#²x¥ªî®¦X?ž~Ui:¬ ¿þ™á˜?21Â)æƒL‘õdýJ ¦ù0K" U,ÁésUN9 äq RóQzI>‘« 2?ØY‡ŸõµwËQFN•<ϨRžc¨ýzC7Ðþç´€e4j7Mu:¡;²›¿ºó¨|u1†dÕVÿd¿rqFÑP%^ÅFo¯kbâRFõâÛ/¶òÈéhg²@…›­ëò.ídñ§"¾¡ð+çŠnÊŹ3xUêÍ/Û¬·†ü†_ffOeWf\ÎÄ„!ÉPIí£Høü˜µÙ7ߟ€G„”n‰ÝVëŒWž™‡oà5ëZ#4‘¨\.nÎ œõg…xÈ×·(@&hDɺ"Œ‰ÅùU2‰ýqRÎË·ŸÌ×щ©hjì–ƒ9§Qâ™:¤5á› ª×xæWú{ƒ¼z“6 z"FñwpåŸÈù0ÑÍ ¤×%Wøz²R^ÈÌ-ètŠTd2íÎjð¾ù…âÞ#ãëӪƆ÷q§®a 39Ó[¦þ„q¿Îk3Áü„ã.2¢v3©ÐÉÙüIÛ’çÖRtH¤¬ÉŠã#Ö‚õ×lrF+¸CB–õ<¸4'ÁTã5^›Qf',^DO¶ylÆrÇówv[Lc -¦ˆ=ô·Íe§Ž kbyømÞÙPôoá".]¿CmP½82kgê0“صWä ÒVu+ ¦ÏkÅ[„Xvƒ†zq2jÞà©BðÞ€ÅhCr AõÍ1ÇÊÝHf?u‹˜ÇLêüC>3Sö*Ò«˜†¹~ŸŸîz„?¾%ÏFÐ1e˯fB¬…Sý¡ïǯ,ìÄtÖ¸²ÕI;â¬Æ8nâøò¿Í„|èðíoRñÓ+îŽ/ÊŸóD·él{&½vë:hØuJ2§·ª³ý‹c R5.Vp£Ÿ1=wåeÌ îK1eæèÔ¢ÙÊ­­ #wð„IÅ¥ýe§W‡™çmÛF¤(µÀ4h”V±«É쾚ܶ܉Qß\#D!6µõ ðÉ(I„mÓ9²Ðßß¹j¡Ú›Í¹›-o:±gï7âAúÛ?~#Ùç®S«€øã‘‹ôûxy€žïM¹“˜á®“}Û#,ƒw_¿ú+kseÊ~p¹›"æašŸ8LEi¶½r›ç!?3ƒ’ÉFLN¡(ì O3ЌϽå'R¾ôÖ!†ËP@‡j¬}1°‰áŒy9¾Ù¯„@Gða×®p$©I8ÍS8¿_O¼í§™Z‘·Ü“žx…c(u˜YÜë§­óÙwï¹L8=Ä\“™•3Å)Áô ’é!a7ÉU`iõfÿOU[ñ/ËWÛuü){ËÖÊ.ˆ*½°5\ÚVð'× Õýò{Ÿ·­©X6·HÕC 4Ú¶„ ž‚Ž|ˆÓ¸([–8ð­¯_˜YÌÒOÛc¸ô(wç´÷ªàÏ”³jÓ—|Ô ’¸ÃãŠø µ'ILD~ãh…Ñ9‹ÅO¢&Ê/šÔÉoÆtÐ!FÂ3P>öÛ©(»´—öWéNœÌåùÓÀaЬZŸ“»]Ú'Lç¼V7ü§•ê »>Rà ¥b¢@(ÕtƯ뢃ñx:[‚C ÛXѲê>ÓžðpÎèrxÃÔÖ¢ˆÄ¢‰[Õ½_[«¿±v~ô¢ŽSèÐkÞß•eèVÙh¼ö;¿hbÖ%VåH"ÕǼd=o×fÈ•·8 áU}Œ:ˈ1IðÃÜû)Ü08¨™àm¨å¯9Njü’4ÑP|z€ÛÓ°í§o(þ0›Oqƒî8¶Ð¸ä$»`;8•wêaEt+íkà#Ólz³ý*‘³Ü¿O¨(ŽŒ+.[p•P÷¬*Ñ÷g–‡Òx=)ÔCÃ]KI±Æ7™ð«(pD}lî6˜‚¨sÌÅm×Çs:üTˆus˜Ì—WȾªìŠPê–Ù”!üóчL€w’|êyÄÚj‘GŸ×O;Eá—±:ÚØp¿†0ü 0˜zþÂxÞ®Bùìã|ræÅ(3œœšp'vÈ­'ƒ s‘*!µ’¯m3dÓ°¤êšq¥=-:xžs𹺮 ¶È<–0f;—îZÁ"¾™æ1u[|>Û¦ŒÎÃäf¿y`ÌBQãÈ›TÀ~Á{E[‘‰þNK2³œÿGÍ•ïণ?ô`"qÕ˜³N*Ÿç{Á ëao¶^íØB¹žùGú|~[KÅì`p„¤8 ½×Ó(¹@‰«õ—wYçá(SXã#+f´ö$nºQãú£ý´”q=.8:nžÎct$`GŽiÍyr®£ƒ ·"P4øñ[ºµô+%±w6ÁWÅSýÙzÉü%oÒl¶]_ã>?ŒŽ·'oÔfzö Eg)Ê[b h“Om6”º Í%²luÍMÓg ŠÖ[ LôÒx È€l‚®# –¥Ïxð‹3ó{ZolǘIúÌa‰ýÆeVGe]w]‹so©ŸÌC 1 ¨\¥Ò÷w'¦DM>YÖ¿ú>Ž_‰¸äHlçäÕDæÛs?æ¬K*Ê«P‘]˜q-ß ¾ 1/wy£G4MŠQK_*èèÉò%t“™†Æ¨ÒOa2ð¥Φ° Óè]?FaŠ91‘2íÃýäÖýB@F²õòê­8Ô¯’óÅB,aj?0s¬*²Ó¶[­!Ý5h.Ù…Û1FW×Nû Œl[;¡²ä "•I@¿F’¸u{‡I¥—a8º„†Ç°Ä¡P=¥_›ª€Ç€ Õó‡)Ù™¥iÚ×ärCC)ZyÁŒ¶•­žXË×PU¬°NË#€û¤š!åŽWheßé@¤YÜÏcábçåà*üþíõY„õAÿ‚û*‡rb’º‘¨û7‹S­'$6–äÚ†}ЙF°}÷ê®I••›ûÓ/#t‰ÀÙî®haT´‹’9¹0 (Üw’#è·ÑN÷g}Ѥl&C-†¦f׉>{©ÂÓ !EœuqA4xíû„šO9,ñpâeðð¥Çé1£oÖ,™ ô »ñ\?"ëÔñÆÐð`H±ì[^&»3U¥Q–ô!寰HW8´H: œK'ú}{ü›qbâC#™+~¼Z/MO‹†y]Ãe’üTÍø€H€ûÿëÜ‚§ ûíËH„/²` l[‹CUà˜Hrò¥ «Ó–¦q-p::¶Îwö䦢Š)æ·MûøÃt¬Ù+›Q¨ |e¿jpŠ1zÈÁˆ®#óÏî¥zx NÀ‹çÒö´lI,@ËÞk5á¦cɺzöqJ. —Åõ£Á¶’Éæø8Íáì^÷Ÿ0¥ |xM>O3 ½üRO-þi${R·zý» 8}Õ›jØ×†‚Ä®·/ËHcÉ>¶@ 1¢²»Œ¬Øis–K2X滎rÄ‘nöZßOtÜ2½%E=µÖ ¢zv`£©’ ÈOO»£ ë¢Ó4¨5ü5·¦Ã‰±¦ö Ø–_…Ń…%rŸZœÅ€änÓ¼%ïÍ*ëP…®~­e„_ÿÛ’ÀÉö¸Ç²Rã¶X¥]gì&WZøà«1ÑužóÒZr¬Í¢¢ß7­õ—ëšÑ¤3ñlžcÕ&ŸÛ@ ¸Ž6,¯‚Ö^,óïïÛÕwËü¦Ð”×&Ô¾ž,ã|ŒB®“R.Yî³^ˆ‰ç)»åAêIûžIÔ£å†x:ydXI¾ÒfgAúÅ i- ù|í+VÒ5V[_Qíðêg¯~O‰>ˆ–öÜM¹búåo• #áûñ±ä}á“H·MQxÎM»|«‚zŸ22ZÑØïâTç ~?$_'©û4‘ŽÔÞM–A‰¦ÀÏ÷»K\èyO1€¹ÓÉ»-ÑP“9›a{æà)ú2U±W]²fë±ÅÚÎöÜÒz¶\›¸MãþY¨àH/p^Ú§žâ°01~•Ìp^ìzð’Rxþœ?Rü¡¤ÂPûêG•UáÙ¬r³åâ"d+öä7(4ÿtŒ“$R£ç¯XÅõS¬–r¸É[ç{Z2_:®Ö³ “¼G>¢+£ˆ}(É<·ï‚mª¤•T‰;ÜfÀV0C¿F£:ÿÃA0>‘˜Š7‹Üñ¡=€— /ĬçÇÕ‘¹r± ÎØ("±l&j^ñ´Ä©¶áÒÏÖS²=‘#Ái»%ЂAyVyÕl÷~Mw*,– ³Ø<½óòyhu½/âázA@ŸG.¼.ËÕÁlµ 7«äýdOÚ’†ßQœâçS›¡î‡q„¦ÅQ:10†ô©#Ð…í Ä¡Äñ×¥S]h:éC&ŒbàDĵÂè&T£2ì($™ò×ÁÓÅ“óš/ÓTc?‰ØB(ïýþXÇ4¡$xÄÀY·rÞP2UÅ+45t£í>ó¥`ÁðŒÿàÅ“¥û¤¯Ž5ì» Oç 2«,L`ïöýƾL;J&Ñ´Ï­É#}^¥¥†É€­ÐÍz$òxób¿n¹»VnÏâh4¶ È—Q 9¯çÖ­×飳Ïê†P×y;ÍĪüò˜ž–ø”šY¾8O¹ú•ôê†Ç>À÷G9JA¹ßMîŽoÍëÚ5,k€XÜ#¨­÷F(—ËE*zfnE”t[ Êó/à¯41+z ²ˆÒj£Xy´ˆïÕØò:Ì$‹T¬Üˆiâ‚<{ˆm‚Áèñ±)ð²1ÒC4Y¬ºó!l¬s…B±±IJ*­O+Š}QJ{wú—;I?Öš'ù/S™õC©zúZŠ=‘Ö¶ƒ®·Ÿù\ä´*óÄ$IÑ’dqvæ#>Èí–[ö~I}¢zìNCq¾öYK×:ߘ@ÿ’ŒûY‰UAA{f¥Í¼ y¤èü‘´€¨<Öè€íSÙ<~‹@Û|¡O£Y¿ý Ö¢äÀAäh|QÞ– Š\r ôƒËć¤þ„¦Ÿäæ$7;=dÛÝ&u—ŒÇ÷†T¹8Crí î¬"ú_¤Ú£;ÃTð§ærл¡ëmgž:Å û9Û£l)¦¨íoÞd«6B9> j~XòljÁC^ˆ±"ÊÙ÷qNR¸½„šÌH¢¯f=º ëií Þ¡O]žÿq.Ux #5Š QÌÍyÀ-N& Ëu8û=ù!_ˆ_oÚô;‹8Í“øðÍKøçd^’úþÚu"IüÁ¯=¼z%ù"`Y0—|G/˜ˆó6U÷ÖˆêË¥)¯ùx(Kbi‰Úl ”²kj§¬Ž¥ïçðLµÓÈ*\Ò² ÿÙ—¶þ†Œ¢ºc¦š7>"<å8Y0ºå‚áyqÀW4?Z-‹i[ÝSN(UÓ+B¾¤\ÿ{T’Õ>õN)Dè¶Ø›`¸¡í¬ H²1x†þk¶9ðCÑ8‰1Ä oÇAJÑí‡ ¢]Ѷ}ô TT1R¹ÛD†ŸÙ ý_·‘0åó¾ôÈìŸ5O§[o^LOÈ;H(tj ÃÑ}ÈîtÉÍ´2b£È ,ÔÕ›²üøPà¯ÃÆáø¸ËB±ÌjT56ÔV›Çùì,@ºžðt"ѳ lŽç.ßuµ×GNf’ô§šÌ‚܆Cè|¥™Qy!·aɪqÜaÛú” ]ÆOß:áðk á:¶¨žè8ÚÃjÚæJÎ÷E|Áá+(yÔð´2C·–¡ðl\Ìí±P™*ÏÕ¼vƦÉK÷’h‹­TP‘BîùfrÐã_²Ë~Ÿ¢ŽìùÇDiËÂ)€&à!EM.ݬ½?šžþŽ0#ijHBëðpÞÕâç)Z,Û Çz’÷¶ð4ÑRŒÑöcÀ—Ú­=xüŸò§7ân6E¿rVÎÚÅÑXC¯£ú-®ˆ… !ˆêNÆû‰qàÙj²³]iiC Ëz*dá¼>†—¡/µ0\(tTB98¾ ô½õÈ£zöa?¢·ÀôU˜1"Õ'zIú€XF¬i5`¾šòP¶ÕbeJèjmß?Þ5óÜÔ¾—ÂdPz½•ß³«ÉÉöSÉ=ÎJˆ!/å5“}!UPïÓ°žD¶Óðòo­¢ ÅKb©-±cžÓ°…ñ \“—®UÖó„I` u‹PÅõXƒÓOÈì·,ðì óÛÏl,¦‰V±[â 1U¢«šs¥¶…¦¾®ÀS¨ßËežÇ§I¥÷˜›ºÇÎg«…¶×’ÕfÝn¯œï'ñV²‚ÿ¶[°[±Üû§Çª”¯¼‘%£bø¹ LÿÕ¹4wk5,êùrˆ®dbb!$ûEñ¬‡ÄŽg©€Èþ„ý,° Fð\¶Èùm‹Ø=z6)A[ìM˜‚!nI¦‡¹1y~QŠý’PãdA¦Xiž¾_v“x_u¾C³°çò;R¾!Â×R=Æ2Üœr‘Ez+ÿ—LöŒƒÎ^kFê'5­žM1@¬Ãzû×X7eÝ®Õ?”q`®óî»ãHJ#þßÚsFCaw{ê•Ó lmçåÕ$!]Ô³ìœñ‘c6‰41ÍCü©Û[ÿ›\ìW›ð¡`Ài)0ÖðhÈûÛ½Ÿ’Äüj'”÷ V“JôÍ -C*¸‚êÙ$<ß&vðM'V÷s†|FÞÌw+„âÄpž*ý¾‡$Í™L(ª|hìúDÄêš&ÕV @îwIÇÌM¸óŠkEfväØg—Æ^jÞäÈ’•ÈW¯G2MRZzˆyI‚M6©æE/wÿ­Pv\ á´x>E4¶ß:,9“–‹z8g¤‚Gã‡)5„}cNN '÷¼ÖàSs|QÆÁ(X:Ú.r²ƒS¢>íq*r§/„nãþ:¤ i¯PLØ@îW÷LàFos`D×2ó½†KæH Ì’AÅDöQºî/ŒrDJ_dU£‡˜ž×2=,ž­ K}úWØÁ±µñèX~1å˜ì <Î[•Êt“E9¢øyM‡ÎÜv‰„¹ü‚-R²þË‚I+9¦…c©÷ îËõôÓkÖ0ÍS‰«èñ ‡ ?;rñQﲺy5ka†¾,ªêùœŽŸîNQW«!Ëiª\¼ñÚ=²ÒÌV@›JÂÔ µ\WWA³…ëÅÙgq’ÿyQëµ)þ•)jczP¾˜²ŠZüÇvç‘Ítõ[CÐ‚ï‚ ß—"¨éjùºGĺF»¢¾î²]Ö ¿Ì´¥,4}ùëaGâWq!õÍaZ°/Ä~ì;tLýÜXCµý?|Ýë;‚. (­Í„Jë:QÚûŸ :”Üeê[è,ó>Ê=ÿpޝˆCKÆ4êúŠlQ›’uÍt¨ØÉNioÛÑZ6F:ð]W–]$h—òj¯›¯ùzÙ$m¤lT.ªÝ0š7TÿÀ×åªü .îqè1Q–ŽÛ>6™eO4fÿ’ئ{Yå\JŸ-á)uæMœô8ÊxØŽIg&±°cüca¯qBβ6¥þk}¦Úf·šß¸«Ö&ÿmj›R½¿Î9'…)c®ÃbŒ“Rï«|‹ {mÍ-T+Å›¹”ÇDØåŽHèÕ7ŸU{yx¶ûˆ|›(¹å»,Öyð_SµÙ ncáÈ’YU3Q¢»¬^´¼bŽ­i.Ý .Z'zx¾$‚åû5Gñ腀ʚŠ<·Œ™Z‘Dq/Å"àéÄ97µð×#e1ú%D[f>}sá‡/þÙwvkXÕ@lAB×¾ÌÍÌE÷¹Õ]ÕµBÄ‚I[€¶Ô%i_¡í‰×™nõxÉ‹NZsãaâtÜñL.Æ‘–ÞRê!&Ü-˜âd ˜­0øE¿QC¨eÿCó)ÒóÛ ìòNžc{®ìÑcÓŒ¹^9¬;(¬9-‘›/gÂöy¿Œ˜ô#Üâñ›Jv…'m:•âx;Iãû$ÚÄÕOž&(ãà‰-“(ö3¨–¿r'îàø諼GÏÔV( JÚ^k“?AKvtöŠØ›yxsQ|Ò™LM¦Øƒ’ʵ\kíÌ$€èeª£æþQ2æói³€5èCy3¶#œñøqï„M?Ûñ"›^¯E3Òò›Xíe§%­nÜîXÔØH“¸¥ñtÍm¨ÐÔÂq`,¯ ,yάmp}öÉL÷üư-]ei*ËýBç‹/š*]ʹ8ØUÚÂO%ç …ü»ËM£Xÿñï@Z¹ðé5³ß#k!S®Ø_`KK:ѯÆ*Ñ‘· ዌlGuB8gÄM„~{è<ÄsÁa¦TŠÕ± þI! âªnl®ä…™&æ>;¦à%¬¡@XÂÀkègŸèá[G‘îJÚ¥èIèI•5„G²äÿ¶Õ*°Š4 ,"J¿VÝðÔ†÷EF2dçÍy^§ÿ”«P8…hÿëp7`: <FHÂôZxdõgáø+›®$ƒIB{E1¾{0xT*üŽ W9øŽTó„–„hJ'Ûg=2È"AÑØFUÉ[fg@qðA qîÛ a•q\~ì6“KÈÇèþôÏ®Õ'‹ÖU}`ü*2­ÖOe×-$bdd~xÉE ês”z²äPbú”– ¸44DY`öPÆ:õw{•!0Ö)jöêõµråL:ªÌ¨È{hðUÐ0´.NbËgbx®;‹Þ›§4%挆ã&?žÕ/ˆZJ:M7P™«»Zh2ØÜ9Ö°ý`ö².{E‹ú¿Ýîö?qì5~lñµ·¥†º^2›ÕXΜÑ/»R&·Ñf}å¿¥Bd"‰ `Uoî’^ˆ§|ƒvãÿI%”< ·ú‰jÿÅ—µêRç©úJ •ŒEwĊ2…#8z/’ŠùíõC u»¤Ê•ÌŠô-ÖØ7J${âî¡Áømá†û>Dž\xLõD…Þ±kÌÕiYoEOí†ÍnC[¿W´ÜÛvR+S»!˜Õ'è/h1n*øÌép¦´ˆÄCܦÙ¸›¨‡†#z‚ÝXºmé…K…ê´à%Q͇͎䳹(QgX²‘ÁDt¸c_ŽôÐ 8ú¶44LÏ ‡€\ùƒØIÓÛ†V!['ã4…dk>É»êEݯ`ˆÀXŠû´“ëäÏÈú0ž¤¿vÁÓ3F?ü^QV›/Ñ£xÒΟ(/5@e«“¦9éò¯¥dÑHfý Ú&O6qéÎD8Ç…lvâ®=Þ?툩‰D÷eGÓã¸O v‹ÕªqvÔÀÅ“¦7t}øo·üô¼ŒÚ1™ÞVö´û¸6`Ò¥ŸÁ;¨Ú¯:´ 6ËÈŠ¼ð±3g\=íæi]tý~ŒËêéM™€d i¡JNß%^fÚâ]µ"¶pÇŒmÃ]ÜIÚù6RÖlÁm`Ÿ©hlbº±²D®Ž;^Çç#f»ÿ¯]ÍlFÆêÊT`ls$ÂÒÄ®ÄaŠf»·¦™‹eŸ‰‚$iS•¢Â×…ìæ 9Ö=4$$ÔLm÷‚Y'+Ä ¾ÜéGÒ˜øÊ;£øJCaÅÝvºÐà.¾9¸Í6åÙÈëÚ_G¾›m²÷ͺ‚ê’u!ЛjL÷-nÌN­¹æî3Æb,_‰^ |&ÊêPµ@!Z¯ }ÃÇPDñCןbÐòLEÚˆŸ™‡HNz2i¸B(®‰ËÅP 9içÕ¾xN|J&ºõj†e©Â:ä?³ý‘è%«t`i¼GE¸“»±À4:|®ºØˆ”AÒ_Yú#ˆÏÜK«–’]ÙQÙ~Üx¿yÚ±Øå¶0š(TùÕÉ%»8Ê»ÔeÜ Ð%h«”X´ÁfÙŠÚpyÁøso\OA$6sÁpåÐu_¼0[“¦r&?œÏÌNªº¦VÕ8f×íÜ}!U‰/Ã|JÉl¨{àå#q–ž„be¶)Ùy,óØÚód3¬:`Ô çj‚*¥Ç8‡:ëÔýÛ½#ÃDžÃ_£ ŠoƒØ‡T¿¾|ÄV :«­Ët­tÿŠƒN+ùgý²Ç™îY}º݉«±‰[l\ÇðDm »¯üŽP,Çùøœ3‰¿Öˆæ{)ëÈ£!Ñ3Ö7á¡·ë;ï°&ôb’ânð¸a‰®æä¾BîO™ÕZ—EM”|ÙüØZØÂnK3€A`FV9¹®k¯ÝÊ휀>„¢LT‚ë]Nè/‹>\áæ:?;OJí2þ¸Ïa¥ì%:¸ÓÃ)Ž/ªC²TЬܸ•Ý}Ž·ug™^ X[šxœ¦±Â*fcټ£oû³¸¡†Ÿ„µ>TóoŸhW¯:ÙàqnOÏ|ÔøâˆQk 8Ms`i\ø£«ºL4ö6Q«¾&ê×u§—A;¸E¾ÜÙá”Éáú{ì7É í•þµ¡L@˜QÏ÷[Ç ÄØ ÝåXmì}XÜû°òPõéTÉÄf»Û[8UX(aÜz8ß :¢o.Ð tÎb̺z³ØI{T1°{K ÛšåczÁˆœÛŒk;r˜‘b}hv@CQˆ@׸œ?àÛNßSøån%éu¦àúœH^rë:¯‚EUqR0+º1æþ˜4q„À1ò¾Š¦!žcZ ¥—Æ+Q×9GÐnÜâ&÷c&‹ƒÍ>Šõ Si…§`X v>T j¬ÑSÎ~6¬B4…¶”ºò®Ô­Âdä®áÄ!ï_5vÁ„BÔt*¦“zºŸäsÄx¼¤Õˆ‰’3Jbrß ‚û ©Ñ¡–µ,|Ö:]¨£%ºÕ àØ’¨µ“pÝ‹¨üˆk†*~jb‘îh ñ[Ú^¡Ö^,k[̹ðAÑ%nõ3â Pß–Ýà@ˆ+7La{r2eoóòÚÒJCÀ?¯ÿ91É$üyË#±eI•™ ò(©ÿV{=Jj’X#5ˆtÖ+±‘‡ºSz¹ÍXü2Æ÷6Z¿ÛŸ³¤#)0.¿®\êkNz{ÉÞ>54çN@pG6c)ÓA Fö¤@R`[™•èWÿÉž¼óZ·Þï3¼Xª ÷cù†ñKa !$pE`¼ ƒcª‡^(ó¥lSlrFÈV‘uå© §™˜Võ\¼çámEk-$- ­tÁQD‘d‡’aÅ÷IXØo‹ñ®¬)~õÇvŸeMµÑêìÜx;™¸A»XÖfw±ÓÏãÇ»×ÊFT¿î]fIÄ{ÅŸ½z)ºêÇsÍ*º¸[ˆ~p"ÔX‰¶Ó+p— j%fíA“£ÓgÓ½ü£ÜNÞ”ƒÕDÁÿHäÓñÇBZÐq¤rÏ?÷à²=¤na%"«ˆ+ÌÝ&{ö,aNYÓïH÷E)è™oµrӶηÂìôE¯qƒp‰è?,¥f…“_¼b`,˜9À¶å¹Kµc7'ƒ3å}æ ÅztÑ–ö$Œ[cUêx5f~‰˜“dšÿŠÐ¤°àZü‡])´n'ÍMjJ6[éÈ`ò•ç¯yPÕntXKV\›$ÎU?h’±L ±×wOÛ³]‡ÕŒ·†5x° ÷H^üBK[å'Ï/ˆÍ‡dý¥µ7íLJP–ì]£´Ü=aA´ìÆ®QòÉXcXyPø|’/q›·j)&›ã-IÌXŸ Íúï]8ç[£˜Œ¹õûšÊv‹uF·WÇ•±÷#EÛ±Hó„CÂÕ8.ó–<Ø'Y7Á“cÉY£â¢­ Ë ”#ò:)t%K¼îDàDãyÇ.Õ6;áR‘kE¥T$®¶¡ð+û,áWr”Ö›Ý#…7[XBWHs¿Ó²¡3Ý#a¦ 4´P÷üEã)/Ú-à¡ïÐ~‰BPÀu¦q±Éz¾%uä„ëB›U`Å‘†òá:í:ÑŠ½{Ñ[ÿ‹ÇÒ+C …­°A‚ï¸lÖ†uKãÜ«äA|»¢¥²ÆÌUu”šK&„ƒÊꉮúà¥~<«¶Ù7è-äB=©Ú#T8Zí¯ZŒ/òvÎ^‚8­[NëY? ®ÂüŠîûc'cSxýeêºÚ>€‹8fpyµÙQR)£œ%Dr>ý­ \§ëþ²,Pt&嫯M¬¸²ïoqCð/X‰‡BsÃk;æ¿2¬³òµ÷jï³ÈJPIšdxw–¡ÝáV+ Ãê”§c`Ôr±Y0o_u½ §ÂjrÁjQ»÷Ew‚»Ez\Tc‘BK¨çtÈK;‘CÙ*³‰ <ƒM]}ÚÚz~7-̈p‚7}¹Â㵘1€[®“ Yªq²(¦’’ÇJÒWo|à7Jsé7u–þaÔ33 ’Fo•8\ý¨‡r7sY.›l½R–sp‹|™Á•Q€ë_1ÿxwð¤¨xFMŸ ¦wßòs :𙤥ß:d0&æmIŠŒ95¢‹k+jš‡þÁå[#[¢@çX…9»Oþ©ß|¶ëeì´ÇÓ¢ig“>Æo@ëZ –ŸØâXÄèDÖí¤÷ËãÎÄéP idh´B„´Žf¸ò gW Â⥹r3&Û4^ÃãIY¤”}Õüö³ëÅ>kr}+–Þ@Í€‹$ŠÑ×EG‰~}=ŸÔ5Qz=ñ´ƒ•,`:íúuÔµêÑOuÅHòÜÇ–ñáé=Û.¡€£D£$q§K¾bˆ´4lsµÃ û(¢Ò;NHk"ÉÊ- ·ìûæÃIJB žöCÞ£˜Û4O±6pÓP»i+ ªKÕeÏJªxb”ÏhHe8ßí =Ž—–s¯ZôÐ"¡VÍN¡ß½ð Œ”Ey¥ æIŽlþÙõ Q5ÃÑh0!jþ.û¢µËNá›{ýo.­ž£Ìn™R…\×.LWóéÌbøZÇ8ä·{ü„,EmWÉ3Ü÷,%"y@Ðor-’:›ýFdÿ5ÕáØ’ÛH';Ê-[ìêØ.Ùïgƒý9Q;_á·„…®²'Q¶Kºéø·ò¨ë1ýħ¬]Ôã— 9Ÿ? …#]¯%ùtBVtXV¸Øý:»Îç[`¬Y»3NÐÜæC./—Ï|÷ÙH#øx»@\zò‰1ï0¦Éjø«‰Mì­l.·”ùÀ•…¦°ÀýmÛ£—TRÛcü‘›a"Ƥ°ÞJ8ÖÄï>wØ"]`ˆt«°Ò4Þ»ûGð3mªKÒèÆd~á[ÆT¡„ïOR>©ò«Ì~­Ac`?„; p®Y©7Ÿ{y‹9ë#BdvònE¬´[=„EÒ×Üe»"Ú)e—]ÒFBÉ1”½¨óÌS–á-Lʈڣž"Øià´÷\¤¹ƒh±<Ýô›Ì»v%¡×Ñ®ÔJ‰)¹0†{d¾šÂ*3‘Ó%PÃÖü,úüù ç ˜EJ«V Ï}Û›¸?ó#º\gÄB?Þ/(#ƒIʼnØ;=°„_~ýÁá4Y³µéRhfx)ßiÿT•D3™ñ›wÅ~\›£õö[ñæS ãVÙ¼ˆõ§¼ W6Œ½ùÐôåM8 ‚4uŒbGÊGƒm•q§òÑhñ—·ÍÐç˜udŠp+WTê¸8oÌ'ñI:³{”ó%üõøYíIºò_y´Oªë¾qM[Ÿ 5C~BgDÍåVÅ1Ž'–÷ÚŽ>mÌõ Â2vƬ›{>¶ï¦±W_š˜…nyA¥`åî_NŒ%4!ªðFóàê+|Ù_:¶&åtØ`ùøƒðÿ/ðÿ‰LmÆÎ®vÆÎ6ÿê#endstream endobj 21 0 obj << /Type /Font /Subtype /Type1 /Encoding 150 0 R /FirstChar 34 /LastChar 125 /Widths 167 0 R /BaseFont /ARMOWG+CMTT10 /FontDescriptor 19 0 R >> endobj 19 0 obj << /Ascent 611 /CapHeight 611 /Descent -222 /FontName /ARMOWG+CMTT10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-4 -235 731 800] /Flags 4 /CharSet (/quotedbl/numbersign/dollar/percent/ampersand/quoteright/parenleft/parenright/asterisk/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/less/equal/greater/question/at/A/B/C/D/E/F/G/H/I/K/L/M/N/O/P/R/S/T/U/W/X/Y/bracketleft/backslash/bracketright/underscore/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z/braceleft/braceright) /FontFile 20 0 R >> endobj 167 0 obj [525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 525 525 525 525 525 0 525 525 525 525 0 525 525 525 0 525 525 525 0 525 0 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 525 0 525 ] endobj 17 0 obj << /Length1 757 /Length2 1050 /Length3 532 /Length 1606 /Filter /FlateDecode >> stream xÚíR{XLi.5ËŽ•¡_¨E5Ít™é"ÌLF¡;Û(Åiæ›:™9g:sfš®¬aó¤%j»2­K6ë)[¡Ü“ºèFŃäÑ áA¨=eí>›?wÿÚgÏ÷ÏùýÞ÷{¿÷{¿Ÿ…¹o€ WŒ‡AŽ‘6,Ëð½ü‹Á¤[Xð ˆ(޹#$t,ggà*ðØ.öÎ. ðqy †G`þ0‰¸2H "^e”†‘‚\„B2†¸R)ðÞ¡þP 3è,£"„Áp£ÛûñÄ$8à|l‹•òO  ʘG™œ(‹b“Æ1”Ðm½qê,H9ù7L(¥RoD6,OeôŠÈPiÌ8.“+IH/\ l45~´æŨR6õ$)*âbáR˜[¨B€ª¡Ø%E@‚Hp¤1ñhTl#lý…kÖ,X¼æä‹ ¹*Fþ§è0w¤fýUSÙ¨3L&‹"RëÓ_Ȩ£–b"\ŒbÔ88²BH š ªrq,€bb¨PMùµe`8ImT$ @‚ôáÇtp¶8‡›ôÏïÀãáê8{6°±s¤T™&à82þN\¡QJèé™L&Çùã5DJ‚€924T>Ÿj J¥ ¡Šè·›p‘ë–ÈÌ’ï&.ÕÖÐèòÂKS½‹Ïߪ¯iÙ¥+=tmEÔ‚»EÂc9“ :i³¢ßÏP$—ÇûÝ<ý.*5«q°Sµ¾3'öÔ aŽWÌ#ùìךî‰gJ^ö8êúÔß­>š¾&¿2÷Ù•î<ßyî«m3×¹¬:yaÏ6G(È‘®NÚZdioîo˜ut›CR{´aúnýöMbdÒ¸2«Öçx¹rÒ€vÜ´Áµ/ŸÔ/ žº·‘‚ÝllŽh’I#í)V³R´;öœ:ý~ p¯íâZûËÔ,¬ÁmoÂ^Z6gwãµû&ñ's›Û¶VçE[wÌ>cFh áÇá.ôˆ¦Ç¬`Ѭ}7•ß7ÕÐ'¥4V=j.Xt4ñô­ ãºs5ËebU··‹lðîœC|ÛY†^ó·±SK&·N¼¼î –ÅøJðÓ}ɱ/ã…C}—¿Ð-sõ¡¿onM.žfÏ2 ˜¹Ö=¿zEÐ@“õã:|Ó“C»¦´ÛOì»aë“YW'ÜpZo·¸^úµ«¾É¶«ÉæP¨Ž »K —¸Í=“i´À³ŒwaSG½ð·†æµj›Ô0ÖTÍxmö˜âÊþþv]¾ëyöù„еC½~hy­›GÑ3aaXKxJ˜¬JûÂßÈ:ûtÆ¢·ë’ëÌÊNÜò3§Oë¸XÔ²¯„K¤…,Ú¬}}—Œü2"I§§‹ûxÖ2oš½ 4þ\õ«UoÖŠBöÓ\@n§ÕÆup—‹2ý,ꉖŪNá7l攳þ2á8Ee¾•|`×̪2”öÜepu÷ūͣ¤´²ëó7üp¿­f’ï‡Àj½µ‰w\uv÷¦OàX•ƨôþòÔ–÷ùÇy›ËŸ[ºt?‘x¾+Õtl,m¿|?“¿¥zÝa~šOaN,¿¡‹3½‚룂¬ÉÖ_Z/±;;è”ùkŠñ7‘LcË‹Çû•Ø ãhë=ÀÔóämÇ#–qúfø4MÉñü;—_û&Èí Äôc“òóŸTÔp÷ê6wÚVôòAZÁÍÛ‡*ªv wLy+¡Þõé[_‡ZtÙ#å9Èu/>ÔT)3¶8Þêº<~³²¸]ïÙãòhQݾ1ã®Ôî÷ËÛæR#`˜ª.ýh?]|â‡Ð£Äâ¬ÝÏÇ)w{òðm†J'mîʶN“l?·M´PUÀÛ<Ð}í“·ôJƒëñÇïâê>Tµ¬|Ýdo}¨´í§Ïi nD~›t§5U6EÓÓshSvPNœBúËBþýÒ¡sw†„¤ösYMÑî |´Ú(·öîZuMâÝ€9äPdd¦ž$èÏ¡ec¾ST÷ oÓQl‘Ö`~ÙNÛ\½‰néG¯¿éf_œÝóõÃ3>÷Š’V•šîLºÙD‹.íÍ1ùyðó~ôÿþ")D—!ÄúïŠha^endstream endobj 18 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 49 /LastChar 49 /Widths 168 0 R /BaseFont /RXYYGF+CMR8 /FontDescriptor 16 0 R >> endobj 16 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /RXYYGF+CMR8 /ItalicAngle 0 /StemV 76 /XHeight 431 /FontBBox [-36 -250 1070 750] /Flags 4 /CharSet (/one) /FontFile 17 0 R >> endobj 168 0 obj [531 ] endobj 14 0 obj << /Length1 2119 /Length2 15718 /Length3 532 /Length 16882 /Filter /FlateDecode >> stream xÚ¬µst_ß¶¸¤±m|bÛhl[mÛllÛv£qÒØ¶m³o¾çÜ{Úsÿ¾#yæškÏgÏ…MJ(¯D+`dk`,jkãDËHÇÈ’Qdd0Ò10B“’ 9ë;™ÛÚë;s99™¢ÆŸÿ|þr±²p±2A“„líÜÌMÍœB”ÿ$±¬Ì õm2úNfÆÖŸÏ0Ô·(Ùš;¹Ó¬¬ŠÿÌp(;;¸ÑA32ŒÌ Ʀæ6Ðôÿ(IؘØØÿ6r¶ûß!cÇO)Å¿4)Ÿ’F¶6Vî#chzYÛÏjÆŸ.ÿhý߇‹:[YÉê[ÿóøõÿ ë[›[¹ÿO‚­µ³“±@ÆÖÈØÁæÿ¦ªÿÛMÆØÈÜÙúÿŽJ8é[™ ؘZþ2w5w36’7w24˜è[9ÿ+nlcô%>;÷/zMQQeY)ê¯é¿ÆäõÍmœ”ÝíþóÔ’ÿÅŒø³;æn€o ŸíeüLüüùßÿ´ÿO-C[#sS+@ßÁAßús÷|+À“`ncdì0vû¦§³±uúœøì‰7ÀÄÖúŸý\sz“ÅþLŸhþ™?Ñê²ü“ü×0'€^ßð³Åÿ‰0Nø¬f¥oý'ô9ÉÞÙÖÉØÈÀêß»á?#lz#[++}‡?!v½±ƒ¡±Í_iœÿó€ÿžÍÂð™ªï`lcelòW”ñ¢ÿ'ùÓËÎÊÙñOàÓÊÐÖÚZÿO„@oængfló'Äö/s[£?¡OAG+}G³?½‡±ƒíŸÀ§¯­ÍŸž°~Š:¹þgýTt2s0þ+㟮Û:ÿië?}7wù+ãS×ñsGü‡?e]þrý\}zãÿzgÖOUó¿E8þyg+Û?“Ø>UŒíõÿ,1ó?Í6vüçÎùü¬®ÿçÁlŸÅþÐgaÁ?ôYTè}VþCŸù±¶Eô}šˆý¡Ï†ˆÿ¡O'‰?ô)#ù‡>]¤þЧ‹ôút‘ùCŸ.²èÓEî?Äñé"ÿ‡>«+þ¡ÏêJ賺òú¬®ò‡>ë©ý¡Ïzê賞ƈóóm ô -þk÷~Þîÿ9+ÿ=ÀüŸ ÿ½±9ÿÙÇæ†ÎÖ&VÆöÇçUKÿgks~ªü¡OÃ?g˜áóÝþ¶Ä_øÏÖü ?=LÿÂÏêfág;þº>WÃâ/üt²ü ?¥þºZ>­þ\ŒŸ×%½Í_øieû~ZÙý…ÿlÚ¿ðÓÊá/üç¬ü…ŸVNá§•ó_øiåò~Z¹þu;~Z¹ý…ŸVîá§•Ç¿ðÿý ÚºyÒ2}žýÏ? ÿtÀÉÆéýß™*6柇OBøóÎ```ÿ\ô¢†ÎŸ÷™Ó¿¾ÁŸßšÿeóÏ/“±±›±!ôò‚­!wEJÓ÷2‘‚©r0*`AÓæXÙݳ0KqÀVÅ#RöTõê/é(ð`®o8Žá^ 㢗þö±©ó.zé­8ê7é2îûvD§íMswg¬Àr3£e‰…YWƒ§yòÂʇk„@=ß\z2‚ØØÕEÓ­TB‚ëɘ SíËBYBÖ]ãA×'},B [¨W¯m;œ‘_ s>´Ñb ;˜w¨PùÎJ Cê~÷ÿªáϘ*9ÀV G$³Q¾×dy`‹èN_aLˆ„ʸ\Ò´v¨¾“²ioïé2SëšJ.1\ÅØVF‘?Cz|œ’Ÿ8ó;¤|I¶ü.½œò¢Tµ(5ÁáZ-ˆ14Ò3¦P=áï2U°| ‰ìø{:ó§k x;B›ï"¾XR¾ùÈÀ ôòÈgcd7âKKõ+b8ÐãGó_o F»ÓÕliiÊÏF*"ɼÍÈ(ƒxu‘"¯#Ù‚nð+–T)5 äûøïù'ºM°šàH ñåeCS}‡õÔWùnÏðõ ¼^VÜÅå ½*¤²ƒ·vÄÓƒû£TîœsìÕZù[}G¶zŠDEV¢ŠÕÜ$É¥Z†PÓWM ß`…[4· Ó:ø[MŒ¡hŽÐà =7!Ô"p”}^‰tzâ9PBÑ«±ÚÝ–3¢XÍ" õ¬¸¥Ú !•=yßÿUBaó›3(S>Ã{A£³&Gãa UE1x.vÚÛf–}Ëê]’|ÛIæu«W×ÐX²DôXB6b“±÷1q±Æjˆª'*´8¸#ÅáîsŸ7fh}P¬°ìVÚÅ Ð^ä¸aèí÷åÒr?ð7cz%ë/ªdu¿¡Í™†ò­ µº-Ï…Èí(÷ÛÔZÂùIú˜,fnåÄÅ8BI«LÒ§1N¤%Ï„ù»¬ËÒ6Þ™ X“µ Ü "nÌÏ~yPãFVY¹5íë×B¤ü¤ajPâw~À9Ö˜~`åµ7ÍVô•±u•¢zú¸]ä¦Hû@plþ1‰VŒ"†_0”7îö•·@rbàœa!-l²³ÿ8ôݲ |”efâ-`øtn)–nÚ£¯ºrÔkˆ1 ܵܺy‹F!6&Ùܵ32 â½ónJ]XÖÛ;Î-ê$Íë'˜H,)–”gÁ8Ìò[1L:€×²‘lf¾‘ ;j&·NG©£ew ÑôüÌ:Mk­5#Q »Øíñ`j¼å»ð&â´0ÈéùoT)ÜŒZGwEƒ“Æ_%„½s¹°ˆf8e)pP×'r%N Úüm”¡•t_DÛÊ_Ütá9ÔÁDAUȹ¦“ÊÔFÙ¶¶ÂcA½î{Ü%•Üüú•TÎðüe͆ d&½qÉìÎ>hÔß3"Kð]×ô]* 8~¯ÌµõSyZh;{mÚÅ«7>‚ Mú+†<Ÿ¹§¶Ö`”®êÉ´Ô<è–}ßò=¿¬Ó.H POqžoRˆÝ¹$ˆÜ76áWýµhUà¯0²^U¤:Äë†léñx‚>ðPÑþâu6áª(¥OE×PÙhUèg*RF2·àW“¬ö`šþ× FŠY Ùq9¡‡êˆ&?û]tÛw"I¾uÁ8éõ1 rÙÞ6%7àZZ¥BRL°Ñw€\'û"¸B‹Å>Ã]f©n•XB|yS§88Zz³–;MFxµä°m= ´“‚~à㲋-]É3>ìø®‡ƒút|Z6ïV†‰3Q6ƒ¨–¥=i(’ x²Ð_l2¦¬*0Ê(ï›ÍÀ¯áÚ,¤ú‘ªi­Œ4j\x_:÷‹¦u‰BtL¶“„75{ÖÃÔŽpSô!ËëëËÍ5ìÄë6]3(àgl¿|Š2Ëñ 7 ‘M„AGqWBm;×½Žäz¼ë7Úë´&ÌZÚ&)Z}½Ÿ?…3Á<¿ÑÙ h{½j¥KÚ½R%#+V»¹é3ôš€ 'Í+q Ÿ¼:‰nìæ­J·VÒ©D£83[ïóF'—sxä¤Ür¥Î5=±wx¹L.æ”â|ã“!ÁÁ'K~êK2„j¼alÍ>VˆT|`Z‡x°ûjc¬³"Tø;)&îjjÔ!<«&·4lÇ`33½™ç¯J†Â­tý6¾¹‘)dT_z)a%½éR«¾×A okõ@ßmô„SQRBÙ2išy\7¬…šÐÍ(Ç–¼¯€…Au¸mQú¦`53±3à꜊þÍæ†A¦Sù øT쮾1Å­îÄ{›kS”“bu’†$$QÒ~b]vqvÉÕ)‹ÈЊ3¹@vk´Äî¡©Xe­5º”Øæö“7,…SÞuy­u*3OOpXÖF‚&YG6X°Rò¾ ¼éHr§q7âå8k‰·ëi[d*Ç…ÛE’4o Ü˺gÊá;¨Ö1L™™FTà¾ݲ•C!IP4!.Häáeí\É iíª‰X¨j›n|O­§êÍ™ôûí@>Qe©ú;Å39:ã ûòÇ8ð\Ñ(—™Àª9ïFèBÊ\¼Þcä¡DÑž$µ¼i:{ôf㟊ty&GWM ~hL_zW èÀHÌ'0³¿¼Pb'ãK.ƒ–>Ön…›nHÿÐó²A’™Z;vwÙÔ×åÉãëç`ú^˜ç8/Œ—É\à‡•ãxŒÐ‘ìã$ø.£ºé%G+A ü8a`)m…ŽÑr­.sôL?È!ow ÒE*Àà#[ ‚‰öKуy×?°S{ú~tÖÔ|;^ëU<ÃŹþí*âÆ'gÓ6厃Ä03Q »ˆhY ÈÊŠ\„ Ù(s}”š#׎«²„~PÞé±Ë7JoL9 %vzÐSûã—"[÷Û@8Õ¿k5æå”04/×i©˜IC•lý,¯Áý¨x ÙúkÒc~eØ—é<)ÃK½Çâè3ø€8b ‚ùéÛôhÉ«G°x &$¯ÿAí©Ä/O ¥F_~œ¹ïk«"â=Ðl×Ò9x#–6uaÏ*笑¡šgC±8ú@•ˆ,׳›(åwÀ8k«ìÇij˜-[†Lûv°OÁhƒúûí®‹mÒZ“àaH~Ý\Œüy8pWãSûãHÎÔÚpHåÇs*¨-›yertØŽu‰“ýÖíI™8©,ŒºAeø³–¤nÆ|ÚçýŒ§Á&Z*I{öpíG_3@×]#êg³ÀeTa ¸+÷Á ‹M—AŒ%_!`_Û+‰åš°ŸJªKi#èPî;ÏÈqd‘kÞݯóíóä ”tÃæÅè­'„rÀrÀ¬ð]ä¤ÞXÚ\èV¬€,khë_õzSó»vk‘~¿˜¸‡»1Âz'ÑÅñu oÖ90ß}—”¯ÖpyÓëq ~;†ú‰ëI<´z²iøÝ(—šåÝ*Pˆ˜nÖ_>0”Ù6ÅЕù4`áT̾²ëö,nÁ¾ )öèEvø4ñs£Ñ`lNø0áôºiTÅ—.Š6ÜZ†o:9†Ú±sL ëx†»³è ´È·$©™î^3w¹qv¤?Áyݧo9Öþ5è=[,Ãv†C¾»®õ$ßÏ`CôÂ'ˆí]wÐXèeÂ[ÙYÍûGHzZÇŠš8÷WèéGrgÇE,ò‘Û‘/ êðP6u+Îa¨y ƒG9›WÞY]o ÛD£ç‡±/o¹—Wš¼³hdoõOR9™_(}Wè¸V‘w¾Ifúk9ÿŠä°¡fÂñ } ¶z1sRÅo×Z@¹I·À¨LžHGRa<¢›qfô/©»®b‰¯wJ…& u4ŒOÎK33‰ÛmåÓ~A›ëàõhvõ–:Hß,Ëd[˜XÏNȬ×yóSËÈäµO2=ÝEx.u᎞<ÑœBQùÍ(A8{OqíÑ®EÓÞ¢…AîÀþ=x}éºs$^LqÙYácES磊4ÎA¢/ "Èzû¥‘Aí{òÛ(2>gb¹@§£Ù&¥În[(—Úœ¨Ôòà \Š—)»Y’W9=ˆŸSlµëžœ=Ð÷úT"¦]Æsl«›oçSøåìâ[VªŽÇ”^;W¨Ñ’?'”(‚$r«ämxüò mú[{‘‚¤˜)=aA êøŠ+ï¿üœP„œ÷‚˳×uì$¸”KÉgb€t ÷Pž]ìÁnèIÄ6k¸÷ šÓ~3a€ÝP.P˜?.3Jü=çæv€N'̪âǧƒj•£W:ºÎ_sdŠnT}¡p8#ï‡aA°èãÀGdÜp±êÖ3Û.¥òuËõ}ÒFê0XSØŽ<Ø—yt`ׇÏÆS_D¯±9ó@hYDi(ŒIÖ›½pl ŠËâm磭ϲCÜ^jïüõ;[!nûZ^A"#·lŽøæñ„.ȃÈô[Á͘ð‡u‘{‰TŒ¤ä}ñ\Ȱi5ßÑr2¦ùm.§S ÈÅX‰c2ÌÀ ¿Òyãtw×|Ëy1"ªð![3C[†bnóyÞ`}øSSºN±Y߈YBçO 7„”¡©0$H†ûõ=È'zV mÎû{1,~N{é…›ì„ͰsenN é„í‚Æß½®à6í#³œõf^à™ÓÖþ<ïU¥µ|ÛcMš€¦0ž FY^8”M´KÇü¾Š.Ó^,`]Üü@EŸÉ]úXßãá ÷Oæ"¹òsa¡eä ì˜)ù;<{vâû¼o”žøSå.x° &¬&lOô3{àŽ) KZ‰Dž† …‘® ©od:–¥¾CöÈð/( ]ÇM»-]C‹æ3mFT˜Êé®ü~hÆÊxJQ†r Йܓ»ƒPK˜ä6'§Ç›3°§Ù'áƒdH¿Ãà˜žÌþÊæw‹š¤‘˜“^jÆÐìÐéÏWš É‘§âQˆŠvk5Àƽ$Ÿ.@ýî:›%1Ɇûµ1þ´v­Ûþ6”ÊV¡Øá.ˆM~Ð \Æh¼hC%à%ެx‚>M--)‹{öL¾ÆYÕ×þC"ÒÙP·X‡Øn?u—“°ì~y6`¬á¼z¼AØÛ´€]²…¸œ3Ú’Œ)Iý¨p!Žjù‚>Þ^߮͛§‘*Bµ/ºCa™ìlyÓ8G~;•c ¥ÒÒz šDŽhð*†læ$qFY\Á—ŠgwêaBªA s‡Y]ÜIrÁŸ\ûA†%g¬nˆ•y W}‰’Ÿ›!ÇʆLØà[´¥‚6CìujÆ.XÒVÒŒQçÔfæ—úgbm‚g›g¿k>QõegÏ0÷3­çúM'·Qƒ6o=Æï”¶MÛ²€P–©SF6w ×áRï­/QWy‘Í­è!+p²uÇ¢=ô ã“áB#JÉ­ÎÆ ”^À2• ^í=àöcÛµ0kmˆq`}ÄÃÜ ¶“_àI±ka­p^G°Zï'-0‹æ1·é¹¹¸ðÒW_7;RqjìnŸ!P×ûÙ‰´ë?™w&n…¥”ÜN¾=ĻиHq¡ÀÛ8ïÃûXx=P]}wd,±í7=±ÈO×`0V>ñÙ=¯išXã¹ :h‡çipþ ãí¼>‘ÁäM˜¨A2ŠA¿+ϸ?Yã /Ø 1&FR|q& º<ï“·H#éc˜!veÎûƒp2sçµýÛÖC›F}*pœ|‹V¯snûzzÅ{ûdX6l0 ݬøOËxµ)À¼œÔ|ˆŒ‘XûóX÷³8*)æÓF4+: ¶1N-‚šÙXqEn\¶Cz!öùpƒ`Š`ñ k¹•O±C7’3B¯>ÅÑæ»òTò9¬×FÍÍ^ÿŒßLï1Ø7f;ù| "ÙN°ê§´{2\(eÛàqМÔEve ÅËãe.ùȺ ®¶je>¥AK+ê½5Ø:¦wV0sv‡Z]Ä·ŠðìÚ–Æè( #Œ:nwͲ5‡>×&æŒATê„Rß³š‚§KØœŠñœM-ÿä¯kº×QN‡žHZû«ƒâv~çƒ^¯s†¾&(¹P6 WÇ Ô‹ýW ñwcÉt©  õ†%ß3Û¤oÔ~ÂÛǶ$KŽ °¶(÷Y …­«ó]z’µå¹LqVâÆMM»ôú†þ>¡«­j¤×çoˆ<±o«¯+è_m0ìÉù!uŒüsÝ "æô„°þ;wóB¹§ß­hžÐ1­»©8ÌÌ⸛"vþ\Zº_¦ý01Ì«ài®ò‰Ø-·¯k¹$Ÿ¬Œ¹üž7qlZM~™íü¯ Uª%¢ÀßþvˆcÕ gcÙ¿£>p:¶“Ö}•b®´'ºÜ—QQðÞ¼ü3[zÎûB¿ ƒ–˜ëãÂã©èßÕBtüŒöy\X?«ŠÞèÖh¾….ª<;°ÑR8‰np\?°E`x6³kW¾ñÆîo[«¼HÊLÆè®ý‚ Cäõ›>wéLä®…ÕCœ&,,f>Ʊóë_€Éê.?l¢)=i8»lSîš,Ö^c,/-%°€Õ‰UM(È£±X!dq¼áx æ›Ö‹,¾3ÞÔ^'-”ô[u¶ 4 @»¼ÌaáHÿA ºæÆ?o-¬¬=Ìi‚Г¬)«²Þxãr²7{¶ûi@.Š=¾ª@¬ž” ñ*{¸Ì^¢pHy*βOÂbbï™MsÑÏdèEÃHJÒë‘æ;¯®–/ä4‚£dØS€RÒ Í\Qzq4#*Ó\]íUÛïÅ2¹$°¼(­ç”ࡪ½Ó;ƒàÒìÍé&e7e0g6ES5 áï;ÂþáÞfÞWñNKŠ}ÑIèd®¼ÙBÞs¶jðS %#j\YÀÙNUu*µ…¬±æ¨¥n8i'›qI¶­ÝCk~z*›5鵃ïTgó”ÁM=ͪ181uû‡0qjÎoÙÁùJÄýµÐßåÀ¿”Ä´Rk{üÍñÍÒ›Â+~*,7WOf%ñ?ô(|¾\Ö ‹:¥ÞÁ£N× #ÂÓ ©²ER –`…³šå7£»¡Ÿ¡À“Þík½Y_¨sß\rÖ„3eªN³ëª3G¢»rGÚuRdw:´Z+‘W9‡¹•¤Ì†Wò¹Þ+—\ }×÷s‰<ÇðsR„6™5RÅ·ÿ}¹¦…eS§›$'Ùîʼ=ÚfÔiÀöbaQ £2*µK=5Â6¶v•M!¨m…ì­2æ×EíÝn¾áÅíz\ê[Ç^Áýû4´>¯qÆIkÄlˆ–‘–:üÑ´ péØGvXlÕ‚,1?cãµ£2DÕÝÄaQ̸ $Á×2%+ÿûoâ]4(|H!ŽÔÎ Eõ³ÎÎhƒ¨ŽÐÔéìz9à†UÛõEë2 ¼HS”€¼·õ›zb‘ä·GŽ*îŠ}{û.  ç2È»fY0áç}±:œU-oðìTê‰-ù¶ý3ÅG•A‘¤€‘5j ŽñEÎ÷lŸAý‰ŽëIáàíz Zs=§»îjᇰ¼ ‡VQ±v¾¼5Ú IÎäÉmƒß¤ŽÓwoWYU‚{˜ŽÇþ«û.@ °™U‘ßÊT¾>ªFÝUOåŠùWYuÐ@uí_eßÕ37Ó-âÊ#L|È µNF)>XiUIˆÄ6ñ`mòœë8(áNú’zÇðµ:7›Åá-ÈëZŒPŸx&A­ÚuÒHÅ¡½‡üŽÞ¦mØ÷ˆžæÿnoÛ(*†c‡šy r^6•©{òHÒ+ôÑ“êªeñÔò2@½tž¥Ì±A³LH)\os[áH4Œ-gœîKÄ]xßø4:m´\*ömµzA½g\â¥û² ãš2s—ÜÍT°+?Ÿ0½.ņï‚é…ØqR§D#råþ0UУÍEMlVJÏëi_ê¡â×ÝΦE3+ÁQJzN¡’±ß$ìzW m´eÒ¦­aul:³¬x®8Œùá>J>X` zÖ/¾†ÉÍ¢:Hº-_ÁJKe²f.†ðÒK†M08¦¶¡Àí3 L2枸I@R&"ùƒN¿*r{x¨!(§Wx^:9 È3 ñÀÑÇtÍ•Q~Èn‡ìC±rQÉUŽÄ´CêýþÝõ2ì¾ÔZø÷k¤¨?°‚0öM(ßÛ³šBÂ}º¬pzÀXÝ%pèTªø™Ö–¼ûz…Á˜ûÁújD²ý[lþ†õªÇ˜ñQ(A¯gÄÕvl— t¶¯T…ª³ÈW²ÂíôH¢¥lÚ›@:²ÒrÛœ­Û”ëLÆ­dün4ˆu,çí³D´íâ­AvÏe€Â¢à±õ ºžKù—g1¦pÃniöå›[|1MÌÖPWÔa?rLø5„Öª/ÍXxF0‘ül-Ï~uN7ž#·8ýiþ˜c„MUá(÷ÃYâ }_žÕ·½pÆ‚QhÞÆi¿ŸètÐë´“Â%œ({ÁVä*´ Õ¹Ä/5º[¹&ºZ^ÕÌiUÙëúɰî´5F릢dèe¨æ9°Ã-}§‰mtkxà'íéoŒDÊâ1bûæëo>Ôš!¥Ä@ác•pX¤¹UŸ …N=dx„ÂW X"ü±À}¶k+^4ðâ?ícøb-–»Š·!_D—tËIœ°ÿSá6C²ˆÍk¨ú•)AÓÅmúƒÜ¶º­Ôç'Çå1¾Y¿»… ÃH_±þÔ%÷ÆÂÁŽbÈðÛ¼[µ‡ §Ö(¿ÑÒÚWy4Ѹ˜B0zp¶Ñ Wqï_Eå홨ö©Cs?„4‚ÞA×p·çÈžý5¨áª² . €´ßžIê8Où .’ĺç¤ÖÛbi̤•Q[`SB} §:B7µi}mCA¥¿ Ò‰ŒŒÿÚCã8¢w¶¼¡ˆÆÙ}mOS=ìêQHk‘iWYªá3îl@0ªÜwpeÀ @qP³œïNG,—\ÿ>¡ÁUÍîÖ_¬9‘XÉN߯áˆÇÕ;½$iH.çÝébKÝËÆãœR{Çg,É®54‹>2€{8½,Øè-èrtŒ#»oáyJSæïQÓú@Y¹ÌἪôv,ûgazÊ]A­ËA6×ãé¥Bf¸drôô|½—Eأ藤tPf›Q0GÛC½€Gsw Øì9ã"šqÆÁtIk,ô·fÓDìñdbj ,“Bï.ðMçL[±Ï@R»-ϱÅ£Z)Vš:þiüŠpf’´È´Cζð„Þïëß%ÃW\Ââ Jôvó¤9ç!¦‚ö¬fk@Ú§Zº‘žCïœÌ¤jïçôSnûCYϪ´¢1´FÒÏ P¦ÆæPÜۿ«³{¶ÝT=µÇlN2@z‹E#D.,#ç])Ü¥ú 2~ Iܦëò3hb™ô7~D¦´íßq4õG( B&›,zõ£¹~&V%Í`?c;xÄpl6°‡¹?ôÑu‘Þ°<^îüó¹/&xß»ôÆfû›‡Ã »Ø=â*ÿU,õ|Pzyv†¿J!þœu8µC·iü)β¡8Œj!4WưSØtu…Ýý<‘Àüi„ð±“9QW;œË³iyòeì¡¶ Œ:EP?º_ óÈäî$ÑôÍcÍDW„ÛP_ËwûÊ’Z§£öx:uû½±Ûº¶Öq«¤ñŸÏ ‰¾9µ°°¥ÒgVÌ7ËD—Ö Ù› vm=Ùœ.N/‰d{Âïû§E5tѺ¿ y9üÎF9&#¢€‘ëdÉn¢{PWùÕMQv·ÌéëhÙíRX”µîCs˜’>FDs‰-Øë¸T3–ûj1§ÃEE`C§wL–ð¥”뻟[[Hð &°‹¹‘è®?`å Y™~•¤—¿Q©Íîz>pCû“a>;ÅΟ„Ž™&¬È\9jÅcF^x(uõ»òz‚'‰uâ\ :Eúö´÷YRîÍ \LV¾8üY‡Ú¦ÔVJÁå=”m•Æá‚ï¼â›t§õ3ÑIä.›0À¬´ÏÓ‘¦¼!ú_J›@ô¿úúNJ)Ð'µd{D€RC¾\£¹é0¤¨f¨<¼Ò‘߬ÝÈÎß长sêŽIñ™•4ì,ïøºôë¾l ÇTèÖ`§Ü E-¶´±GÏ—ÒÅr€ù~Tb„¥ˆ‹,Jß›÷òk)³õfƒÄ`qÑnbŽ˜çjÒêÞ¢†%s[Ô˜^£K~ûZ ƒ_õ­®’ß1‰Ïlss‹ú}¥çí†Qq®”Yüû('õë”6çÇ•ØÌ]C¯rv.S„OsÏf¿Ï1}°x_³Í½ôÖ¹Ì#.¥.f94vô 4#¶†Ýù©B­äˆÜNô;›zG0A©ÈOøeÒt¸bm‘žz%fàU´Òö|—B8ZXòÚ÷¸Î¨«üÙ—ñEG?ê=9Ùì B0 ¼U“,Fνïl~û¤Û®¢f™féþ Ôy†9·y?Xý #tm©„1Aè"ÔˆŽ8é,OÀfjò$çEˆ,jÇH?ùQ5hû%°˜²`ŸFÌ@ÄoÃXöÀc²•¨qÕÈ¢A†ÑT¯)™EÔ ŠÃ‘õùOKÝ h?9ŽT+–@[迹mtÅ«øßºCƒlp¶9»0Þ?ÓQâ”*r‘©þ •0|ý¢Èþ o¿G˜ÚL©’Wbý£XÅØ¢Ô'*¼mB‹~Ka¿!„;á]n‡qJØWõ–2ÁjáõÖÚ%Ì+þ—­<ÐØÐ®o#âiHr|£ËÕ®H^.öfAxŠ¡\k6;ñGv’¦§ØPú|ß·ë!øM’ÌÓ\+‡“ôÀ7>2î œPÂw±*ï Bå…þB-„ßD» ¶ìÀA(¿6ÎæÔl4\Kõ„5ç¢8<<ÔHŸdçÖÎ+çMT¨›X³!™“×]0ÜãªØX£.‘ãfÚ{£zákük¤ž$ õþÁÊ+až>̬Îù­²ÙD×n)áàÍVqŒÆâ6ƒŽºÓh3¡¹°ÜN6óúý€´¿¯Wjn´`|²Û†³X1Dÿcf ZeÃ#óèã%%?·5âŠ6CPoÙ›ª>þ8‚5D¾ú¹c|©$0´ëØÁpYÝeUpÎÇ]Óˆ~z²ÀírÝ·¥—ŠÌäÇîüCyãŽ$õܳzT6ø®] '¥QkMèrÕRì³¹w:AÜ!à"â{Æ„MÝ*þ3¾c{m…»ËšcÁZއ³´9¿³ãivî¯×:cB:•º§ÞÛ‚’]]%ÏhÒôõ£ŽãGÏ-^qp1FN –aĶ`x‰þ[L¼Ø–V²~G°Ã”_»;EˆI Æ¡ýw3'ÎÔ—‚l›AszRÄ¢Ÿ‚Ÿ¥ä85p4™e äûʵmE~• WB¦ØàºŒQ"sÙ$ª›—â×ÉÈ 5$ Lå«Õ1Ñy;š«ÍG½4krm&ƒ˜±í}”IdIU2o¨v<`žÏäIy6bшôúØ KàPøÉ`)'¶~ÑÌŒð Û ökÚmá-T–é\uGý'Æ–:~d67+”€ [ÙÝN¯‚ÈY”¿½¡éV+‘ÔØ1ô³AmïîŒÇ,4ijR!Õ¿_h7×5ë$[ùÞ°`æÌj˜ý«wTöWÌHµÛ™d#Qgœg£Š÷æ4„S,\AŸÑƒ[N‡q@.&§}\n­ñ²{{¨Z鬇°c{,”]ËéeÐΨùù °<Ì•ÇH÷- Õ4©¸xÍ}©Þ,f¬ 970¶é}SB´ÑùȨ8râ¨u¢ûNa5¢RlÏ=Æ‘)ó¦«Õ¨D×Qw¨%tP¤ëUÎIˆ>Ön±œPJéaþãR4¨_ÞÖÞ‰Y½?<ŠN,®f•!Þç Ç a±Ø2vaV¶ez¾£×ä|v¦KŽ•òëÖ5%ª –ñÏ‹êÓVgþ€C»¾Pœô4†iÒ¯mPÛ‡þ™­Ð« FµÚ…½_+ÝÚ}ˆž[¶å»¢ˆWébÚ€ô9D$‹á;0í-C£Ôr¤”ó×–º\É 54ÄåË(/g0¹®6¨Li CÊB8sºyîýÕ;8Ú8\´3[}´r«: »Fš„À=H½KrÀžNÌÎØ:N#A/VÔ4®> 4ì°ª p@^h+ª^®¾ûSfL Cô’ j›i$¨)¯\VÅY]ǃEýLç3 à£%I¨ÝŽ8v"pZÐâ ,™†Ì¬ ò¶ôØ¿nrl{P®Ê„™š†_•X.5ûÕ@ïÅ’¸ü¥k#Ñ´«å©L+XßÜ‘—²°Èt¾fænXûB×n€hB ˆ‚Æ•¶a“›^‘¯ ±Š9ïVÕ<‘àUß–PXjÎYÞGUHu© 9•ؠУμU©—Æõì—‘†A‘ƒ²w‚0èõŒôØM~o3ˆeFåà‚-ÇWB¢ŽÍ)7Iø1j&÷á¦T\µ^hK%?0O Ýòå d)oª–ºŸW±–ú1Ç)ÚßS¨ro5¶+1ô,”=Ï<+½¤´éjÎ/'í¼­D´(6i´}îܧX¢¨Vþ<ÓÒe¦qÊÚ/§7ËßâdŽá|ÈNÕ'+‹¶ˆ,PÏöpúOCg~I˜N©m;WaÕ±?_íB3-.…öly Ÿuï/Ïw!’Õcic_O³ÒäÍR>ïšþQ+®•{øâæÿËõ턜1BÝ…¶—7ô¡Ø;s÷×Â8=î¯À@xÁ´ƒp¬g,~ô®‡¯e;¹Ç~ÞG¬\¨l ujhÞÖ¹zÓ?2ò=ˆâFwEðT!ã¹ÐZy$Þ&*Þ’\rÞÙ+›"Q$IÒ-AÁ”žfáÍfX­-HK‹˜Ì~åFÏ彡:²Ýáã¯I³¶Ü6òÚ¶0'ÞÅUÀáó 1•uopËWê@z+ÒXìQme–ì­Éã å/Ó:=Òyˆ2èѧ &ƒ Ø×4l;3¤v|u~¼>„ÌKç…ÜEÉe–+«£X'Ù”ÙîT Õb«uM½¾*³|{ cdà®ÛTü*[ª·fÊ>À…8‚ïñùÕº§+¶ò¥>Ô·9Ú|–^!ýr~Stp¤Î‹lEü\õ…m•ž0Çð —aÎªÓæ‡]„Ÿ\ö¯R¦þÉÂHŠ/]Ö5 ¨ÂɦFbÙU¥‘gçzò’ÉKA\áÝs÷¿­¶šÚø’¬|œ4KìzSëñºñ« ʯÕɧ§­Úc nnõ³?º-ºl#¹o$á~µCXp'?’œ|„+|X4äÈç·›ìf~ê¹å4Ù%±èFZ*M“—Cc(4œA~O—µñ,©óù2…-ö!æè˜˜+¨™[ç¬kP]¨ó–«ÔMx—°†=Dàeˆ;ÓqÒdxV½ŠÔ檃úÁ"]œ¢ë,¹àš=Õ‡õþuê)²KŒ„’µdÍݵºXEa¾ÓÑÇîFÊGO›Ä—”úâ‡sÕ÷×ùâC#¾ž)8QhþV]ˆÁjÞrª£ˆ¤W`·_>]Û*äÂ$FQiSòÄrÞÇüÓS¬MG­ÏïÝ@kÐ~Üì»[F¢»2km)ù¦7e5Ô5=r)‹XØ1¶ˆ·-Å,ÂȈÞÙûáaw9åØt'CÒ‡ðôÌžr4›Éʆ(Y?Ÿì{G¥Z·¶œxžU÷òmíJ T†æŸø¥'d`ÕÁÃT@~,5sÃÃá|ª©ß{$Ii;e“s®gTqµÀ3ä£äû6ýSööÁ|±Îq¡ÅæJl©8 Í:M^16F_dˆq[¦)È:¾? í ’÷7ðŠÊ Ç^‘du‚õl|¡Â߆º$ö $¦Y9°UÜ^hU[ Tñhão³ƒã €u€5ÖD'ÜE˜(ÛU-Ì}ÿDû4#ʸgI%tIù6§Ô%æ|LýŒÂÓÚâ¥älës úÖâÎMËÃÆo$“ÏV ©¯»ä`YÅäp.˜D2ë|åZ®â¬Ó²|£g K?{Z"®=©Z§Ý»Ëâu²L·Ô"¾¦Wó_ËX 2«àѼgM¸…•+fžŽÌ¼×weRÍ3ï,;x!M¬On)H )¥è*h—µ ëš¡z¹‹¼ñ*8K‰íj%‘nr ÄÛ!ý¸øCB+G= »ƒ†æ9}Í œïñõ<ªFßíèá è…¬M+à6|î¤C·ËñËŪ>´¨ÔЏÌxÜ÷Eƒ,~k²QxYW#ÎÎ=ªK"ç0É“›7£`cê©­²€¦!Vô6Ó3—‹Ã­^ö×–S×'ÅTøšnêoñk;p_@›ê¾ïêÙ«˜,Z ^Z¸>H-pü¨¼Ä£d/ˆƒ¥ç&Û,B"¢F³i¯n°¶«Qâ¡2eÏT½÷„¨d—Þ(l8JJ4>H½>¥'0ú•³QUC*'ÅæÍ|L“öÒŸv«HA‹øž ¼åç'î,MÞœ …D›ÆÁ¸(—~}pô”I¯žì …Û¥Ìý±äMÿLjЇœ’VoCmOªÇ¤@W!ù-¥Ë½7AМäfˆÿ ²„OÌýÁbÍ‹ ûÀn tÿA´2¸ÓXÛIÉêH/cfô“ ý»Ó’Ûñ¤z w¹ÀxÉ@ êÂÎv†ëê†ØãlQ‘ùÌÒãËÕNA†¯Ç胋(r[ü‘\æ¤$†àónôtv\Ë£s“o`ý5"_ò\“mä@h#PIXñ@´6Õ/˵,È:=w ShRÎñÛ}ßÝ.°=Ë™øÍ '·g•µÑaJø¤!î}8gnÙLû^Zy©^˸;DŽým\|a%Xå#¹õÚã`¬¸¡%ÉË×3ÄäiÌOЄ;–)'¤‹pEƒ®q‹G䂽—å ¤ÆÞ ÕÞöÂ_‡åXeIl„ýñ3ø üÌ©Å'Z;°U…‚‚ico›ÍŽÖñ¶~7A楸—Ô!Ó½éÊã&Æ.(ÇÞµ¨8rÎG^ e@ÕKË•A¾Rõt|ÊGP%ꨬ-)éˆNϦœ‡ÿí·1‘o¹0¾äÍ*ºçNtƤ«'ó ­ª¬GTy¦ÉÒ'[ÙµŠÀ–Ù%gM¤ ɯî“Q làùn*hXö#{Z§êéŽ5@øî8󘶚Äï[bØa E’«ÑôAòv1‡Þƒýˈ¦|L†ìíÖd”£¢6´Þo,X¬3­[g]±–u!…)çWkñ÷®üÁÍ5ÿÂà@òíKì|4}Õµ³—óó¸nG|çÀÏÖ8çÅøIŽJ³ß˜; ÔIìÌ_NNi]¦DHÁÑoµÈ^éóVGxÇ4|9HÎ/º0 Uo¾$Ò|P sÁ¥9ú¼ºå•ÁD¤ŽßI®Ù<8æ,ûùæûy_(¼r“˜]õç- 6שÜ:ɘ@ZÇS!…?SWBâdUI닲Í۫ȶ/˜'3¬¯ÄÄw¶=«{W­ùá¹ [· “H¬› ÞXß” ³S˜"¨y à*ò]ô¿œ>‘0,ìmËE÷€BÝ!’Ë-]B7~{ÕÆ÷#heÂ,ëiá  Ü‘ëeïbúµ›Ã!T(ÚÁó|Ô“ÑZuÈ>r³íåðTŽæ!6þSo$TŸqú8¾WS ‡«à›*>ʃOg­)i&ÉÙPÚlÀŽ\‡4øOÒ{§Åo.¬ºÁeCxþº{ ½:>NN×ãüÔ13'ÌánEÒÚ¯•çî±SB‰SåVñ=ú:)·w¥èÕxA“†Ìø[ôG°d­CÓvâ­$;˸ñ{ïaž£e‹}Pé¡mq-Á_*¨“Ðí¢@¦X7%5gL¢Ànï›,tÑžˆ7T =»r«5ëY·=Ö‚Nªm‰8–@m£ Ói“ˆŒ{yÍ2^݉®K]ù¤µøX&~‹6ÄOšq†…~å€rËq•JñD3¹=M¯¬ApðÃÙ/Ÿ¸Ñ4Z0³ÆTø> endobj 13 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /ZFFTNK+CMR10 /ItalicAngle 0 /StemV 69 /XHeight 431 /FontBBox [-251 -250 1009 969] /Flags 4 /CharSet (/ff/fi/fl/ffi/acute/exclam/quotedblright/dollar/percent/quoteright/parenleft/parenright/plus/comma/hyphen/period/slash/zero/one/two/three/four/five/six/seven/eight/nine/colon/equal/question/at/A/B/C/D/E/F/G/H/I/J/K/L/M/N/O/P/R/S/T/U/W/X/Y/bracketleft/quotedblleft/bracketright/circumflex/a/b/c/d/e/f/g/h/i/j/k/l/m/n/o/p/q/r/s/t/u/v/w/x/y/z) /FontFile 14 0 R >> endobj 169 0 obj [583 556 556 833 0 0 0 0 500 0 0 0 0 0 0 0 0 0 0 0 0 0 278 500 0 500 833 0 278 389 389 0 778 278 333 278 500 500 500 500 500 500 500 500 500 500 500 278 0 0 778 0 472 778 750 708 722 764 681 653 785 750 361 514 778 625 917 750 778 681 0 736 556 722 750 0 1028 750 750 0 278 500 278 500 0 0 500 556 444 556 444 306 500 556 278 306 528 278 833 556 500 556 528 392 394 389 556 528 722 528 528 444 ] endobj 11 0 obj << /Length1 1141 /Length2 4488 /Length3 532 /Length 5238 /Filter /FlateDecode >> stream xÚí–y8”mßÇ‹¤( ‘ºEŒûRÙ²fÛ ¡13Æ c,S¸³dÉž%ÙEL–B…±¦ˆ”}/»ì[ƾÄ3Ý÷ûÜõÞÏŸïû×{¼×üs}¾¿åüž¿ó¼Žcù`Æb*(¼-Z#ŠAÁP@MÏ*@Á&AA5AÄàq7D´•—‡*îö€€Ê(HÊ)@¤™5¼ ‰€±w —Õ„&É*Îh‰Àz¢Ú™Ö‰ÀÆx$M$,0úYá¡ÝÐ4 Ì…( ’Ø¢í18&ñŸ†´qvx@ö/åîòïšàF3\¦™hQx– ÐvLâúxÚZhš“ÿ Sÿl®áŽÅê#œ¶ÿ9¤ÿ#œ1XÒ%à]܉h ‡G¡ ¸¦š¡ÿò¦‡FaÜÿÕ&"°¤ ΋ I7 ŒÃ‘€ë†þSGãPÿ4A›ÛŸÄÍMô ôàWþ:Ï?c0G4!¹üÝõgòŸ ýÅ´é0^€% @i‰´ß¿ß¬þ±–:‰Gap´ !- ‰‰v3h$ ܃ í ½h†ÅÁ8<‘VÐfâØá L?*ˆ#´)ý”ÿT¤¤q$ÞÙñK‘Äï¢ ø_­ûU" ĉž¿â´µÅÝÐhÜ/EÿkÜ+r?—ÁâåÈЪTþ&Yš ¿IŽF&“üO‹ÒÝÙKÛÞß²,m/Bs…ú ¡4 ¿¡$ nÿÒÇü†4wØß¶aç_¥uÆý†´ÎøßPwù if ¿!mÄßæÙýOüÏ+¤ªŠ÷º'&)ˆIHCy99@VâóßóLqWw´ö Ú@ ²´ÁüT‘îGüó›¥Ýγ†v—Ñh/4’i T t|\ôÜW=«=Aä°ª}Y´þ«·]ÕÌý1‡±9Í7]E†KÌwò“N³L1L]ðÜãq{XåmØ¢±ìçس?åqg*é.…Çœš¤Gštáß ˜?UYÚ½¶ }Ø søÓó8‹ì†Ôïæ3a—o˜L3òª³ôx]—(#k®‘„5 ~P"$ÉgJt}"<ä Š{td¨-À×1øXù•¯+ø*w¶¬c±û·×f;•-ϤôÈXáZ{úz±ˆ°p­+R³"“){;…)âJí’¥Bщ¸îk)±õò‹zšÇ¸½_§ú‚ý»|ÊÐõ”—L妺 žÕ·¨ž~©LÞ‹RáC¸7ú æ~‡ó$ßxÏdet8]6ìÓ6p;î¼®8hW¹•ð&x$A êcƒ81p,*Q› qh²Yâ9ô„ávkÊ‹”'ëÇ`-{¢v‹æ_>.’Ç>f«™)y«KâËsX'}|®œ®äa.‹Û2Ô‡´Q¯ëPè;c/EïWäMÑ>8îcqðÑÿ\k¢ßêþQü3g¾`K•Ĩ»g2Í]`ïyôÕL+e©¦½%²­ TûÍS™i§xÙ¬E;Ä¥|&Q·^˜õl&SÚ¬­Í( >É -mn=½6›·v*íÜ”¹*ÆQ )½Ã$ä¡K×îõzžE˜3<8ªĸôt¨øì‹߶囮ߨ™¤ây¥Ⱥ/ºæ†Òqƒ¸¥\`?r6£•ì;OóžðÖÔ‰6Â¥„LYc$*‚se‚æŠdžnéq$¯O<².a-:Y»^Õ¬{¼—L†–ÎUy©±8¯”õ ž2Ÿ§'”ßñ]¨ÂĩϑíÞGÒX¬/vyA%),^ÒoóV¯dpØõŸ9ONéîÐû¯ü÷ðz°n½µ'¤\X˜ ßh‹—"NùÎë}šnḡ¬-z„8)•’†ß$—6ÜÚ´¡¸ möñrÐ ýÇt‡žœ›cÊÚ«Ú‘ ÿQŒ;rlx¾tÚRt|pƒ÷Ħ2sYÉGžó˜•†TÜ̵2’ÿ³²è²˜•Õ!”FAÿöÓ¼v&ñÛ’6—ÒGä£S"µV©'U& |-é/ŽîÌhÞºgÃ9È;ººh[a.·ê31g ×wªYð5ŸèeBXωï=L ¾âóJssòÔƒÑìj‡²åŠ™…ðÄüsÜ ±¼¡ K“S9=¹¸§u®Iœ„¨ÅÖ¾»)´²aöæpGKšw.ùúÚàS,6¦¬&Ù}‰¹]+s'*ó:¶KÕºDqòn8¤¾ñðè(– °‰µà÷M–žq¢Dâœ~ôï_k«W¶ÜxX–ùQkL;¤—»Ä%-}ù.Û\Åý{¾°:èšÎÉ~¤V$¡\ äî¦ {ÀT8ÄÀ> o¶–·oÔ¬ˆ ¥ÁèK†8¿•™ÝïMo[J%ží9ÒØ.heÒH°æT^1¬UÁODX–Í“ytî2TŽ7ÍD(‘S'›åÞ5w&D~Ó2”Ð6´•Äõ¤ Ú¡°mñÊ’«¶$Å—˜ûJ®«KÍ,•mN‘?¥P7Ô6÷ÈtÒ5oàɶÑîƒgô¦>Æe¸%b¨$^ˬœW`ÒôÛ}þ…ÃG¹ü*èø’{FÒ¡ l©HƒNzÖ\ÞÝ s…Ê|¢]¶Eá[¹Û dÍO³jHƒ`Î1G”n|}r¾' wqZ€ÌcòêÝ#_ƒ¨µz‡mìðL(þûÐÁA>ãkGYŒ‚}Xâaeg\UæUæÁTùñluJúëiQæ…!¨¼®³õ,ú0"¿akE<¡d_«!¨>‘Ì>¹ ‡9!…¾³]±JæE=‘(—DtB"χœ&VI/M|·¹õ³}mæ@ü„ðT—ö¹ßi~/W³3ýˆƒG1ú›ðá(G¡øû)朲I1bN({½†26äiþ±šÓ7Gb_}D9LeçJ;­1œáz÷tžY@»®Ä´ÎtÛð[’îI'úS+ügA"›‘aV”è,ýŒl§€rPüÓ±¦pÕgǾÛr×+´Ôg[ÿÁmäÇb12½4æUÕ ì²*«z¾H$’Z«øþÜ1n%ØcÙ„•ÈŸÛ1´¦ªÕÿ±Êû1žÊª>»×Í—ZñÃdWSNèg¶\S>ßGoêÉ7¤ñm:‡-e:Ýé[Yf€Œ "p,9††‹ZèEÔdóËÆZ.R^¥—úŸ@~£hþX4ç‡F¹ûÛÛªtS"ÕÌVmzûeÒçÊêS*V–ÖEl’²¦{ÒèVî¥›æšøˆ…YÌŠBÓO»ÑõÚ‰ìïØÊ&¡1º5¤ÍLM>«óËI"#åe›–Ÿ:£ ÅöWs¶fì¹l¦ªfk­ƒŸkŸUÉ*VŸWµyV¡4uŒåÈË®XfºËŸÄy(ÒJ"u›my¹÷3«Ÿ°‘Å °TÄ¿ÛtšÔzA±Ø¨ÈYS¤iI’š}S§ØY¡¤Sn&lDÆùèÛTXUwT+?!{+–3Š¢ôhžq—±þß&¯(~/Z¼ä¶>FœÞÚ3:[Øå6?<SÞ Ä­±W”R6:Þ¢WkŽ{ÜnWe9’”õìærD5L»GF¯S6«¥Í˜ ¥ë‘žéA²»¦¾“ïçÂ8Þ¼îÍLÆŽì?×7>YÎUwi<ÃÉÃe˜z·€ñ ¹2¿³ò"#¹Æ}b¸àÉ%õ;+ ó'¡¬HÌ2:KÓ¤úTn>ãœsÐÒŽÞ.¿¯».ï”õK¶ê.÷ÝÑú§G$ùÖG]/%d”îd=íý¬².` ÏÍÓùžÎÇ$¨—³dõƒ± F{ðå¢ÝǸ5adž’)puêa?ò/l¾\l<Ñê¬Ð›¬¶—¹;pvNßѾ| 'éüœÄ‹mß“Óðw#ºzŒš–Úíż"ņ…½bõ¬^ò‚Ö\$v÷Ù§ã ÑVN?ž4r5ù"y­uN+›>rON^ÝO¿l,è[^¶øiVÁtýYšÙøþŠ1¿Ž€¶„¡°ášþ‹3K5™Ø¿pxAùƒWEXø?(÷µ³'_÷ÞËm]‰>]]µ[Çà4ÜTøÔµM«`è2äÎ9Î)JòfTŽ™4|'è ë¹ýŠà:ºqá‹XLW­á™#d¿¯ß"el!luÞ£Ÿ…XÚã´[yüÍ«_$¬ò æSžvå/e%ŠyfQÑj‘›z ëÔ⇂•J¥­gf”˄ΨA¸ dCîA¤{XË–û²6Ŭ)e¢”óÒœÅ÷t$:a˜º¥º7D«$–i5 x gĤx¼Å¯²wîàcÝ=ÚÜ$¾MµpŒøæ5ÄeÉÒ×ÎîÓ .> endobj 10 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /XTNOMV+CMR12 /ItalicAngle 0 /StemV 65 /XHeight 431 /FontBBox [-34 -251 988 750] /Flags 4 /CharSet (/acute/comma/zero/one/two/seven/eight/colon/A/J/T/circumflex/a/d/e/g/i/l/m/n/o/p/r/t/u) /FontFile 11 0 R >> endobj 170 0 obj [490 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 272 0 0 0 490 490 490 0 0 0 0 490 490 0 272 0 0 0 0 0 0 734 0 0 0 0 0 0 0 0 503 0 0 0 0 0 0 0 0 0 707 0 0 0 0 0 0 0 0 0 490 0 0 490 0 0 544 435 0 490 0 272 0 0 272 816 544 490 544 0 381 0 381 544 ] endobj 8 0 obj << /Length1 908 /Length2 3187 /Length3 532 /Length 3835 /Filter /FlateDecode >> stream xÚíRi<”}Û¶&K*J‰«4¶2f†±Œ%cË’%c©,™f. ³03ö}KrG²²†ˆ,‰Ùn¤T˜B‰²oY*ë;u?÷s÷ö||ßOïï½®/ÿã8Ïóø×y\Ð#Xy z4 Rò èšš!ë ‡C P]ˆc©=D55eÀØ‹ U¸*¥‚F¡ P@—êáG#º¸2]ÙM*† Òˆx0Å1\A2K#X*ž2ü`†D,LÐKÒ¼A ‚@"ž\]ˆˆÂOFg* òMðòø»ä Òè,S€ÌO›²Ë$J!ùТ`Feݲ¼üoØú]ÜÀ‹D2ÑÈÿÜÔÔqd"Éï_T²‡¤¦TH£üÞj þeÎ$½È¿W8¡¸@@¡ƒ+ýÅéD_`Adà]g‰þäA áw'¬ýýô¡`…5·µÑ9þ¯h-pD ÃÊÏàÿtÿĈ0kI4¢/`‡ÁáV#ëýûäðÛeú<•@¤¸H”2€£Ñp~8K ‰B€H!€¾èËr¬£P¬€µ™ À™JƒüÈ¥ (x°¢¡~ð?)U$ `ùoÄÊN÷o„`™P(@ø d©‘þ8 @ù²f©¿@Ö,ýÈšõþ ÿs›::TßyE8 D±¾ŽTTPð ÿÞhM!zzFz ®ª¢¨ªü“Å{Ñh …ñó?f%õ7v&²ÂA_aöQñê‘n©Õ—Š‚õó^屢Ý,Œìjˆªº©›VßóšVÓcŠŠr#ÞÝ2kRª@pF}­Æ¶`¢„Úø÷Éæ¤a¹çñÓöŽíY­M‚ä[1ãL‰1šãóo%WÞ{7ì(;=‰PɽÂUÔß·¹ìÒý¹ëAòS Ä!ëñédÐfâýµÎµ™SÔ<*3¿}¿}ÚÊÞ-¦hÓP¯û ÿMµØ,Sξ; v§Ê’çeŠZpïo< \±´`?,:©L©ÞÖDïæ+¾¸gô Sí=ä*’¬<¨›Ðñ^#êá†ð-¯¡ñ-¾×[Bü8õ2¹Ì2]4„›„5vŠ?À¬’„Æç|Þôî)±Þ}¸È»«ä.1qî¥6õqÈ’@IæµÚ]rË3Òy BùOu¨«˜ªÜu3W¼}â»[›²HÏÎF ßÁ×cÐÜåOeMJ=çäÄ&–2åTæ'¡lTÆ"Á¥¦©o.ܹY¥=²™ˆF¢7 1v(åï®ò°‡ü×—>¡ÃŸ ù™.X|úX†‚_ÎËøùÔ€P¾[ªµ&­‡D¬çIºçÔÑí€Ê§Ì ÅMŸŠú.9§Š_Cí7®µÔîk\‚¸h~?’88u9$ ·á3çOµ èu GéYW Méá¹ 6òÖ\‚½IõÅ”ÂctÀ—OAÉÛÂPÄ|*4ÞFEŸã’CÎxcËz µæÕ³“ÓJÞóçÖWWÅfÈä9ÞåiÁ~~¹XˆQdëŽÄÕÚSI&‘çV§ pÍ‹t¬ˆ:¸c㊛«„¿škugU&Pw à®Ú/ì˹ўUñMpàÏ]½ãŒ±æ|µ¥—…å¿ûeÕ »Çi¯›§ÙÚeDô$Ëæ–Áßr(¹â! ç ¹ç¿qí¹QS<—Å.p:±1¾;; ¾ÎŒKWɽª™ßÙÙ‘Á­7dÿaÿF£Çü'ýNÉèïr& )yÙÊ!ýpC5Oï}G’¤(¶’UëûÞ-q="@üíSWoÇ!|²dz X‹eÁŒÜï ÿÑÂß[Ï¿k“8wÒeE:¼V"6œwMê/æÍ­åU ×!{›ÔŠº]é<Ákµë Nõ ÛÕ¡Á€Þeíœ Oc¬´jUÖE,%åÐT¼†^‹o›ù¹äÎ&ä®RLØæ+º(ü†¶GÚ²1+)(‹žIXEéà µ0“᪙…ƒÒ¤oV•Ä{u ¸§~Áwrßµe³ãŸ…Iš efúF„Ú *¹Ü 3¡‰nöJçžHŠ„`b^WV[‹ßRš­ˆótL µ@vŒ?bBU§µ÷üQòÄñ¸l˜îâÚ0üdÊbë¸töéIô“wÎ}úœž2žO™Qn0ùzté O©º[n43s@bÎN݇5l¾¹Z'io7ÁÇy«ð‚>ØëÐYc9bž”û8¦•L²ŒÌ€M0Uâ.—l§ “¼ÊvˆÌ'êÝmzß`ZZ(ýð¶NŸÅó¢áë[7±R—*Ù*Í«tøæU/ÝÈŒ«6¾H‚×òHOMöÄ3²|ƒ2H>𬇙yŠÇXŸÑÏ^a‰Dl™èÇÃʃ×an3·»­n¶å/M¤õè¶ vÅûæ_°“éõ•È¡ÐÚØ’ sª 5ò$hmñïQ,˺¸Ñ_Yvú´5iåAF.:ìcÏ7w“È73±ØÌËÌetôÕÇ–„ø¯æ]jñgöLÍÆ=áØG¤>+z™˜(ä¡îné@kºy¼uð¼¿^D=_`Š@Ç´§¡v±´3×ðôÁž÷¬`æy¼›ßæ’9¸ëç·a9Ý+Œ#ð¢,.#Íþ1bŸPÁL·„&~¤{!bŽçyŒPÖÉU>»ùÙF'ëC]‡©5àaïåÁ;Z+—.¤XsŽh`᪼Â×.-Ú#æX'!0[³‰C•;r\x)Á‡tÕÿqyÏŒu²U:„ãòF#›ÃóçI£ffûßtñø¼šVšqÅ#ÚKÎïFíA×&߈îýªhiÔßµónÂûM‹#ãëuX Wòvü×È>]³co“„BmžHß__^–1"ü¡'¡¼T‡V_z6X,-Î…}iÒ¹4SSˆg±•+»X¿âð+¹$­Ë±œª†àT¹Tv@ê謹ç†C*F2wM¥8©kÀë’øá"2²jŒÀnÎO9œÀ3 ûHþËfµ/[TsCÐ%¡Y{yÂÚ8Ù;V‡¥;LCìù—z“ÕçmƒÊÏ—1ëò§Õ¯¡ãØòPËϼõ1ïŸðDnD^o³è—‰ûì2½Ït Mí Ù§=¥5StÒOZ—ÎxÂOqÙÉ3©i¿Y{wë¦ê>Ç;9>æÍAýYh¦qk¿-×õ~sÏ*êã âR®äÖÙ·RQÁ‡ Þ¹¤ƒèwÃk»S…ú¥×Go–<¨°”r·r’e/žØ;)'÷­Ú¶štÑ@1æx[1ëöˆ"=IÅ?µ3Ô…O½ØžW»÷ºðŒÎxç’{Zt®'n‡Æ|·ê²‡P×ìÎ- ³ŒeÛúxÑ( Gm‹ªŽÌ+³èDä®Þå±/\ˆ½3àËS´¢Ì|.9.¼#ɾˆ±ox5üååñ -ó×n'º¼‡· õÄd¦Go¿äЬ<Ä<_ÅþQ®{ÿ¹^ˆ o†`ã'x28õhYÅhÜ'‚¼Àüdy,1ÈØ“mx/þR¸§ô•’É--Q8g:öè1á‰9ÚešÛƒA¦Î&ewÅõ±çn¬„I-ñ`N[²‡½ó|ÿº±U¾’Qß)[ÈÌ'4fåm»œßåÙ¹œ$κP©æ[šË[ÚÍ!ÅyH]¨{FÜf„­ø¹‡ziW];ÞÇŸ±1?¡ŽR:/‘^ö5ƒ{·µÝ¢wSà^û*KkÛYÅžÒrý¼4¥uôí£NŽ9í§ú-oó6ž„6Åí?xeç0$Ó®t§¹zFÊ÷~…ƒº¨6²å2ÈÔ-<øFMýžÎ¸ûðˆæÉ§é·REíøý¯²Ñ ®Ö›]{mÇ}¯â¬"ÏäÁÞÛ{e'ŽšpI i(®æ¨I3lòÎøDßï¤&-š» £D†ZdDôqˆ5vÑ$À¹ßòò•”¼i<†GÃj-‚´{>]ÛÛGІ‹öÎ…+@ ü¾48Þiê=ª¹4Œ3 ”ýB z$F{vMŸÌ¶[–‡wÞ(e¦µxÛ=ð®ÀÌÝ~Z±³õÂ)ÍÚ ô±åº÷\ÜîÛp5gŸŠŽôñ'fO¶š³Õ#˜£á£vÝÚŽF‘uc/RäÞTáÇë¶«þÊb…‡2°è¨ï¼‹»ó¢õ&¾­‡’Â0«/ÎGŒo—y;—”¨UýÙ¾˜†Ù²õà­H3€qÝÕ!pæØ/jÝ~eůÀÚÀï¨0N}Iæ‘Yȼœ?åþx÷ôîwÆ;bS‰ä:yÑš•šœÆwƒ"¡O-–ÜÄN½á{¹zù.~’yéñÞû­^Ÿ+̹x×x²‡Ñ²û)•¾qÇfÚ·×>(Âÿ‡äÿþOàI ŽÆ ’q4wÈ“6³Qendstream endobj 9 0 obj << /Type /Font /Subtype /Type1 /Encoding 161 0 R /FirstChar 58 /LastChar 118 /Widths 171 0 R /BaseFont /TSOWVB+CMMI12 /FontDescriptor 7 0 R >> endobj 7 0 obj << /Ascent 694 /CapHeight 683 /Descent -194 /FontName /TSOWVB+CMMI12 /ItalicAngle -14 /StemV 65 /XHeight 431 /FontBBox [-30 -250 1026 750] /Flags 4 /CharSet (/period/R/a/e/i/l/n/o/s/v) /FontFile 8 0 R >> endobj 171 0 obj [272 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 745 0 0 0 0 0 0 0 0 0 0 0 0 0 0 514 0 0 0 454 0 0 0 334 0 0 292 0 584 471 0 0 0 461 0 0 473 ] endobj 5 0 obj << /Length1 1112 /Length2 4426 /Length3 532 /Length 5161 /Filter /FlateDecode >> stream xÚí“w<•ÿßÇEÖ1³Wu™Ùœc$¤¬ddedqÇ9öÈ…¬lÙ„¬²7Q2"{ˈìˆìûÔ÷÷ûÖýýýyßÝû\ÿœçë=>¯ëýy_ÜìÚºB7­Q–pe#Ë·4tÀ’XXÄÍ} ‡a(äm.€¥¥ÁÀM¬- & €¡2âR2b nàÊɰµÃ¼·ø~&I7áh„ hÀ0vpG\+˜ ‹²BÀ1ÂÀM@çg…  w£]áÖ 0°FXaK¸- ùiH iƒ$ÿ’­±Nÿ¹ÂÑ.8S/Î$€³hB:xÖpˆ& wçäÃÔ?›+c4aŽ?ÛÿÒ„aŽ% °8Ð@YÃÑȦއÿåMnÀ:þ3ª†9 ¬n"mà€è_ÂEá·ÖF`¬ì˜ƒ ü—GZÿÓnn¿,ˆ¨kjë+* üuŸ¿bÚ0£çáôwןɿü›qÓA#ÜQaQQ0.÷üûŸé?ÎRBZ¡¬HÜB@  †y€p›#àHk¸;wÇF¢0¸7À…ý¼N Q@Ä ††#à6˜Ÿ¡¿Tð¿Ô¿®ïoˆØy8ÙÁ‘¿%)@ÄŽFý-@p¥;4þ[‘D䮯 å€úÝE—¢ñ7I‰"º¿ w¨þß„Û!ØoÂu²ü›À¢¸—±þqVà .Ùá”D#W‹üqµ¨?P 7?PAÿ8‹. 7‚?gû ÿsKQî^Bââ€DÆ XRBÚç¿çé#ÎX¸Úm"***) ù¥ZaѸëÁüú,q øo¶AàÖw‡[ÆGPV׃ìŸW…ú*e|IÈAѶ:Z³²åS#YàØ³ yÝêÎü3†GEÉ´”Ë„ËWÝNX]¼ïõ*où;G'Ÿ-»Z,'{Ö²~KÖðXrâ8\£ª¯Ú[‡\МùPg”ó6m»s-S›÷¶Þâ)v¼V××­)APICådýÐà qvêDçÂ0‰Ði7긘‹Óý¾ö¡$5“;¨,ÍQ6É‹Ø3sb³™ ú² Âa‚´V±rd|vßsî¾J“͉X¤ ï!ª{ÈMü¬‚5óõûq¡±Œ2%…äáäòF‹\içw^­ Y+…à:͹{|dB°>V•ÏëP6GgSÞyLþeåøÌ4TÂÛ ÊW&KS±+—Ï͸)Ö¤49ï_·= ÜíËWpÏ,KË_}¥UWʹñ={ÎGZÊT‡^¥ýeQd5¡Y¹§TzGÍ»«¸çư*RÐgo²£)Ÿð^KmФ|‡3$høZ §*âë|ÞXÉÞ¼Tuz°äP˜Î×ôJÝtUf4úš$9¯5Ó*FnØË‰ÌµM攕j®Î¾aâýT³3lKMnWs¨E à3#¼„‡†¸ÛãýÆ:,(\ç”ÞÂØ‘Û¦RŒè[ít¡žˆÌ6áëë0á¥,†ož»ûiõ£á 0*A o‘¹Œ£DŽs}ãanåçT›ƒŸ(‹Êw H¯4\Ê•L¡©—W0“¤gΕ+a6¸³–ô¬Ö ½[Ô¥—ýiâaŒï¸…ªŽéЬuÕÕ{ "¸kĤz¿ðD4cªÊZ=›/ÿá#6‚ÒøÈ9°CÁï-´8ào¹ê"s _J¬×îØ2,÷¹Û­v¨Â–öƒGx´ìCÒnμ§éKÞg>ÏbjB×Ãäʵµíx.wà=öòá¶áô½˜{ö}i¿¯•%ôxOœè"ñÂ}E.cðɵ€‹~w ¤GSB„b3d$"5Ù1‹Ç;bº©Õ€GÒyÈ~öÚbdYf·•žöéæAz¹c°üõ½ê⃘'yej©Ô*Ñ9Çõ£M) ÊYW‚ÔÒíŠyG¿Oª@^L1…wê×gE?—„AŒHÊšÃ8}L[zw¬•}¹¥ k|Ûü3åNø) hÀÅóæ¡Pï#ŒÛÕúnU…àªV»ŠýCÊdÿ\l7^Ðä“ÉÒ¼~g'»uB@&{”¬Õ_›‚GfüQˆI>£i› ¤q#$LŽhâûÔžeƒBß'Fß“Üy:óÞ $eH\ž,³¿˜éN¸¢í­zZÍy¥éیرWK-¿Ï£Ó÷lÿðV Yë9 yªGs‡Ð$ŒêDBvðô´ÑŽË û{©I¢Ø­§ú™þv¥kS}²ImÊU¿O¡M[µYdîRËYy‰´hkàÖ7mÚ,B%F0ܿϊ&~¥îíë0Wç?Šl‚w™JBK4‡õ—·ŸT..s×Us"H‰ dcX(å3Ȥ/ÏaRíwùɃ­ÞŠKÞ&Wœ€¦xxä)ú)·)_‰àñ= ùìÌunXòX–NösÀBÂÝ+Ã`ºS†;[†kfã7†¡m`Eê&¯4×+SÎÓქV”ýáçj÷Õ[7¥Ö"¦¼Yéø(4_Ð4Rµ¹9/K‘•¨}ä…ö²Á&»2#ü¬tó«òx2…΂?l™d™4DkÉÒ©2v][‹µtôÚ¿ôvϳD}Åü¹y½jð·TsêkMTŽ6] –—<7ƒð²†¤“RøÖ«¦¶OèT[ü,ÀvéŸ/\Èœp4¿Õ[Hʪ&þ¹$xÏEóº¬Að=Ñ—¼rŸÂ÷Y¯ÏŒt5ßžhŒÅµvvF*.>Vº2º–ÑC|'SQè­?…ש­1AÞ…hÚ¡HXÙ!Ö™°¨íž‹Zmëâ–À“Œ"7>¤Ö”·£¢ ¡‘—=#/‹âõ‚²ˆgÙæêš[úIǶ$\ßñÛ»fz@ÄÅú­…vÿ Öÿœ0®˜£Ö%CÍ„ÛåúÝó4ö¹K¼å;žsIÈÆü›<ÀÇâUOËùÂvÂÙ<³T‘Zˆñ%|AG]†VÁï‰ÙGʯuÜsuÙb£µÌ¿4ïm’ÚŽxïe¬h’LÄϯ3ûuÎh7ÖtºŽS§]ºt,:ÄŸnQU£cªŠº•›«O²çÆã¿l+¦/!“"'ãøàlе4j|¿ðÕbLƒýC{,ßXFvéCnÕ'Ï»aÙý¯l;‡£`ãV{â*cwâ,’ø¦Kr¼Ç&•y«è ÝÞ0ÖŸ½d” Õb½nA»AŽÏ¯ÖœõÌ÷Ë×ȸ•Pr]`ÄUG5 "ã2Ê¡›Äw²9¯ºrõÍå¬çž;3Q ‰¼8£Dd2kHöy´A^ûÉ&ýõ7 êh¼ú™¼ m¯‚‡Š­1 Ð<¶@ŽÎ¥•Ð`ëUJg9¶cß;«KdA[2‚~b œó–BÏH¿§œá¥æ}±W´ öÐ]K#>/Ê,ß÷U]YIÚ‘³ Hû!SO |HÐØvà=·œsž£¬ÃÒx(ˆ5ñÞz´x$[©—3½HBæÒ¸ƒ×ßÇ8Ãã,’ud‘¨X¹7ƒi–“ˆõÀÿ^wHÉw0ZeÀ,÷¼‹ÐUÎÓd“Mü©KʺÄ7ÿÊ.¤Ú{ÀÑ)Î!?éÇÀ5¼ôX=M3egh%÷`Á[ _qÈ˽LÏnÑV¸ÿ´\›ª¾b“rôtu–ÚhÓôë…“å*1$Ó gtÄžÜÐâӱހ0o q ÿK#ÁT±ÔÌ„>ý ¹Št=Ñ-Œ‡7Ýí!5Ò÷ÂC£g/•ÖÁÌR9Ð[%¶>ï!éÕÉiáÏAàh•xÌãþkZ½{û—™{tcƒiJ–™“+)µòºÓ7+ü\š¤_IvI•¼fU …”htM@ ä€yÈጩ9Å ú—\V+s¦Öº²Ç)_gœßùU|›'çÛYÕýž^úæìȸq® µyó ÑW9 •ñ‹Ñ˪öW¬}åÍšö_)zÝ]Ì›WKÄÈÄxÒ<Þ®Åwò}50ë±\ä–ˆ0t×[J¹þ²±tt´ïÅ–}Ô•>Û)2¨æ¡<Ñ6† øà+2¼zË'§0vHe»§c0Ø8-9yngûÈØ ¿Gšžwœ7[ÝMCÖp]¡õ¼`’«8‚nà•¹TL¢£,µŸ¨…F°#Í—>ÀW˜¦ÚÅ·‰œ/Vð©¬0{]9ëB%n¡ ïÖ\QöFçô.Å9öåŒì¹>+Àöª ãM½IB'|ò‚QÐÞ‚|:RsÝqps—Løœh×ýd2ßÁTÚ©pÚwÑu¢kåLˆæž%ÝuôTÝ>‘¶yØ|¡Syó5ºy‰«6 ¿âòô"W5gšÎ£þÕ¦xç2Š[¼îèºW{§‘ñ›ØÈ;ªQæÃ+^XÔ©Âá(ãÌNÒ£hï1òÚ=lE²iE),€82·ïT½Ê”˜‘ÑÈÕü›^d=¡À¤ó@ÅÆ¸Æ'ó‡<¾ŠÄJå;Ȇ÷¯¦Ó$æ˜v²(sÒ@f¹¥êù|áÁó™ïÖÜ¢æwÒR¶YÚ<!>æ,˃{Në­ŠðS_Cšmg?v-c}!¦Mºbð˜è«ø‡Ê%TÛä9>´u¿#‰v£»´U©G¨(]{±¸º5,ù0ã½ó!’<àbá€è~û‚¼$ué²4~j¨–7p®KÏšA ¡JÉ.4çQrC¼ÞbySVý’îÞy+ª¤Òbï†`¨×âê÷óq³áV3––øíI}Çží—y\Oo.:tÐ^Évpxó˜£_W;&C?sƾo·ú…¨@ˆ ÊBßÏ|t¢QœOeºÀîCãºÄE膛•8Í0Áw÷±X ÿ<{Ûh쫃dêÜÑgW8šÎdÒ‡×9bM,ƒ%Jß§kDdî=«ãé1dØÆú˜×ë®ò êËÇ/6Ó,ðÁ=PžoD;÷ ìÆšv¿ûr¥FY:¼ïBì?ÿ°ÄJ*t™:uKÆ~üZ@¼b‚pCuvÍ‚ÆMˆíKêHÔ4¿FˆK‹Ëúi…ñiÙ6n¦Ñ" VŸ­åº°K’¹TÙ’~çq£[„ΪkyaL²SoŒä÷3ÂæçCܺ¤äë„<”ÈÁM puLÅŽ™Üg Ä–Z_þú`Ö<^ʼn@ëyd;UX¥æ#‹”Y£N’ÉÃhÓÀ*2SC7O…’'L‹¡©j ²ûªº=* [/ž§›JœèXÅàã¼5®ìCáRbóFI›7N³Ë]ë{óU–ªx0(â}]Zd ùJÕQ“ì ÊOê}?Ã4&y‹'gQ §ó?:_RIÒÐXYPˆÞ4Þ]b®Æ'5÷“ßL5UÞŠ˜Zo¤Ñ¿ÒM±UdèèpQ,Õ)ò®Ø]eÇ÷±E}mÉû¾êÞβú/ y³Ì7(IÆ? ª¡èãM“˜|ï”ûÆYVo‹É—Œ-hv®7ªÄ9²õß dpû0%Vo&e´TÿhòIe·¹q‰õÒmQ……üp6 CíÖäZ’«C…Ër&ÂJG‡ÜÆ Ù÷mydÃõuðïéùK 0KOŽYv_wÏäd¬+€ôó¤f žäóÝâÝѨ¯F Eú¡>­CµÓ‘ÆÚ7žêoÅè;¬W ÅR¿<ŒzUšÇ„ÿ3Õ%®ÏKœ"ýcÃWŠôcä¾amÎ+Å“$¥lœ›‚=ÛMn?ðØühÀVb*x¦@QGÞá#üT†a3nU×§¥Úµ¼J‚d¶`ÑÚÄ"øëvx7¾%¿çM”ÓÖW!wÇ—šqm-dsÄVeƒ"äcµK”Ö¾o£ËÊx¿å>Ü€ Ì䃔3$™Eèg¾Ø„1>~¬³ã½ØyãÉôVÈ’ËÒA*26SDçÅrq«Ÿ2éQË^uÁIÄÝR:mXm|¸ÉáõѽæÆPÓó wZB‹çDbªÓ.‘Pp·úüâcK³:!É–šÛõ£‰§….=Ҳ¸t IöhaùW´~¯G?`¦ÁUd§ÚÆ ÷8Ï*` 5t MÝIÈKâæ3ÆEãZ®t?šð•ÙÃ6™eñã‡=É•, Š]  ÍÔ1-ªß­ªÆ#SÄ7Õšë' ÌOöÚË9{5n\PNDˆéÜyÇàºs¹¯áZµ¢skÿÇ´ðEPÁt°DiQñmÅN½X?„ãžèÿðúÿÿ'X9Àah ʆ~ú/£ÛtÞendstream endobj 6 0 obj << /Type /Font /Subtype /Type1 /Encoding 156 0 R /FirstChar 40 /LastChar 117 /Widths 172 0 R /BaseFont /KNPUBB+CMR17 /FontDescriptor 4 0 R >> endobj 4 0 obj << /Ascent 694 /CapHeight 683 /Descent -195 /FontName /KNPUBB+CMR17 /ItalicAngle 0 /StemV 53 /XHeight 431 /FontBBox [-33 -250 945 749] /Flags 4 /CharSet (/parenleft/parenright/hyphen/zero/three/nine/colon/M/S/U/a/b/d/e/l/m/n/o/p/r/s/t/u) /FontFile 5 0 R >> endobj 172 0 obj [354 354 0 0 0 302 0 0 459 0 0 459 0 0 0 0 0 459 250 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 850 0 0 0 0 0 511 0 693 0 0 0 0 0 0 0 0 0 0 0 459 511 0 511 406 0 0 0 0 0 0 250 772 511 459 511 0 354 359 354 511 ] endobj 34 0 obj << /Type /Pages /Count 6 /Parent 173 0 R /Kids [2 0 R 36 0 R 42 0 R 57 0 R 60 0 R 63 0 R] >> endobj 71 0 obj << /Type /Pages /Count 6 /Parent 173 0 R /Kids [66 0 R 73 0 R 76 0 R 79 0 R 85 0 R 88 0 R] >> endobj 93 0 obj << /Type /Pages /Count 6 /Parent 173 0 R /Kids [91 0 R 95 0 R 98 0 R 101 0 R 104 0 R 110 0 R] >> endobj 115 0 obj << /Type /Pages /Count 6 /Parent 173 0 R /Kids [113 0 R 117 0 R 120 0 R 123 0 R 126 0 R 129 0 R] >> endobj 134 0 obj << /Type /Pages /Count 6 /Parent 173 0 R /Kids [132 0 R 136 0 R 139 0 R 142 0 R 145 0 R 148 0 R] >> endobj 173 0 obj << /Type /Pages /Count 30 /Kids [34 0 R 71 0 R 93 0 R 115 0 R 134 0 R] >> endobj 174 0 obj << /Type /Catalog /Pages 173 0 R /PTEX.Fullbanner (This is pdfTeX, Version 3.14159-1.10b) >> endobj 175 0 obj << /Producer (pdfTeX-1.10b) /Creator (TeX) /CreationDate (D:20080422093500) >> endobj xref 0 176 0000000000 65535 f 0000001723 00000 n 0000001611 00000 n 0000000009 00000 n 0000218534 00000 n 0000213097 00000 n 0000218377 00000 n 0000212716 00000 n 0000208605 00000 n 0000212558 00000 n 0000208059 00000 n 0000202542 00000 n 0000207900 00000 n 0000201596 00000 n 0000184434 00000 n 0000201437 00000 n 0000184214 00000 n 0000182332 00000 n 0000184057 00000 n 0000181408 00000 n 0000166042 00000 n 0000181248 00000 n 0000165237 00000 n 0000153219 00000 n 0000165077 00000 n 0000152527 00000 n 0000141521 00000 n 0000152367 00000 n 0000141219 00000 n 0000137686 00000 n 0000141062 00000 n 0000137260 00000 n 0000133519 00000 n 0000137101 00000 n 0000219028 00000 n 0000004163 00000 n 0000004048 00000 n 0000001898 00000 n 0000133095 00000 n 0000127771 00000 n 0000132935 00000 n 0000006563 00000 n 0000006448 00000 n 0000004269 00000 n 0000126322 00000 n 0000124388 00000 n 0000126162 00000 n 0000122404 00000 n 0000120190 00000 n 0000122243 00000 n 0000119714 00000 n 0000114900 00000 n 0000119554 00000 n 0000113663 00000 n 0000110604 00000 n 0000113502 00000 n 0000009110 00000 n 0000008995 00000 n 0000006729 00000 n 0000011601 00000 n 0000011486 00000 n 0000009252 00000 n 0000014177 00000 n 0000014062 00000 n 0000011731 00000 n 0000016492 00000 n 0000016377 00000 n 0000014295 00000 n 0000109974 00000 n 0000099029 00000 n 0000109814 00000 n 0000219137 00000 n 0000018359 00000 n 0000018244 00000 n 0000016622 00000 n 0000020793 00000 n 0000020678 00000 n 0000018489 00000 n 0000023656 00000 n 0000023541 00000 n 0000020935 00000 n 0000097144 00000 n 0000081870 00000 n 0000096985 00000 n 0000025898 00000 n 0000025783 00000 n 0000023822 00000 n 0000029248 00000 n 0000029133 00000 n 0000026040 00000 n 0000031438 00000 n 0000031323 00000 n 0000029366 00000 n 0000219247 00000 n 0000034506 00000 n 0000034391 00000 n 0000031580 00000 n 0000037733 00000 n 0000037618 00000 n 0000034624 00000 n 0000040601 00000 n 0000040483 00000 n 0000037887 00000 n 0000042972 00000 n 0000042854 00000 n 0000040768 00000 n 0000081366 00000 n 0000075795 00000 n 0000081204 00000 n 0000045442 00000 n 0000045324 00000 n 0000043116 00000 n 0000047981 00000 n 0000047862 00000 n 0000045610 00000 n 0000219360 00000 n 0000050254 00000 n 0000050135 00000 n 0000048124 00000 n 0000052976 00000 n 0000052857 00000 n 0000050385 00000 n 0000055155 00000 n 0000055036 00000 n 0000053143 00000 n 0000057442 00000 n 0000057323 00000 n 0000055274 00000 n 0000059678 00000 n 0000059559 00000 n 0000057561 00000 n 0000062086 00000 n 0000061967 00000 n 0000059797 00000 n 0000219477 00000 n 0000064358 00000 n 0000064239 00000 n 0000062217 00000 n 0000066534 00000 n 0000066415 00000 n 0000064477 00000 n 0000069176 00000 n 0000069057 00000 n 0000066665 00000 n 0000071941 00000 n 0000071822 00000 n 0000069295 00000 n 0000074610 00000 n 0000074491 00000 n 0000072121 00000 n 0000074777 00000 n 0000081634 00000 n 0000097703 00000 n 0000098081 00000 n 0000110278 00000 n 0000113874 00000 n 0000113954 00000 n 0000119966 00000 n 0000122611 00000 n 0000122731 00000 n 0000126556 00000 n 0000126776 00000 n 0000133341 00000 n 0000137494 00000 n 0000141461 00000 n 0000152872 00000 n 0000165667 00000 n 0000181962 00000 n 0000184410 00000 n 0000202129 00000 n 0000208337 00000 n 0000212935 00000 n 0000218806 00000 n 0000219594 00000 n 0000219685 00000 n 0000219795 00000 n trailer << /Size 176 /Root 174 0 R /Info 175 0 R >> startxref 219891 %%EOF smbldap-tools-0.9.9/doc/smbldap-tools.html0000664000175000017500000025651611630116634020462 0ustar fumiyasfumiyas Smbldap-tools User Manual (Release: 0.9.3 )
Copyright 2002 © IDEALX S.A.S. - Contact: samba@IDEALX.org

Smbldap-tools User Manual
(Release: 0.9.3 )

Jérôme Tournier

Revision: 1.7 , generated April 22, 2008

Release:  
Reference:  
Publication date:  
Print date: April 22, 2008

This document is the property of IDEALX1. Permission is granted to distribute this document under the terms of the GNU Free Documentation License (http://www.gnu.org/copyleft/fdl.html).

Table of Contents

1  Introduction

Smbldap-tools is a set of scripts designed to help integrate Samba and a LDAP directory. They target both users and administrators of Linux systems.

Users can change their password in a way similar to the standard ``passwd'' command.

Administrators can perform user and group management command line actions and synchronise Samba account management consistently.

This document presents:
  • a detailled view of the smbldap-tools scripts
  • a step by step explanation of how to set up a Samba3 domain controller

1.1  Software requirements

The smbldap-tools have been developped and tested with the following configuration :
  • Linux CentOS4 (be should work on any Linux distribution)
  • Samba release 3.0.10,
  • OpenLDAP release 2.2.13
  • Microsoft Windows NT 4.0, Windows 2000 and Windows XP Workstations and Servers,
This guide applies to smbldap-tools Release: 0.9.3 .

1.2  Updates of this document

The most up to date release of this document may be found on the smbldap-tools project page available at https://gna.org/projects/smbldap-tools/.

If you find any bugs in this document, or if you want this document to integrate some additional infos, please drop me a mail with your bug report and/or change request at jtournier@gmail.com.

1.3  Availability of this document

This document is the property of IDEALX (http://www.IDEALX.com/).

Permission is granted to distribute this document under the terms of the GNU Free Documentation License (See http://www.gnu.org/copyleft/fdl.html).

2  Installation

2.1  Requirements

The main requirement for using smbldap-tools are the two perl module: Net::LDAP and Crypt::SmbHash. In most cases, you'll also need the IO-Socket-SSL Perl module to use TLS functionnality.

If you want samba to call the scripts so that you can use the User Manager (or any other) under MS-Windows (to add, delete modify users and groups), Samba must be installed on the same computer. Finally, OpenLDAP can be installed on any computer. Please check that it can be contacted by a standard LDAP client software.

Samba and OpenLDAP installations will not be discussed here. You can consult the howto also available on the project page (http://sourceforge.net/projects/smbldap-tools/).

2.2  Installation

An archive of the smbldap-tools scripts can be downloaded on our project page http://sourceforge.net/projects/smbldap-tools/. Archive and RedHat packages are available.
If you are upgrading, look at the INSTALL file or read the link 6.13.

2.2.1  Installing from rpm

To install the scripts on a RedHat system, download the RPM package and run the following command:
rpm -Uvh smbldap-tools-0.9.3-1.i386.rpm

2.2.2  Installing from a tarball

On non RedHat system, download a source archive of the scripts. The current archive is smbldap-tools-0.9.3.tar.gz. Uncompress it and copy all of the Perl scripts in /usr/sbin directory, and the two configuration files in /etc/smbldap-tools/ directory:
mkdir /etc/smbldap-tools/
cp *.conf /etc//smbldap-tools/
cp smbldap-* /usr/sbin/
The configuration is now based on two differents files:
  • smbldap.conf: define global parameter
  • smbldap_bind.conf: define an administrative account to bind to the directory
The second file must be readable only for 'root', as it contains credentials allowing modifications on all the directory. Make sure the files are protected by running the following commands:
chmod 644 /etc/smbldap-tools/smbldap.conf
chmod 600 /etc/smbldap-tools/smbldap_bind.conf

3  Configuring the smbldap-tools

As mentioned in the previous section, you'll have to update two configuration files. The first (smbldap.conf) allows you to set global parameter that are readable by everybody, and the second (smbldap_bind.conf) defines two administrative accounts to bind to a slave and a master ldap server: this file must thus be readable only by root.

A script named configure.pl can help you to set their contents up. It is located in the tarball downloaded or in the documentation directory if you got the RPM archive (see /usr/share/doc/smbldap-tools-0.9.3/). Just invoke it:
/usr/share/doc/smbldap-tools-0.9.3/configure.pl
It will ask for the default values defined in your smb.conf file, and will update the two configuration files used by the scripts. Samba configuration file should then be already configured. Note that you can stop the script at any moment with the Crtl-c keys.
Before using this script :
  • the two configuration files must be present in the /etc/smbldap-tools/ directory
  • check that samba is configured and running, as the script will try to get your workgroup's domain secure id (SID).
In those files, parameters are defined like this:
key="value"
Full example configuration files can be found at 8.1.

3.1  The smbldap.conf file

This file is used to define parameters that can be readable by everybody. A full example file is available in section 8.1.1.

Let's have a look at all available parameters.
  • UID_START and GID_START : parameters deprecated
    • Those parameters must be removed or commented.
    • Available uid and gid are now defined in the default new entry sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}". See later for ${sambaDomain} and ${suffix} definitions.
  • SID : Secure Identifier Domain
    • Example: SID="S-1-5-21-3703471949-3718591838-2324585696"
    • Remark: you can get the SID for your domain using the "net getlocalsid" command. Samba must be up and running for this to work (it can take several minutes for a Samba server to correctly negotiate its status with other network servers).
  • sambaDomain : Samba Domain the Samba server is in charge
    • Example: sambaDomain="DOMSMB"
    • Remark: if not defined, parameter is taking from smb.conf configuration file
  • slaveLDAP : slave LDAP server
    • Example: slaveLDAP="127.0.0.1"
    • Remark: must be a resolvable DNS name or it's IP address
  • slavePort : port to contact the slave server
    • Example: slavePort="389"
  • masterLDAP : master LDAP server
    • Example: masterLDAP="127.0.0.1"
  • masterPort : port to contact the master server
    • Example: masterPort="389"
  • ldapTLS : should we use TLS connection to contact the ldap servers ?
    • Example: ldapTLS="1"
    • Remark: the LDAP severs must be configured to accept TLS connections. See section 5.2 of the Samba-LDAP Howto for more details (http://download.gna.org/smbldap-tools/docs/samba-ldap-howto/). If you are using TLS support, select port 389 to connect to the master and slave directories.
  • verify : How to verify the server's certificate (none, optional or require).
    • Example: verify="require"
    • Remarl: See ``man Net::LDAP'' in start_tls section for more details
  • cafile : the PEM-format file containing certificates for the CA that slapd will trust
    • Example: cafile="/etc/opt/IDEALX/smbldap-tools/ca.pem"
  • clientcert : the file that contains the client certificate
    • Example: clientcert="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.example.com.pem"
  • clientkey : the file that contains the private key that matches the certificate stored in the clientcert file
    • Example: clientkey="/etc/opt/IDEALX/smbldap-tools/smbldap-tools.example.com.key"
  • suffix : The distinguished name of the search base
    • Example: suffix="dc=example,dc=com"
  • usersdn : branch in which users account can be found or must be added
    • Example: usersdn="ou=Users,${suffix}"
    • Remark: this branch is not relative to the suffix value
  • computersdn : branch in which computers account can be found or must be added
    • Example: computersdn"ou=Computers,${suffix}"
    • Remark: this branch is not relative to the suffix value
  • groupsdn : branch in which groups account can be found or must be added
    • Example: groupsdn="ou=Groups,${suffix}"
    • Remarks: this branch is not relative to the suffix value
  • idmapdn : where are stored Idmap entries (used if samba is a domain member server)
    • Example: idmapdn="ou=Idmap,${suffix}"
    • Remarks: this branch is not relative to the suffix value
  • sambaUnixIdPooldn : object in which next uidNumber and gidNumber available are stored
    • Example: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
    • Remarks: this branch is not relative to the suffix value
  • scope : the search scope.
    • Example: scope="sub"
  • hash_encrypt : hash to be used when generating a user password.
    • Example: hash_encrypt="SSHA"
    • Remark: This is used for the unix password stored in userPassword attribute.
  • crypt_salt_format="%s" : if hash_encrypt is set to CRYPT, you may set a salt format. Default is "%s", but many systems will generate MD5 hashed passwords if you use "$1$%.8s". This parameter is optional.
  • userLoginShell : default shell given to users.
    • Example: userLoginShell="/bin/bash"
    • Remark: This is stored in loginShell attribute.
  • userHome : default directory where users's home directory are located.
    • Example: userHome="/home/%U"
    • Remark: This is stored in homeDirectory attribute.
  • userGecos : gecos used for users
    • Example: userGecos="System User"
  • defaultUserGid : default primary group set to users accounts
    • Example: defaultUserGid="513"
    • Remark: this is stored in gidNumber attribute.
  • defaultComputerGid : default primary group set to computers accounts
    • Example: defaultComputerGid="550"
    • Remark: this is stored in gidNumber attribute.
  • skeletonDir : skeleton directory used for users accounts
    • Example: skeletonDir="/etc/skel"
    • Remark: this option is used only if you ask for home directory creation when adding a new user.
  • defaultMaxPasswordAge : default validation time for Samba password (in days)
    • Example: defaultMaxPassword="55"
  • userSmbHome : samba share used to store user's home directory
    • Example: userSmbHome="\\PDC-SMB3\ home\%U"
    • Remark: this is stored in sambaHomePath attribute.
  • userProfile : samba share used to store user's profile
    • Example: userProfile="\\PDC-SMB3\ profiles\%U"
    • Remark: this is stored in sambaProfilePath attribute.
  • userHomeDrive : letter used on windows system to map the home directory
    • Example: userHomeDrive="K:"
  • userScript : default user netlogon script name. If not used, will be automatically username.cmd
    • Example: userScript="%U"
    • Remark: this is stored in sambaProfilePath attribute.
  • mailDomain : Domain appended to the users "mail" attribute.
    • Example: mailDomain="idealx.org"
  • with_smbpasswd : should we use the smbpasswd command to set the user's password (instead of the mkntpwd utility) ?
    • Example: with_smbpasswd="0"
    • Remark: must be a boolean value (0 or 1).
  • smbpasswd : path to the smbpasswd binary
    • Example: smbpasswd="/usr/bin/smbpasswd"
  • with_slappasswd : should we use the slappasswd command to set the Unix user's password (instead of the Crypt:: librairies) ?
    • Example: with_smbpasswd="0"
    • Remark: must be a boolean value (0 or 1).
  • slappasswd : path to the slappasswd binary
    • Example: smbpasswd="/usr/sbin/slappasswd"

3.2  The smbldap_bind.conf file

This file is only used by root to give bind parameters to the directory when modifications are asked. It contains distinguised names and credentials to connect to both the master and slave directories. A full example file is available in section 8.1.2.

Let's have a look at all available parameters.
  • slaveDN : distinguished name used to bind to the slave server
    • Example 1: slaveDN="cn=Manager,dc=example,dc=com"
    • Example 2: slaveDN=""
    • Remark: this can be the manager account of the directory or any LDAP account that has sufficient permissions to read the full directory (Slave directory is only used for reading). Anonymous connections uses the second example form.
  • slavePw : the credentials to bind to the slave server
    • Example 1: slavePw="secret"
    • Example 2: slavePw=""
    • Remark: the password must be stored here in clear form. This file must then be readable only by root! All anonymous connections use the second form provided in our example.
  • masterDN : the distinguished name used to bind to the master server
    • Example: masterDN="cn=Manager,dc=example,dc=com"
    • Remark: this can be the manager account of the directory or any LDAP account that has enough permissions to modify the content of the directory. Anonymous access does not make any sense here.
  • masterPw : the credentials to bind to the master server
    • Example: masterPw="secret"
    • Remark: the password must be in clear text. Be sure to protect this file against unauthorized readers!

4  Using the scripts

4.1  Initial directory's population

You can initialize the LDAP directory using the smbldap-populate script. To do that, the account defined in the /etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf to access the master directory must must be the manager account defined in the directory configuration. On RedHat system, this file is /etc/openldap/slapd.conf and the account is defined with
  rootdn          "cn=Manager,dc=example,dc=com"
  rootpw          secret
The smbldap_bind.conf file must then be configured so that the parameters to connect to the master LDAP server match the previous ones:
  masterDN="cn=Manager,dc=example,dc=com"
  masterPw="secret"

Available options for this script are summarized in the table 1:

option definition default value
-u uidNumber first uidNumber to allocate 1000
-g gidNumber first uidNumber to allocate 1000
-a user administrator login name Administrator
-b user guest login name nobody
-e file export a init file  
-i file import a init file  

Table 1: Options available for the smbldap-populate script


In the more general case, to set up your directory, simply use the following command:
[root@etoile root]# smbldap-populate 
Using builtin directory structure
adding new entry: dc=example,dc=com
adding new entry: ou=Users,dc=example,dc=com
adding new entry: ou=Groups,dc=example,dc=com
adding new entry: ou=Computers,dc=example,dc=com
adding new entry: ou=Idmap,dc=example,dc=org
adding new entry: cn=NextFreeUnixId,dc=example,dc=org
adding new entry: uid=Administrator,ou=Users,dc=example,dc=com
adding new entry: uid=nobody,ou=Users,dc=example,dc=com
adding new entry: cn=Domain Admins,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Users,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Guests,ou=Groups,dc=example,dc=com
adding new entry: cn=Print Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Backup Operators,ou=Groups,dc=example,dc=com
adding new entry: cn=Replicator,ou=Groups,dc=example,dc=com
adding new entry: cn=Domain Computers,ou=Groups,dc=example,dc=com
After this step, if you don't want to use the cn=Manager,dc=example,dc=com account anymore, you can create a dedicated account for Samba and the smbldap-tools. See section 8.2 for more details.

The cn=NextFreeUnixId,dc=example,dc=org entry is only used to defined the next uidNumber and gidNumber available for creating new users and groups. The default values for those numbers are 1000. You can change it with the -u and -g option. For example, if you want the first available value for uidNumber and gidNumber to be set to 1500, you can use the following command :
smbldap-populate -u 1550 -g 1500

4.2  User management

4.2.1  Adding a user

To add a user, use the smbldap-useradd script. Available options are summarized in the table 2. If applicable, default values are mentionned in the third column. Any string beginning with a $ symbol refers to a parameter defined in the /etc/opt/IDEALX/smbldap-tools/smbldap.conf configuration file.

option definition example default value
-a create a Windows account. Otherwise, only a Posix account is created    
-w create a Windows Workstation account    
-i create an interdomain trust account. See section 4.4 for more details    
-u set a uid value -u 1003 first uid available
-g set a gid value -g 1003 first gid available
-G add the new account to one or several supplementary groups (comma-separated) -G 512,550  
-d set the home directory -d /var/user $userHomePrefix/user
-s set the login shell -s /bin/ksh $userLoginShell
-c set the user gecos -c "admin user" $userGecos
-m creates user's home directory and copies /etc/skel into it    
-k set the skeleton dir (with -m) -k /etc/skel2 $skeletonDir
-P ends by invoking smbldap-passwd to set the user's password    
-A user can change password ? 0 if no, 1 if yes -A 1  
-B user must change password at first session ? 0 if no, 1 if yes -B 1  
-C set the samba home share -C \\PDC\homes $userSmbHome
-D set a letter associated with the home share -D H: $userHomeDrive
-E set DOS script to execute on login -E common.bat $userScript
-F set the profile directory -F \\PDC\profiles\user $userProfile
-H set the samba account control bits like'[NDHTUMWSLKI]' -H [X]  
-N set the canonical name of the user    
-S set the surname of the user    
-M local mailAddress (comma seperated) -M testuser,aliasuser  
-T forward mail address (comma seperated) -T testuser@domain.org  

Table 2: Options available to the smbldap-useradd script


For example, if you want to add a user named user_admin and who :
  • is a windows user
  • must belong to the group of gid=512 ('Domain Admins' group)
  • has a home directory
  • does not have a login shell
  • has a homeDirectory set to /dev/null
  • does not have a roaming profile
  • and for whom we want to set a first login password
you must invoke:
smbldap-useradd -a -G 512 -m -s /bin/false -d /dev/null -F "" -P user_admin

4.2.2  Removing a user

To remove a user account, use the smbldap-userdel script. Available options are

option definition
-r remove home directory
-R remove home directory interactively

Table 3: Option available to the smbldap-userdel script


For example, if you want to remove the user1 account from the LDAP directory, and if you also want to delete his home directory, use the following command :
smbldap-userdel -r user1
Note: '-r' is dangerous as it may delete precious and unbackuped data, please be careful.

4.2.3  Modifying a user

To modify a user account, use the smbldap-usermod script. Availables options are listed in the table 4.

option definition example
-c set the user gecos -c "admin user"
-d set the home directory -d /var/user
-u set a uid value -u 1003
-g set a gid value -g 1003
-G add the new account to one or several supplementary groups (comma-separated) -G 512,550
-G -512,550
-G +512,550
-s set the login shell -s /bin/ksh
-N set the canonical name of the user  
-S set the surname of the user  
-P ends by invoking smbldap-passwd to set the user's password  
-a add sambaSAMAccount objectclass  
-e set an expiration date for the password (format: YYYY-MM-DD HH:MM:SS)  
-A user can change password ? 0 if no, 1 if yes -A 1
-B user must change password at first session ? 0 if no, 1 if yes -B 1
-C set the samba home share -C \\PDC\homes
-C ""
-D set a letter associated with the home share -D H:
-D ""
-E set DOS script to execute on login -E common.bat
-E ""
-F set the profile directory -F \\PDC\profiles\user
-F ""
-H set the samba account control bits like'[NDHTUMWSLKI]' -H [X]
-I disable a user account -I 1
-J enable a user -J 1
-M local mailAddress (comma seperated) -M testuser,aliasuser
-T forward mail address (comma seperated) -T testuser@domain.org

Table 4: Options available to the smbldap-usermod script


You can also use the smbldap-userinfo script to update user's information. This script can also be used by users themselves to update their own informations listed in the tables 5 (adequats ACL must be set in the directory server). Available options are :

option definition example
-f set the full name's user -f MyName
-r set the room number -r 99
-w set the work phone number -w 111111111
-h set the home phone number -h 222222222
-o set other information (in gecos definition) -o "second stage"
-s set the default bash -s /bin/ksh

Table 5: Options available to the smbldap-userinfo script


4.3  Group management

4.3.1  Adding a group

To add a new group in the LDAP directory, use the smbldap-groupadd script. Available options are listed in the table 6.

option definition example
-a add automatic group mapping entry  
-g gid set the gidNumer for this group to gid -g 1002
-o gidNumber is not unique  
-r group-rid set the rid of the group to group-rid -r 1002
-s group-sid set the sid of the group to group-sid -s S-1-5-21-3703471949-3718591838-2324585696-1002
-t group-type set the sambaGroupType to group-type -t 2
-p print the gidNumber to stdout  

Table 6: Options available for the smbldap-groupadd script


4.3.2  Removing a group

To remove the group named group1, just use the following command :
smbldap-userdel group1

4.4  Adding a interdomain trust account

To add an interdomain trust account to the primary controller trust-pdc, use the -i option of smbldap-useradd as follows :
[root@etoile root]# smbldap-useradd -i trust-pdc
New password : *******
Retype new password : *******
The script will terminate asking for a password for this trust account. The account will be created in the directory branch where all computer accounts are stored (ou=Computers by default). The only two particularities of this account are that you are setting a password for this account, and the flags of this account are [I ].

5  Samba and the smbldap-tools scripts

5.1  General configuration

Samba can be configured to use the smbldap-tools scripts. This allows administrators to add, delete or modify user and group accounts for Microsoft Windows operating systems using, for example, User Manager utility under MS-Windows. To enable the use of this utility, samba needs to be configured correctly. The smb.conf configuration file must contain the following directives :
ldap delete dn = Yes
add user script = /usr/local/sbin/smbldap-useradd -m "%u"
add machine script = /usr/local/sbin/smbldap-useradd -w "%u"
add group script = /usr/local/sbin/smbldap-groupadd -p "%g"
add user to group script = /usr/local/sbin/smbldap-groupmod -m "%u" "%g"
delete user from group script = /usr/local/sbin/smbldap-groupmod -x "%u" "%g"
set primary group script = /usr/local/sbin/smbldap-usermod -g "%g" "%u"

Remark: the two directives delete user script et delete group script can also be used. However, an error message can appear in User Manager even if the operations actually succeed. If you want to enable this behaviour, you need to add
delete user script = /usr/local/sbin/smbldap-userdel "%u"
delete group script = /usr/local/sbin/smbldap-groupdel "%g"

5.2  Migrating an NT4 PDC to Samba3

The account migration procedure becomes really simple when samba is configured to use the smbldap-tools. Samba configuration (smb.conf file) must contain the directive defined above to properly call the script for managing users, groups and computer accounts. The migration process is outlined in the chapter 30 of the samba howto http://sambafr.idealx.org/samba/docs/man/Samba-HOWTO-Collection/NT4Migration.html.

6  Frequently Asked Questions

6.1  How can i use old released uidNumber and gidNumber ?

There are two way to do this :
  • modify the cn=NextFreeUnixId,dc=example,dc=org and change the uidNumber and/or gidNumber value. This must be done manually. For example, if you want to use all available uidNumber and gidNumber higher then 1500, you need to create a update-NextFreeUnixId.ldif file containing :
    dn: cn=NextFreeUnixId,dc=example,dc=org
    changetype: modify
    uidNumber: 1500
    gidNumber: 1500
    
    and then update the directory :
    ldapmodify -x -D "cn=Manager,dc=example,dc=org" -w secret -f update-NextFreeUnixId.ldif
    
  • use the -u or -g option to the script you need to set the value you want to use

6.2  I always have this error: "Can't locate IO/Socket/SSL.pm"

This happens when you want to use a certificate. In this case, you need to install the IO-Socket-SSL Perl module.

6.3  I can't initialize the directory with smbldap-populate

When I want to initialize the directory using the smbldap-populate script, I get
[root@slave sbin]# smbldap-populate.pl
  Using builtin directory structure
  adding new entry: dc=example,dc=org
  Can't call method "code" without a package or object reference at
  /usr/local/sbin/smbldap-populate.pl line 270, <GEN1> line 2.
Answer: check the TLS configuration
  • if you don't want to use TLS support, set the /etc/opt/IDEALX/smbldap-tools/smbldap.conf file with
    ldapSSL="0"
    
  • if you want TLS support, set the /etc/opt/IDEALX/smbldap-tools/smbldap.conf file with
    ldapSSL="1"
    
    and check that the directory server is configured to accept TLS connections.

6.4  I can't join the domain with the root account

  • check that the root account has the sambaSamAccount objectclass
  • check that the directive add machine script is present and configured

6.5  I have the sambaSamAccount but i can't logged in

Check that the sambaPwdLastSet attribute is not null (equal to 0)

6.6  I want to create machine account on the fly, but it does not works or I must do it twice

  • The script defined with the add machine script must not add the sambaSAMAccount objectclass of the machine account. The script must only add the Posix machine account. Samba will add the sambaSAMAccount when joining the domain.
  • Check that the add machine script is present in samba configuration file.

6.7  I can't manage the Oracle Internet Database

If you have an error message like :
Function Not Implemented at /usr/local/sbin/smbldap_tools.pm line 187.
Function Not Implemented at /usr/local/sbin/smbldap_tools.pm line 627.
For Oracle Database, all attributes that will be resquested to the directory must be indexed. Add a new index for samba attributes and make sure that the following attributes are also indexed : uidNumber, gidNumber, memberUid, homedirectory, description, userPassword ...

6.8  The directive passwd program = /usr/local/sbin/smbldap-passwd -u %u is not called, or i got a error message when changing the password from windows

The directive is called if you also set unix password sync = Yes. Notes:
  • if you use OpenLDAP, none of those two options are needed. You just need ldap passwd sync = Yes.
  • the script called here must only update the userPassword attribute. This is the reason of the -u option. Samba passwords will be updated by samba itself.
  • the passwd chat directive must match what is prompted when using the smbldap-passwd command

6.9  New computers account can't be set in ou=computers

This is a known samba bug. There's a workarround: look at http://marc.theaimsgroup.com/?l=samba&m=108439612826440&w=2

6.10  I can join the domain, but i can't log on

look at section 6.9

6.11  I can't create a user with smbldap-useradd

When creating a new user account I get the following error message:
/usr/local/sbin/smbldap-useradd.pl: unknown group SID not set for unix group 513
Answer:
  • is nss_ldap correctly configured ?
  • is the default group's users mapped to the 'Domain Users' NT group ?
    net groupmap add rid=513 unixgroup="Domain Users" ntgroup="Domain Users"
    

6.12  smbldap-useradd: Can't call method "get_value" on an undefined value at /usr/local/sbin/smbldap-useradd line 154

  • does the default group defined in smbldap.conf exist (defaultUserGid="513") ?
  • does the NT "Domain Users" group mapped to a unix group of rid 513 (see option -r of smbldap-groupadd and smbldap-groupmod to set a rid) ?

6.13  Typical errors on creating a new user or a new group

  • i've got the following error:
    Could not find base dn, to get next uidNumber at /usr/local/sbin//smbldap_tools.pm line 909
    
    1. you do not have created the object to defined the next uidNumber and gidNumber available.
      • for version 0.8.7 : you can just run the smbldap-populate script that will update the sambaDomain entry to store those informations
      • for version before 0.8.7 : You have updated the smbldap-tools to version 0.8.5 or newer. You have to do this manually. Create an file called add.ldif and containing
        dn: cn=NextFreeUnixId,dc=example,dc=org
        objectClass: inetOrgPerson
        objectClass: sambaUnixIdPool
        uidNumber: 1000
        gidNumber: 1000
        cn: NextFreeUnixId
        sn: NextFreeUnixId
        
        and then add the object with the ldapadd utility:
        $ ldapadd -x -D "cn=Manager,dc=example,dc=org" -w secret -f add.ldif
        
        Here, 1000 is the first available value for uidNumber and gidNumber (of course, if this value is already used by a user or a group, the first available after 1000 will be used).


    2. The error also appear when there is a need for TLS (ldapTLS=1 in smbldap.conf) and something is wrong with certificate naming or path settings.


  • i've got the following error:
    Use of uninitialized value in string at
    /usr/local/sbin//smbldap\_tools.pm line 914.
    Error: No DN specified at /usr/local/sbin//smbldap\_tools.pm line 919
    
    You have not updated the configuration file to defined the object where are sotred the next uidNumber and gidNumber available. In our example, you have to add a nex entry in /etc/opt/IDEALX/smbldap-tools/smbldap.conf containing :
    # Where to store next uidNumber and gidNumber available
    sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
    
    btw, a new option is now available too: the domain to append to users. You can add to the configuration file the following lines:
    # Domain appended to the users "mail"-attribute
    # when smbldap-useradd -M is used mailDomain="idealx.com"
    


  • i've got the following error:
    Use of uninitialized value in concatenation (.) or string at /usr/local/sbin/smbldap-useradd line 183.
    Use of uninitialized value in substitution (s///) at /usr/local/sbin/smbldap-useradd line 185.
    Use of uninitialized value in string at /usr/local/sbin/smbldap-useradd line 264.
    failed to add entry: homedirectory: value #0 invalid per syntax at /usr/local/sbin/smbldap-useradd line 280.
    userHomeDirectory=User "jto" already member of the group "513".
    failed to add entry: No such object at /usr/local/sbin/smbldap-useradd line 382.
    
    you have to change the variable name userHomePrefix to userHome in /etc/opt/IDEALX/smbldap-tools/smbldap.conf

  • i've got the following error:
    failed to add entry: referral missing at /usr/local/sbin/smbldap-useradd line 279, <DATA> line 283.
    
    you have to update the configuration file that defined users, groups and computers dn. Those parameters must not be relative to the suffix parameter. A typical configuration look like this :
    usersdn="ou=Users,${suffix}"
    computersdn="ou=Computers,${suffix}"
    groupsdn="ou=Groups,${suffix}"
    


  • i've got the following error:
    erreur LDAP: Can't contact master ldap server (IO::Socket::INET: Bad protocol 'tcp')
    at /usr/local/sbin//smbldap_tools.pm line 153.
    
    remove ldap from /etc/nsswitch.conf for services list of possible check. For example, if your ldap directory is not configured to give services information, you must have
    services    files
    
    and not
    services:   ldap [NOTFOUND=return] files
    

7  Thanks

People who have worked on this document are
  • Jérôme Tournier <jerome.tournier@IDEALX.com>
  • David Barth <david.barth@IDEALX.com>
  • Nat Makarevitch <nat@IDEALX.com>
The authors would like to thank the following people for providing help with some of the more complicated subjects, for clarifying some of the internal workings of Samba or OpenLDAP, for pointing out errors or mistakes in previous versions of this document, or generally for making suggestions :
  • IDEALX team :
    • Roméo Adekambi <romeo.adekambi@IDEALX.com>
    • Aurelien Degremont <adegremont@IDEALX.com>
    • Renaud Renard <rrenard@IDEALX.com>
  • John H Terpstra <jht@samba.org>

8  Annexes

8.1  Full configuration files

8.1.1  The /etc/opt/IDEALX/smbldap-tools/smbldap.conf file

# $Source: $
# $Id: smbldap-tools.html 101 2011-09-02 08:31:25Z fumiyas $
#
# smbldap-tools.conf : Q & D configuration file for smbldap-tools

#  This code was developped by IDEALX (http://IDEALX.org/) and
#  contributors (their names can be found in the CONTRIBUTORS file).
#
#                 Copyright (C) 2001-2002 IDEALX
#
#  This program is free software; you can redistribute it and/or
#  modify it under the terms of the GNU General Public License
#  as published by the Free Software Foundation; either version 2
#  of the License, or (at your option) any later version.
#
#  This program 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.  See the
#  GNU General Public License for more details.
#
#  You should have received a copy of the GNU General Public License
#  along with this program; if not, write to the Free Software
#  Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,
#  USA.

#  Purpose :
#       . be the configuration file for all smbldap-tools scripts

##############################################################################
#
# General Configuration
#
##############################################################################

# Put your own SID. To obtain this number do: "net getlocalsid".
# If not defined, parameter is taking from "net getlocalsid" return
SID="S-1-5-21-2252255531-4061614174-2474224977"

# Domain name the Samba server is in charged.
# If not defined, parameter is taking from smb.conf configuration file
# Ex: sambaDomain="IDEALX-NT"
sambaDomain="DOMSMB"

##############################################################################
#
# LDAP Configuration
#
##############################################################################

# Notes: to use to dual ldap servers backend for Samba, you must patch
# Samba with the dual-head patch from IDEALX. If not using this patch
# just use the same server for slaveLDAP and masterLDAP.
# Those two servers declarations can also be used when you have 
# . one master LDAP server where all writing operations must be done
# . one slave LDAP server where all reading operations must be done
#   (typically a replication directory)

# Slave LDAP server
# Ex: slaveLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
slaveLDAP="ldap.example.info"

# Slave LDAP port
# If not defined, parameter is set to "389"
slavePort="389"

# Master LDAP server: needed for write operations
# Ex: masterLDAP=127.0.0.1
# If not defined, parameter is set to "127.0.0.1"
masterLDAP="ldap.example.info"

# Master LDAP port
# If not defined, parameter is set to "389"
#masterPort="389"
masterPort="389"

# Use TLS for LDAP
# If set to 1, this option will use start_tls for connection
# (you should also used the port 389)
# If not defined, parameter is set to "0"
ldapTLS="1"

# Use SSL for LDAP
# If set to 1, this option will use SSL for connection
# (standard port for ldaps is 636)
# If not defined, parameter is set to "0"
ldapSSL="0"

# How to verify the server's certificate (none, optional or require)
# see "man Net::LDAP" in start_tls section for more details
verify="require"

# CA certificate
# see "man Net::LDAP" in start_tls section for more details
cafile="/etc/smbldap-tools/ca.pem"

# certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientcert="/etc/smbldap-tools/smbldap-tools.example.info.pem"

# key certificate to use to connect to the ldap server
# see "man Net::LDAP" in start_tls section for more details
clientkey="/etc/smbldap-tools/smbldap-tools.example.info.key"

# LDAP Suffix
# Ex: suffix=dc=IDEALX,dc=ORG
suffix="dc=example,dc=info"

# Where are stored Users
# Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for usersdn
usersdn="ou=Users,${suffix}"

# Where are stored Computers
# Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for computersdn
computersdn="ou=Computers,${suffix}"

# Where are stored Groups
# Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for groupsdn
groupsdn="ou=Groups,${suffix}"

# Where are stored Idmap entries (used if samba is a domain member server)
# Ex: groupsdn="ou=Idmap,dc=IDEALX,dc=ORG"
# Warning: if 'suffix' is not set here, you must set the full dn for idmapdn
idmapdn="ou=Idmap,${suffix}"

# Where to store next uidNumber and gidNumber available for new users and groups
# If not defined, entries are stored in sambaDomainName object.
# Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"
# Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}"
sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}"

# Default scope Used
scope="sub"

# Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT)
hash_encrypt="SSHA"

# if hash_encrypt is set to CRYPT, you may set a salt format.
# default is "%s", but many systems will generate MD5 hashed
# passwords if you use "$1$%.8s". This parameter is optional!
crypt_salt_format="%s"

##############################################################################
# 
# Unix Accounts Configuration
# 
##############################################################################

# Login defs
# Default Login Shell
# Ex: userLoginShell="/bin/bash"
userLoginShell="/bin/bash"

# Home directory
# Ex: userHome="/home/%U"
userHome="/home/%U"

# Default mode used for user homeDirectory
userHomeDirectoryMode="700"

# Gecos
userGecos="System User"

# Default User (POSIX and Samba) GID
defaultUserGid="513"

# Default Computer (Samba) GID
defaultComputerGid="515"

# Skel dir
skeletonDir="/etc/skel"

# Default password validation time (time in days) Comment the next line if
# you don't want password to be enable for defaultMaxPasswordAge days (be
# careful to the sambaPwdMustChange attribute's value)
defaultMaxPasswordAge="45"

##############################################################################
#
# SAMBA Configuration
#
##############################################################################

# The UNC path to home drives location (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon home'
# directive and/or disable roaming profiles
# Ex: userSmbHome="\\PDC-SMB3\%U"
userSmbHome="\\PDC-SRV\%U"

# The UNC path to profiles locations (%U username substitution)
# Just set it to a null string if you want to use the smb.conf 'logon path'
# directive and/or disable roaming profiles
# Ex: userProfile="\\PDC-SMB3\profiles\%U"
userProfile="\\PDC-SRV\profiles\%U"

# The default Home Drive Letter mapping
# (will be automatically mapped at logon time if home directory exist)
# Ex: userHomeDrive="H:"
userHomeDrive="H:"

# The default user netlogon script name (%U username substitution)
# if not used, will be automatically username.cmd
# make sure script file is edited under dos
# Ex: userScript="startup.cmd" # make sure script file is edited under dos
userScript="logon.bat"

# Domain appended to the users "mail"-attribute
# when smbldap-useradd -M is used
# Ex: mailDomain="idealx.com"
mailDomain="example.info"

##############################################################################
#
# SMBLDAP-TOOLS Configuration (default are ok for a RedHat)
#
##############################################################################

# Allows not to use smbpasswd (if with_smbpasswd == 0 in smbldap.conf) but
# prefer Crypt::SmbHash library
with_smbpasswd="0"
smbpasswd="/usr/bin/smbpasswd"

# Allows not to use slappasswd (if with_slappasswd == 0 in smbldap.conf)
# but prefer Crypt:: libraries
with_slappasswd="0"
slappasswd="/usr/sbin/slappasswd"

# comment out the following line to get rid of the default banner
# no_banner="1"


8.1.2  The /etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf file

############################
# Credential Configuration #
############################
# Notes: you can specify two differents configuration if you use a
# master ldap for writing access and a slave ldap server for reading access
# By default, we will use the same DN (so it will work for standard Samba
# release)
slaveDN="cn=Manager,dc=example,dc=info"
slavePw="secret"
masterDN="cn=Manager,dc=example,dc=info"
masterPw="secret"

8.1.3  The samba configuration file : /etc/samba/smb.conf

# Global parameters
[global]
 workgroup = DOMSMB
 netbios name = PDC-SRV
 security = user
 enable privileges = yes
 #interfaces = 192.168.5.11
 #username map = /etc/samba/smbusers
 server string = Samba Server %v
 #security = ads
 encrypt passwords = Yes
 min passwd length = 3
 #pam password change = no
 #obey pam restrictions = No

 # method 1:
 #unix password sync = no
 #ldap passwd sync = yes

 # method 2:
 unix password sync = yes
 ldap passwd sync = no
 passwd program = /usr/sbin/smbldap-passwd -u "%u"
 passwd chat = "Changing *\nNew password*" %n\n "*Retype new password*" %n\n"

 log level = 0
 syslog = 0
 log file = /var/log/samba/log.%U
 max log size = 100000
 time server = Yes
 socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
 mangling method = hash2
 Dos charset = 850
 Unix charset = ISO8859-1

 logon script = logon.bat
 logon drive = H:
        logon home = 
        logon path = 

 domain logons = Yes
 domain master = Yes
 os level = 65
 preferred master = Yes
 wins support = yes
 # passdb backend = ldapsam:"ldap://ldap1.company.com ldap://ldap2.company.com"
 passdb backend = ldapsam:ldap://127.0.0.1/
 ldap admin dn = cn=Manager,dc=company,dc=com
 #ldap admin dn = cn=samba,ou=DSA,dc=company,dc=com
 ldap suffix = dc=company,dc=com
        ldap group suffix = ou=Groups
        ldap user suffix = ou=Users
        ldap machine suffix = ou=Computers
 #ldap idmap suffix = ou=Idmap
        add user script = /usr/sbin/smbldap-useradd -m "%u"
        #ldap delete dn = Yes
        delete user script = /usr/sbin/smbldap-userdel "%u"
        add machine script = /usr/sbin/smbldap-useradd -t 0 -w "%u"
        add group script = /usr/sbin/smbldap-groupadd -p "%g" 
        #delete group script = /usr/sbin/smbldap-groupdel "%g"
        add user to group script = /usr/sbin/smbldap-groupmod -m "%u" "%g"
        delete user from group script = /usr/sbin/smbldap-groupmod -x "%u" "%g"
 set primary group script = /usr/sbin/smbldap-usermod -g '%g' '%u'

 # printers configuration
 #printer admin = @"Print Operators"
 load printers = Yes
 create mask = 0640
 directory mask = 0750
 #force create mode = 0640
 #force directory mode = 0750
 nt acl support = No
 printing = cups
 printcap name = cups
 deadtime = 10
 guest account = nobody
 map to guest = Bad User
 dont descend = /proc,/dev,/etc,/lib,/lost+found,/initrd
 show add printer wizard = yes
 ; to maintain capital letters in shortcuts in any of the profile folders:
 preserve case = yes
 short preserve case = yes
 case sensitive = no

[netlogon]
 path = /home/netlogon/
 browseable = No
 read only = yes

[profiles]
 path = /home/profiles
 read only = no
 create mask = 0600
 directory mask = 0700
 browseable = No
 guest ok = Yes
 profile acls = yes
 csc policy = disable
 # next line is a great way to secure the profiles 
 #force user = %U 
 # next line allows administrator to access all profiles 
 #valid users = %U "Domain Admins"

[printers]
        comment = Network Printers
        #printer admin = @"Print Operators"
        guest ok = yes 
        printable = yes
        path = /home/spool/
        browseable = No
        read only  = Yes
        printable = Yes
        print command = /usr/bin/lpr -P%p -r %s
        lpq command = /usr/bin/lpq -P%p
        lprm command = /usr/bin/lprm -P%p %j
        # print command = /usr/bin/lpr -U%U@%M -P%p -r %s
        # lpq command = /usr/bin/lpq -U%U@%M -P%p
        # lprm command = /usr/bin/lprm -U%U@%M -P%p %j
        # lppause command = /usr/sbin/lpc -U%U@%M hold %p %j
        # lpresume command = /usr/sbin/lpc -U%U@%M release %p %j
        # queuepause command = /usr/sbin/lpc -U%U@%M stop %p
        # queueresume command = /usr/sbin/lpc -U%U@%M start %p

[print$]
        path = /home/printers
        guest ok = No
        browseable = Yes
        read only = Yes
        valid users = @"Print Operators"
        write list = @"Print Operators"
        create mask = 0664
        directory mask = 0775

[public]
 path = /tmp
 guest ok = yes
 browseable = Yes
 writable = yes

8.1.4  The OpenLDAP configuration file : /etc/openldap/slapd.conf

#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include  /etc/openldap/schema/core.schema
include  /etc/openldap/schema/cosine.schema
include  /etc/openldap/schema/inetorgperson.schema
include  /etc/openldap/schema/nis.schema
include  /etc/openldap/schema/samba.schema

schemacheck on

# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2

# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral ldap://root.openldap.org

pidfile  /var/run/slapd.pid
argsfile /var/run/slapd.args

# Load dynamic backend modules:
# modulepath /usr/sbin/openldap
# moduleload back_bdb.la
# moduleload back_ldap.la
# moduleload back_ldbm.la
# moduleload back_passwd.la
# moduleload back_shell.la

# The next three lines allow use of TLS for encrypting connections using a
# dummy test certificate which you can generate by changing to
# /usr/share/ssl/certs, running "make slapd.pem", and fixing permissions on
# slapd.pem so that the ldap user or group can read it.  Your client software
# may balk at self-signed certificates, however.
#TLSCertificateFile /etc/openldap/ldap.company.com.pem
#TLSCertificateKeyFile /etc/openldap/ldap.company.com.key
#TLSCACertificateFile /etc/openldap/ca.pem
#TLSCipherSuite :SSLv3

# Sample security restrictions
# Require integrity protection (prevent hijacking)
# Require 112-bit (3DES or better) encryption for updates
# Require 63-bit encryption for simple bind
# security ssf=1 update_ssf=112 simple_bind=64

# Sample access control policy:
# Root DSE: allow anyone to read it
# Subschema (sub)entry DSE: allow anyone to read it
# Other DSEs:
#  Allow self write access
#  Allow authenticated users read access
#  Allow anonymous users to authenticate
# Directives needed to implement policy:
# access to dn.base="" by * read
# access to dn.base="cn=Subschema" by * read
# access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default policy
# allows anyone and everyone to read anything but restricts
# updates to rootdn.  (e.g., "access to * by * read")
#
# rootdn can always read and write EVERYTHING!

#######################################################################
# ldbm and/or bdb database definitions
#######################################################################

database bdb
suffix  "dc=company,dc=com"
rootdn  "cn=Manager,dc=company,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw  secret
# rootpw  {crypt}ijFYNcSNctBYg

# The database directory MUST exist prior to running slapd AND 
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory /var/lib/ldap
lastmod  on

# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,sn,mail,givenname    eq,pres,sub
index uidNumber,gidNumber,memberUid     eq,pres
index loginShell   eq,pres
## required to support pdb_getsampwnam
index uid                       pres,sub,eq
## required to support pdb_getsambapwrid()
index displayName               pres,sub,eq
index nisMapName,nisMapEntry            eq,pres,sub
index sambaSID                eq
index sambaPrimaryGroupSID   eq
index sambaDomainName         eq
index default                sub


# users can authenticate and change their password
access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdMustChange,sambaPwdLastSet
      by dn="cn=Manager,dc=company,dc=com" write
      by self write
      by anonymous auth
      by * none

# those 2 parameters must be world readable for password aging to work correctly
# (or use a priviledge account in /etc/ldap.conf to bind to the directory)
access to attrs=shadowLastChange,shadowMax
      by dn="cn=Manager,dc=company,dc=com" write
      by self write
      by * read

# all others attributes are readable to everybody
access to *
      by * read

# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
#     bindmethod=sasl saslmech=GSSAPI
#     authcId=host/ldap-master.example.com@EXAMPLE.COM

8.2  Changing the administrative account (ldap admin dn in smb.conf file)

If you don't want to use the cn=Manager,dc=example,dc=com account anymore, you can create a dedicated account for Samba and the smbldap-tools scripts. To do this, create an account named samba as follows (see section 4.2.1 for a more detailed syntax) :
smbldap-useradd -s /bin/false -d /dev/null -P samba
This command will ask you to set a password for this account. Let's set it to samba for this example. You then need to modify configuration files:
  • file /etc/opt/IDEALX/smbldap-tools/smbldap_bind.conf
        slaveDN="uid=samba,ou=Users,dc=example,dc=com"
        slavePw="samba"
        masterDN="uid=samba,ou=Users,dc=example,dc=com"
        masterPw="samba"
      
  • file /etc/samba/smb.conf
        ldap admin dn = uid=samba,ou=Users,dc=example,dc=com
      
    don't forget to also set the samba account password in secrets.tdb file :
    smbpasswd -w samba
    
  • file /etc/openldap/slapd.conf: give to the samba user permissions to modify some attributes: this user needs to be able to modify all the samba attributes and some others (uidNumber, gidNumber ...) :
    # users can authenticate and change their password
    access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPwdLastSet,sambaPwdMustChange
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by self write
          by anonymous auth
          by * none
    # some attributes need to be readable anonymously so that 'id user' can answer correctly
    access to attrs=objectClass,entry,gecos,homeDirectory,uid,uidNumber,gidNumber,cn,memberUid
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by * read
    # somme attributes can be writable by users themselves
    access to attrs=description,telephoneNumber
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by self write
          by * read
    # some attributes need to be writable for samba
    access to attrs=cn,sambaLMPassword,sambaNTPassword,sambaPwdLastSet,sambaLogonTime,sambaLogoffTime,sambaKickoffTime,
     sambaPwdCanChange,sambaPwdMustChange,sambaAcctFlags,displayName,sambaHomePath,sambaHomeDrive,sambaLogonScript,
     sambaProfilePath,description,sambaUserWorkstations,sambaPrimaryGroupSID,sambaDomainName,sambaSID,sambaGroupType,
     sambaNextRid,sambaNextGroupRid,sambaNextUserRid,sambaAlgorithmicRidBase
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by self read
          by * none
    # samba need to be able to create the samba domain account
    access to dn.base="dc=example,dc=com"
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by * none
    # samba need to be able to create new users account
    access to dn="ou=Users,dc=example,dc=com"
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by * none
    # samba need to be able to create new groups account
    access to dn="ou=Groups,dc=example,dc=com"
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by * none
    # samba need to be able to create new computers account
    access to dn="ou=Computers,dc=example,dc=com"
          by dn="uid=samba,ou=Users,dc=example,dc=com" write
          by * none
    # this can be omitted but we leave it: there could be other branch
    # in the directory
    access to *
          by self read
          by * none
      

8.3  known bugs

  • Option -B (user must change password) of smbldap-useradd does not have effect: when smbldap-passwd script is called, sambaPwdMustChange attribute is rewrite.

1
http://IDEALX.com/

Documents : Copyright © 2002 IDEALX S.A.S.. 'IDEALX' is the property of IDEALX. 'Samba' is the property of Samba Team. All other trademarks belong to their respective owners.


This document was translated from LATEX by HEVEA.
smbldap-tools-0.9.9/doc/smb.smbldap.conf.tmpl0000664000175000017500000000125311630116634021022 0ustar fumiyasfumiyas## Put 'include = @SAMBA_SYSCONFDIR@/smb.smbldap.conf' into ## your @SAMBA_SYSCONFDIR@/smb.conf file to enable smbldap-tools [global] add user script = @sbindir@/smbldap-useradd -m '%u' -t 1 rename user script = @sbindir@/smbldap-usermod -r '%unew' '%uold' delete user script = @sbindir@/smbldap-userdel '%u' set primary group script = @sbindir@/smbldap-usermod -g '%g' '%u' add group script = @sbindir@/smbldap-groupadd -p '%g' delete group script = @sbindir@/smbldap-groupdel '%g' add user to group script = @sbindir@/smbldap-groupmod -m '%u' '%g' delete user from group script = @sbindir@/smbldap-groupmod -x '%u' '%g' add machine script = @sbindir@/smbldap-useradd -w '%u' -t 1 smbldap-tools-0.9.9/doc/slapd.conf.example0000664000175000017500000001027711630116634020410 0ustar fumiyasfumiyas# # See slapd.conf(5) for details on configuration options. # This file should NOT be world readable. # include /etc/openldap/schema/core.schema include /etc/openldap/schema/cosine.schema include /etc/openldap/schema/inetorgperson.schema include /etc/openldap/schema/nis.schema include /etc/openldap/schema/samba.schema schemacheck on # Allow LDAPv2 client connections. This is NOT the default. allow bind_v2 # Do not enable referrals until AFTER you have a working directory # service AND an understanding of referrals. #referral ldap://root.openldap.org pidfile /var/run/slapd.pid argsfile /var/run/slapd.args # Load dynamic backend modules: # modulepath /usr/sbin/openldap # moduleload back_bdb.la # moduleload back_ldap.la # moduleload back_ldbm.la # moduleload back_passwd.la # moduleload back_shell.la # The next three lines allow use of TLS for encrypting connections using a # dummy test certificate which you can generate by changing to # /usr/share/ssl/certs, running "make slapd.pem", and fixing permissions on # slapd.pem so that the ldap user or group can read it. Your client software # may balk at self-signed certificates, however. #TLSCertificateFile /etc/openldap/ldap.example.com.pem #TLSCertificateKeyFile /etc/openldap/ldap.example.com.key #TLSCACertificateFile /etc/openldap/ca.pem #TLSCipherSuite :SSLv3 # Sample security restrictions # Require integrity protection (prevent hijacking) # Require 112-bit (3DES or better) encryption for updates # Require 63-bit encryption for simple bind # security ssf=1 update_ssf=112 simple_bind=64 # Sample access control policy: # Root DSE: allow anyone to read it # Subschema (sub)entry DSE: allow anyone to read it # Other DSEs: # Allow self write access # Allow authenticated users read access # Allow anonymous users to authenticate # Directives needed to implement policy: # access to dn.base="" by * read # access to dn.base="cn=Subschema" by * read # access to * # by self write # by users read # by anonymous auth # # if no access controls are present, the default policy # allows anyone and everyone to read anything but restricts # updates to rootdn. (e.g., "access to * by * read") # # rootdn can always read and write EVERYTHING! ####################################################################### # ldbm and/or bdb database definitions ####################################################################### database bdb suffix "dc=example,dc=com" rootdn "cn=Manager,dc=example,dc=com" # Cleartext passwords, especially for the rootdn, should # be avoided. See slappasswd(8) and slapd.conf(5) for details. # Use of strong authentication encouraged. rootpw secret #rootpw {crypt}ijFYNcSNctBYg # The database directory MUST exist prior to running slapd AND # should only be accessible by the slapd and slap tools. # Mode 700 recommended. directory /var/lib/ldap lastmod on # Indices to maintain for this database index objectClass eq,pres index ou,cn,sn,mail,givenname eq,pres,sub index uidNumber,gidNumber,memberUid eq,pres index loginShell eq,pres ## required to support pdb_getsampwnam index uid pres,sub,eq ## required to support pdb_getsambapwrid() index displayName pres,sub,eq index sambaSID eq index sambaPrimaryGroupSID eq index sambaDomainName eq index sambaGroupType eq index sambaSIDList eq # users can authenticate and change their password access to attrs=userPassword,sambaNTPassword,sambaLMPassword,sambaPasswordHistory,sambaPwdMustChange,sambaPwdLastSet by dn="cn=Manager,dc=example,dc=com" write by self write by anonymous auth by * none # those 2 parameters must be world readable for password aging to work correctly # (or use a priviledge account in /etc/ldap.conf to bind to the directory) access to attrs=shadowLastChange,shadowMax by dn="cn=Manager,dc=example,dc=com" write by self write by * read # all others attributes are readable to everybody access to * by * read # Replicas of this database #replogfile /var/lib/ldap/openldap-master-replog #replica host=ldap-1.example.com:389 starttls=critical # bindmethod=sasl saslmech=GSSAPI # authcId=host/ldap-master.example.com@EXAMPLE.COM smbldap-tools-0.9.9/README0000664000175000017500000000415311725100200015076 0ustar fumiyasfumiyas# $Id: README 90 2011-09-02 03:54:11Z fumiyas $ Latest version may be found at https://gna.org/projects/smbldap-tools/ Bug Report: * Upstream: https://gna.org/bugs/?group=smbldap-tools * Ubuntu: https://bugs.launchpad.net/ubuntu/+source/smbldap-tools/ * Debian: http://bugs.debian.org/cgi-bin/pkgreport.cgi?src=smbldap-tools Userful documentations: http://www.islandlinux.org/HOWTO/openldap_samba.html (see bug in nss_ldap) What those tools are for? =-=-=-=-=-=-=-=-=-=-=-=-= A collection of scripts, «over» user{add,del,mod} and group{add,del,mod} system tools to manipulate users and groups stored in LDAP directory, for DEN system like Samba-LDAP and pam/nss_ldap systems. Additionnaly, some scripts are designed to ease your migration from a Windows NT 4.0 PDC Server to a Samba-LDAP PDC Server (Killer?;-): smbldap-populate and doc/migration_scripts/smbldap-migrate. They are currently used with Samba 3.2 and later. In the future, some other function may come (like backup and restore, Novell migration tools, samba system activity report, dealing with mail functions, compliance to RFC2307...): consult TODO. What do SMBLDAP-TOOLS provide? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Those tools provide the following functions : * Populate LDAP database with a basic LDIF * Add a user or group * Delete a user or group * Modify all users or groups data (all attributes types stored in posixAccount, posixGroup and sambaSamAccount object class) Taking care of : * Staying compatible with all standard system tools options (user/group{add,del,mod}) * Be extensible for future developments (manipulation of shadow account options, for example) * Error management, in the way system tools do Constraints : * Usage of Perl (portability) * All options must be placed in an external configuration file * English localization What do SMBLDAP-TOOLS deliver? =-=-=-=-=-=-=-=-=-=-=-=-=-=-=- Contents : * Scripts (see FILES) * User documentation in pod format, included in the sources (or just use the -? option) These tools aim at delivering the same functionality as the corresponding system tools smbldap-tools-0.9.9/smbldap-config.pl0000664000175000017500000005024211725100200017440 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-config.pl 121 2011-10-07 05:40:06Z fumiyas $ # This script can help you setting up the smbldap_conf.pl file. It will set all # the default values that are defined in the smb.conf configuration file. You # should then start with this configuration file. You will also need the SID # for your samba domain: set up the domain controller before using this script. # This code was developed by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2002 IDEALX # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. use strict; use warnings; use File::Basename; # we need to be root to configure the scripts if ($< != 0) { die "Only root can configure the smbldap-tools scripts\n"; } print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- smbldap-tools script configuration -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Before starting, check . if your samba controller is up and running. . if the domain SID is defined (you can get it with the 'net getlocalsid') . you can leave the configuration using the Ctrl-c key combination . empty value can be set with the \".\" character\n"; print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-\n"; # we first check if Samba is up and running my $test_smb=`pidof smbd`; chomp($test_smb); die "\nSamba needs to be started first !\n" if ($test_smb eq "" || not defined $test_smb); print "Looking for configuration files...\n\n"; my $smb_conf="@SAMBA_SMB_CONF@"; print "Samba Configuration File Path [$smb_conf] > "; chomp(my $config_smb=); if ($config_smb ne "") { $smb_conf=$config_smb; } my $conf_dir = "@sysconfdir@"; print "\nThe default directory in which the smbldap configuration files are stored is shown.\n"; print "If you need to change this, enter the full directory path, then press enter to continue.\n"; print "Smbldap-tools Configuration Directory Path [$conf_dir] > "; my $conf_dir_tmp; chomp($conf_dir_tmp=); if ($conf_dir_tmp ne "") { $conf_dir=$conf_dir_tmp; } $conf_dir=~s/\/*$//; if (! -d $conf_dir) { mkdir "$conf_dir"; } my $smbldap_conf="$conf_dir"."/smbldap.conf"; my $smbldap_bind_conf="$conf_dir"."/smbldap_bind.conf"; # Let's read the smb.conf configuration file my %config; open (CONFIGFILE, "$smb_conf") || die "Unable to open $smb_conf for reading !\n"; while () { chomp($_); ## eat leading whitespace $_=~s/^\s*//; ## eat trailing whitespace $_=~s/\s*$//; ## throw away comments next if (($_=~/^#/) || ($_=~/^;/)); ## check for a param = value if ($_=~/=/) { #my ($param, $value) = split (/=/, $_); my ($param, $value) = ($_=~/([^=]*)=(.*)/i); $param=~s/./\l$&/g; $param=~s/\s+//g; $value=~s/^\s+//; $value=~s/"//g; $config{$param} = $value; #print "param=$param\tvalue=$value\n"; next; } } close (CONFIGFILE); print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"; print "Let's start configuring the smbldap-tools scripts ...\n\n"; # This function need 4 parameters: # . the description of the parameter # . name of the key it is related to in the %config hash (key similar as the name parameter in # smb.conf). You can get all the available keys using this: # foreach my $tmp (keys %config) { # print "key=$tmp\t value=$config{$tmp}\n"; # } # . if no value is found in smb.conf for the keys, this value is proposed # . the 'insist' variable: if set to 1, then the script will always call for a value # for the parameter. In other words, there's no default value, and it can't be set # to an empty string. sub read_entry { my $description=shift; my $value=shift; my $example_value=shift; my $insist=shift; my $value_tmp; chomp($value); $insist=0 if (! defined $insist); if (defined $config{$value} and $config{$value} ne "") { print "$description [$config{$value}] > "; $value_tmp=$config{$value}; } else { print "$description [$example_value] > "; $value_tmp="$example_value"; } chomp(my $get=); if ($get eq "") { $value=$value_tmp; } elsif ($get eq ".") { $value=""; } else { $value=$get; } if ($insist == 1 and "$value" eq "") { while ($insist == 1) { print " Warning: You really need to set this parameter...\n"; $description=~s/. / /; if (defined $config{$value}) { print "$description [$config{$value}] > "; $value_tmp=$config{$value}; } else { print "$description [$value] > "; $value_tmp="$value"; } chomp(my $get=); if ($get eq "") { $value=$value_tmp; } elsif ($get eq ".") { $value=""; } else { $value=$get; $insist=0; } } } return $value; } print ". workgroup name: name of the domain Samba acts as a PDC for\n"; my $workgroup=read_entry(" workgroup name","workgroup","",0); print ". netbios name: netbios name of the samba controller\n"; my $netbios_name=read_entry(" netbios name","netbiosname","",0); print ". logon drive: local path to which the home directory will be connected (for NT Workstations). Ex: 'H:'\n"; my $logondrive=read_entry(" logon drive","logondrive","",0); print ". logon home: home directory location (for Win95/98 or NT Workstation).\n (use %U as username) Ex:'\\\\$netbios_name\\%U'\n"; my $logonhome=read_entry(" logon home (press the \".\" character if you don't want homeDirectory)","logonhome","\\\\$netbios_name\\%U",0); #$logonhome=~s/\\/\\\\/g; print ". logon path: directory where roaming profiles are stored. Ex:'\\\\$netbios_name\\profiles\\\%U'\n"; my $logonpath=read_entry(" logon path (press the \".\" character if you don't want roaming profiles)","logonpath","\\\\$netbios_name\\profiles\\\%U",0); #$logonpath=~s/\\/\\\\/g; my $userHome=read_entry(". home directory prefix (use %U as username)","","/home/\%U",0); my $userHomeDirectoryMode=read_entry(". default users' homeDirectory mode","","700",0); my $userScript=read_entry(". default user netlogon script (use %U as username)","logonscript","",0); my $defaultMaxPasswordAge=read_entry(" default password validation time (time in days)","","45",0); ############################# # ldap directory parameters # ############################# my $ldap_suffix=read_entry(". ldap suffix","ldapsuffix","",0); my $ldap_group_suffix=read_entry(". ldap group suffix","ldapgroupsuffix","",0); $ldap_group_suffix=~s/ou=//; my $ldap_user_suffix=read_entry(". ldap user suffix","ldapusersuffix","",0); $ldap_user_suffix=~s/ou=//; my $ldap_machine_suffix=read_entry(". ldap machine suffix","ldapmachinesuffix","",0); $ldap_machine_suffix=~s/ou=//; my $ldap_idmap_suffix=read_entry(". Idmap suffix","ldapidmapsuffix","ou=Idmap",0); print ". sambaUnixIdPooldn: object where you want to store the next uidNumber\n"; print " and gidNumber available for new users and groups\n"; my $sambaUnixIdPooldn=read_entry(" sambaUnixIdPooldn object (relative to \${suffix})","","sambaDomainName=$workgroup",0); # parameters for the master ldap server my ($trash1,$server); if (defined $config{passdbbackend}) { ($trash1,$server)=($config{passdbbackend}=~m/(.*)ldap:\/\/(.*)/); } $server="127.0.0.1" unless defined($server); $server=~s/\///; my $ldapmasterserver; print ". ldap master server: IP address or DNS name of the master (writable) ldap server\n"; $ldapmasterserver=read_entry(" ldap master server","",$server,0); my $ldapmasterport; if (defined $config{ldapport}) { $ldapmasterport=read_entry(". ldap master port","ldapport","",0); } else { $ldapmasterport=read_entry(". ldap master port","","389",0); } my $ldap_master_admin_dn=read_entry(". ldap master bind dn","ldapadmindn","",0); system "stty -echo"; my $ldap_master_bind_password=read_entry(". ldap master bind password","","",1); print "\n"; system "stty echo"; # parameters for the slave ldap server print ". ldap slave server: IP address or DNS name of the slave ldap server: can also be the master one\n"; my $ldap_slave_server=read_entry(" ldap slave server","","$server",0); my $ldap_slave_port; if (defined $config{ldapport}) { $ldap_slave_port=read_entry(". ldap slave port","ldapport","",0); } else { $ldap_slave_port=read_entry(". ldap slave port","","389",0); } my $ldap_slave_admin_dn=read_entry(". ldap slave bind dn","ldapadmindn","",0); system "stty -echo"; my $ldap_slave_bind_password=read_entry(". ldap slave bind password","","",1); print "\n"; system "stty echo"; my $ldaptls=read_entry(". ldap tls support (1/0)","","0",0); my ($cert_verify,$cert_cafile,$cert_clientcert,$cert_clientkey)=("","","",""); if ($ldaptls == 1) { $cert_verify=read_entry(". How to verify the server's certificate (none, optional or require)","","require",0); $cert_cafile=read_entry(". CA certificate file","","$conf_dir/ca.pem",0); $cert_clientcert=read_entry(". certificate to use to connect to the ldap server","","$conf_dir/smbldap-tools.pem",0); $cert_clientkey=read_entry(". key certificate to use to connect to the ldap server","","$conf_dir/smbldap-tools.key",0); } # let's test if any sid is available # Here is the strategy: If smb.conf has 'domain master = No' # this means we are a BDC and we must obtain the SID from the PDC # using the command 'net rpc getsid -S PDC -Uroot%password' BEFORE # executing this script - that then guarantees the correct SID is available. my $sid_tmp=`net getlocalsid \$netbios_name 2>/dev/null | cut -f2 -d: | sed "s/ //g"`; chomp $sid_tmp; print ". SID for domain $config{workgroup}: SID of the domain (can be obtained with 'net getlocalsid $netbios_name')\n"; my $sid=read_entry(" SID for domain $config{workgroup}","","$sid_tmp",0); print ". unix password encryption: encryption used for unix passwords\n"; my $cryp_algo=read_entry(" unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA)","","SSHA",0); my $crypt_salt_format=""; if ( $cryp_algo eq "CRYPT" ) { print ". crypt salt format: If hash_encrypt is set to CRYPT, you may set \n"; print " a salt format. The default is \"\%s\", but many systems will generate\n"; print " MD5 hashed passwords if you use \"\$1\$\%\.8s\"\n"; $crypt_salt_format=read_entry(" crypt salt format","","\%s",0); } my $default_user_gidnumber=read_entry(". default user gidNumber","","513",0); my $default_computer_gidnumber=read_entry(". default computer gidNumber","","515",0); my $userLoginShell=read_entry(". default login shell","","/bin/bash",0); my $skeletonDir=read_entry(". default skeleton directory","","/etc/skel",0); my $mailDomain=read_entry(". default domain name to append to mail address", "","",0); print "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=\n"; my $template_smbldap=" # smbldap-tools.conf : Q & D configuration file for smbldap-tools # This code was developed by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2001-2002 IDEALX # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose : # . be the configuration file for all smbldap-tools scripts ############################################################################## # # General Configuration # ############################################################################## # Put your own SID. To obtain this number do: \"net getlocalsid\". # If not defined, parameter is taking from \"net getlocalsid\" return SID=\"$sid\" # Domain name the Samba server is in charged. # If not defined, parameter is taking from smb.conf configuration file # Ex: sambaDomain=\"IDEALX-NT\" sambaDomain=\"$workgroup\" ############################################################################## # # LDAP Configuration # ############################################################################## # Notes: to use to dual ldap servers backend for Samba, you must patch # Samba with the dual-head patch from IDEALX. If not using this patch # just use the same server for slaveLDAP and masterLDAP. # Those two servers declarations can also be used when you have # . one master LDAP server where all writing operations must be done # . one slave LDAP server where all reading operations must be done # (typically a replication directory) # Slave LDAP server # Ex: slaveLDAP=127.0.0.1 # If not defined, parameter is set to \"127.0.0.1\" slaveLDAP=\"$ldap_slave_server\" # Slave LDAP port # If not defined, parameter is set to \"389\" slavePort=\"$ldap_slave_port\" # Master LDAP server: needed for write operations # Ex: masterLDAP=127.0.0.1 # If not defined, parameter is set to \"127.0.0.1\" masterLDAP=\"$ldapmasterserver\" # Master LDAP port # If not defined, parameter is set to \"389\" masterPort=\"$ldapmasterport\" # Use TLS for LDAP # If set to 1, this option will use start_tls for connection # (you should also used the port 389) # If not defined, parameter is set to \"1\" ldapTLS=\"$ldaptls\" # How to verify the server's certificate (none, optional or require) # see \"man Net::LDAP\" in start_tls section for more details verify=\"$cert_verify\" # CA certificate # see \"man Net::LDAP\" in start_tls section for more details cafile=\"$cert_cafile\" # certificate to use to connect to the ldap server # see \"man Net::LDAP\" in start_tls section for more details clientcert=\"$cert_clientcert\" # key certificate to use to connect to the ldap server # see \"man Net::LDAP\" in start_tls section for more details clientkey=\"$cert_clientkey\" # LDAP Suffix # Ex: suffix=dc=IDEALX,dc=ORG suffix=\"$ldap_suffix\" # Where are stored Users # Ex: usersdn=\"ou=Users,dc=IDEALX,dc=ORG\" # Warning: if 'suffix' is not set here, you must set the full dn for usersdn usersdn=\"ou=$ldap_user_suffix,\${suffix}\" # Where are stored Computers # Ex: computersdn=\"ou=Computers,dc=IDEALX,dc=ORG\" # Warning: if 'suffix' is not set here, you must set the full dn for computersdn computersdn=\"ou=$ldap_machine_suffix,\${suffix}\" # Where are stored Groups # Ex: groupsdn=\"ou=Groups,dc=IDEALX,dc=ORG\" # Warning: if 'suffix' is not set here, you must set the full dn for groupsdn groupsdn=\"ou=$ldap_group_suffix,\${suffix}\" # Where are stored Idmap entries (used if samba is a domain member server) # Ex: groupsdn=\"ou=Idmap,dc=IDEALX,dc=ORG\" # Warning: if 'suffix' is not set here, you must set the full dn for idmapdn idmapdn=\"$ldap_idmap_suffix,\${suffix}\" # Where to store next uidNumber and gidNumber available for new users and groups # If not defined, entries are stored in sambaDomainName object. # Ex: sambaUnixIdPooldn=\"sambaDomainName=\${sambaDomain},\${suffix}\" # Ex: sambaUnixIdPooldn=\"cn=NextFreeUnixId,\${suffix}\" sambaUnixIdPooldn=\"$sambaUnixIdPooldn,\${suffix}\" # Default scope Used scope=\"sub\" # Unix password encryption (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) hash_encrypt=\"$cryp_algo\" # if hash_encrypt is set to CRYPT, you may set a salt format. # default is \"\%s\", but many systems will generate MD5 hashed # passwords if you use \"\$1\$\%\.8s\". This parameter is optional! crypt_salt_format=\"$crypt_salt_format\" ############################################################################## # # Unix Accounts Configuration # ############################################################################## # Login defs # Default Login Shell # Ex: userLoginShell=\"/bin/bash\" userLoginShell=\"$userLoginShell\" # Home directory # Ex: userHome=\"/home/\%U\" userHome=\"$userHome\" # Default mode used for user homeDirectory userHomeDirectoryMode=\"$userHomeDirectoryMode\" # Gecos userGecos=\"System User\" # Default User (POSIX and Samba) GID defaultUserGid=\"$default_user_gidnumber\" # Default Computer (Samba) GID defaultComputerGid=\"$default_computer_gidnumber\" # Skel dir skeletonDir=\"$skeletonDir\" # Default password validation time (time in days) Comment the next line if # you don't want password to be enable for defaultMaxPasswordAge days (be # careful to the sambaPwdMustChange attribute's value) defaultMaxPasswordAge=\"$defaultMaxPasswordAge\" ############################################################################## # # SAMBA Configuration # ############################################################################## # The UNC path to home drives location (\%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon home' # directive and/or disable roaming profiles # Ex: userSmbHome=\"\\\\PDC-SMB3\\%U\" userSmbHome=\"$logonhome\" # The UNC path to profiles locations (\%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon path' # directive and/or disable roaming profiles # Ex: userProfile=\"\\\\PDC-SMB3\\profiles\\\%U\" userProfile=\"$logonpath\" # The default Home Drive Letter mapping # (will be automatically mapped at logon time if home directory exist) # Ex: userHomeDrive=\"H:\" userHomeDrive=\"$logondrive\" # The default user netlogon script name (\%U username substitution) # if not used, will be automatically username.cmd # make sure script file is edited under dos # Ex: userScript=\"startup.cmd\" # make sure script file is edited under dos userScript=\"$userScript\" # Domain appended to the users \"mail\"-attribute # when smbldap-useradd -M is used # Ex: mailDomain=\"idealx.com\" mailDomain=\"$mailDomain\" ############################################################################## # # SMBLDAP-TOOLS Configuration (default are ok for a RedHat) # ############################################################################## # Allows not to use smbpasswd (if with_smbpasswd=\"0\" in smbldap.conf) but # prefer Crypt::SmbHash library with_smbpasswd=\"0\" smbpasswd=\"/usr/bin/smbpasswd\" # Allows not to use slappasswd (if with_slappasswd=\"0\" in smbldap.conf) # but prefer Crypt:: libraries with_slappasswd=\"0\" slappasswd=\"/usr/sbin/slappasswd\" # comment out the following line to get rid of the default banner # no_banner=\"1\" "; my $template_smbldap_bind=" ############################ # Credential Configuration # ############################ # Note: you can specify two different configurations if you use a # master ldap for writing access and a slave ldap server for reading access # By default, we will use the same DN (so it will work for standard Samba # release) slaveDN=\"$ldap_master_admin_dn\" slavePw=\"$ldap_master_bind_password\" masterDN=\"$ldap_slave_admin_dn\" masterPw=\"$ldap_slave_bind_password\" "; print "backup old configuration files:\n"; print " $smbldap_conf->$smbldap_conf.old\n"; print " $smbldap_bind_conf->$smbldap_bind_conf.old\n"; rename "$smbldap_conf","$smbldap_conf.old"; rename "$smbldap_bind_conf","$smbldap_bind_conf.old"; print "writing new configuration file:\n"; open (SMBLDAP,'>',"$smbldap_conf") || die "Unable to open $smbldap_conf for writing !\n"; print SMBLDAP "$template_smbldap"; close(SMBLDAP); print " $smbldap_conf done.\n"; my $mode=0644; chmod $mode,"$smbldap_conf","$smbldap_conf.old"; open (SMBLDAP_BIND,'>',"$smbldap_bind_conf") || die "Unable to open $smbldap_bind_conf for writing !\n"; print SMBLDAP_BIND "$template_smbldap_bind"; close(SMBLDAP_BIND); print " $smbldap_bind_conf done.\n"; $mode=0600; chmod $mode,"$smbldap_bind_conf","$smbldap_bind_conf.old"; smbldap-tools-0.9.9/smbldap-userinfo.pl0000664000175000017500000002722112010176377020046 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-userinfo.pl 141 2012-08-07 11:20:42Z fumiyas $ # This code was developped by Jerome Tournier () # This was first contributed by IDEALX (http://www.opentrust.com/) # Originally developped by P.Wieleba@iem.pw.edu.pl # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; use Getopt::Std; use smbldap_tools; # function declaration sub exist_in_tab; my %Options; my $ok = getopts('f:h:lo:r:s:vw:?', \%Options); if ( (!$ok) || ($Options{'?'}) ) { print "Usage: $0 [-fhlorsvw?] username\n"; print " -f full_name\n"; print " -h home_ph\n"; print " -l only list user information\n"; print " -o other\n"; print " -r room_no\n"; print " -s shell\n"; print " -v show modified user record\n"; print " -w work_ph\n"; print " -? show this help message\n"; exit (1); } my $user; my $pass; if ( $< != 0 ) { my $current_user = getpwuid($<); if ($current_user and $ARGV[0] and $current_user ne $ARGV[0] ) { die "Only root can change other users inormation\n"; } } else { if ( $ARGV[0] ) { $user = $ARGV[0]; } $pass = 1; } if (!defined($user)) { $user = getpwuid($<); } my ($dn,$ldap_master); # make a anonymous connection to get the corect user's dn (not necessarily in $config{usersdn} $ldap_master=connect_ldap_master(); my $user_entry = read_user_entry($user); if (!defined($user_entry)) { print "$0: user $user doesn't exist\n"; exit (1); } # get the dn of the user $dn= $user_entry->dn(); my $entry = read_user_entry($user); # unbind from LDAP $ldap_master->unbind(); if ($Options{'l'}) { if (! $entry->get_value('userPassword')) { print "ACL on userPassword requires authentication... \n"; $pass = password_read("Please enter your UNIX password: "); # now bind again with user's parameters $config{masterDN}="$dn"; $config{masterPw}="$pass"; $ldap_master=connect_ldap_master(); $entry = read_user_entry($user); if (!is_user_valid($user, $dn, $pass)) { print "\nWarning: Authentication failure. Will not display account status (lock/unlock).\n\n"; } else { print "\n"; } # unbind from LDAP $ldap_master->unbind(); } my %attrs = ( 'cn' => 'Full Name', 'sn' => 'Family Name', 'givenName' => 'First Name', 'LoginShell' => 'User Shell', 'roomNumber' => 'Room Number', 'telephoneNumber' => 'Work Phone', 'homePhone' => 'Home Phone', 'other' => 'Other', 'shadowMax' => 'Maximum number of days between Shadow password change', 'shadowMin' => 'Minimum number of days between Shadow password change', 'shadowInactive' => 'Shadow Inactive', 'shadowWarning' => 'Shadow Warning', 'shadowExpire' => 'Shadow Expires', 'shadowLastChange' => 'Shadow Last Change', 'userPassword' => 'Shadow Account Satus', 'sambaPwdLastSet' => 'Samba Password Last Set', 'sambaPwdMustChange' => 'Samba Password Must Change', 'sambaAcctFlags' => 'Samba Flags' ); foreach my $key ('cn','sn','givenName','LoginShell','roomNumber','telephoneNumber','homePhone','other','shadowMax','shadowMin','shadowWarning','shadowInactive','shadowExpire','shadowLastChange','userPassword','sambaPwdLastSet','sambaPwdMustChange','sambaAcctFlags') { my $value=$entry->get_value("$key"); if (defined $value and ($key eq "shadowExpire" || $key eq "shadowLastChange")) { $value=localtime($value*86400); $value=~/(\w*)\s(\w*)\s*(\d*)\s*(\d*):(\d*):(\d*)\s*(\d*)/; $value="$1 $2 $3 $7"; } if ($key eq "userPassword") { my $status; if ($value) { if ( $value =~ /!/ ) { $status="lock"; } else { $status="unlock"; } } else { $status="unknown"; } $value=$status; } if ($value and ($key eq "sambaPwdLastSet" || $key eq "sambaPwdMustChange") ) { $value=localtime($value); $value=~/(\w*)\s(\w*)\s*(\d*)\s*(\d*):(\d*):(\d*)\s*(\d*)/; $value="$1 $2 $3 $7 $4:$5"; } if (! defined $value) { print "$attrs{$key}: -\n"; } else { print "$attrs{$key}: $value\n"; } if ($value and $key eq "sambaAcctFlags") { $value=~s/\s*//g; } } exit; } # First, connecting to the directory if ($< != 0) { # non-root user if (!defined($pass)) { $pass = password_read("UNIX password: "); # now make a connection with the user's dn and password $config{masterDN}="$dn"; $config{masterPw}="$pass"; $ldap_master=connect_ldap_master(); $dn=$config{masterDN}; if (!is_user_valid($user, $dn, $pass)) { print "Authentication failure\n"; exit (10); } } } else { # root user $ldap_master=connect_ldap_master(); # test existence of user in LDAP my $dn_line; if (!defined($dn_line = get_user_dn($user))) { print "$0: user $user doesn't exist\n"; exit (10); } $dn = get_dn_from_line($dn_line); } # obtain old values $entry = read_user_entry($user); my %eng = ( 'name' => 'Full Name', 'shell' => 'User Shell', 'office' => 'Room Number', 'wphone' => 'Work Phone', 'hphone' => 'Home Phone', 'other' => 'Other', 'shadowMax' => 'Password Max', 'shadowMin' => 'Password Min', 'shadowInactive' => 'Password Inactive', 'shadowExpire' => 'Account Expires', 'shadowLastChange' => 'Last Change' ); my $gecos = $entry->get_value('gecos'); my %old; ( $old{'name'}, $old{'office'}, $old{'wphone'}, $old{'hphone'}, $old{'other'} ) = split(/,/,$gecos); $old{'shell'} = $entry->get_value('LoginShell'); # unbind from LDAP $ldap_master->unbind(); foreach my $key (keys %old) { !defined($old{$key}) and $old{$key}=""; } # read new values my %new; if ($Options{'f'}) { $new{'name'} = $Options{'f'}; } if ($Options{'r'}) { $new{'office'} = $Options{'r'}; } if ($Options{'w'}) { $new{'wphone'} = $Options{'w'}; } if ($Options{'h'}) { $new{'hphone'} = $Options{'h'}; } if ($Options{'o'}) { $new{'other'} = $Options{'o'}; } if ($Options{'s'}) { $new{'shell'} = $Options{'s'}; } if ( keys(%Options) < 1 or keys(%Options) == 1 and $Options{'v'} ) { print "Changing the user information for $user\n"; print "Enter the new value, or press ENTER for the default\n"; print " $eng{'shell'} [$old{'shell'}]: "; $new{'shell'} = readline(*STDIN); print " $eng{'name'} [$old{'name'}]: "; $new{'name'} = readline(*STDIN); print " $eng{'office'} [$old{'office'}]: "; $new{'office'} = readline(*STDIN); print " $eng{'wphone'} [$old{'wphone'}]: "; $new{'wphone'} = readline(*STDIN); print " $eng{'hphone'} [$old{'hphone'}]: "; $new{'hphone'} = readline(*STDIN); print " $eng{'other'} [$old{'other'}]: "; $new{'other'} = readline(*STDIN); } foreach my $key (keys %old) { if (!$new{$key}) { $new{$key} = $old{$key}; } } # simple check of new values foreach my $key (keys %new) { chop($new{$key}) if ( $new{$key}=~/\n$/ ); if ($new{$key} =~ /^\s+$/ and $key ne 'shell') { $new{$key} = ""; } elsif ($new{$key} =~ /^$/) { $new{$key} = $old{$key}; } elsif ($key ne 'other' and $new{$key} =~ /.*,.*/) { print "Comma cannot be used with $key.\n"; exit(6); } # $new{$key} eq "" } # [TODO] check if shell really exists if ( $new{'shell'} and !($new{'shell'}=~/^\/.+\/.+/) and ($old{'shell'}=~/^\/.+\/.+/) ) { $new{'shell'} = $old{'shell'}; } elsif ( $new{'shell'} and !($new{'shell'}=~/^\/.+\/.+/) or !$new{'shell'} and !$old{'shell'} ) { $new{'shell'} = '/bin/sh'; } if ( !$new{'name'} ) { $new{'name'} = $user; } # prepare gecos field $gecos = join(',', ( $new{'name'}, $new{'office'}, $new{'wphone'}, $new{'hphone'}, $new{'other'} ) ); my @tmp = split(/\s+/,$new{'name'}); my $sn = $tmp[$#tmp]; pop(@tmp); my $givenName = join(' ',@tmp); $entry->replace( 'gecos' => $gecos ); $entry->replace( 'cn' => $new{'name'} ); if ( exist_in_tab( [$entry->get_value('objectClass')],'inetOrgPerson') ) { if ( $sn ) { $entry->replace('sn' => $sn); } else { $entry->replace('sn' => $user); } if ( $givenName ) { $entry->replace('givenName' => $givenName); } else { $entry->get_value('givenName') and $entry->delete('givenName'); } if ( $new{'office'} ) { $entry->replace('roomNumber' => $new{'office'}); } else { $entry->get_value('roomNumber') and $entry->delete('roomNumber'); } if ( $new{'wphone'} ) { $entry->replace('telephoneNumber' => $new{'wphone'}); } else { $entry->get_value('telephoneNumber') and $entry->delete('telephoneNumber'); } if ( $new{'hphone'} ) { $entry->replace('homePhone' => $new{'hphone'}); } else { $entry->get_value('homePhone') and $entry->delete('homePhone'); } } #end of inetOrgPerson if ( $new{'shell'} ) { $entry->replace('loginShell' => $new{'shell'}); } else { $entry->get_value('loginShell') and $entry->delete('loginShell'); } if ($Options{'v'}) { $entry->dump(); } # bind to LDAP and update entry $ldap_master = connect_ldap_master(); my $mesg = $entry->update($ldap_master); if ($mesg->is_error()) { print "Error: " . $mesg->error() . "\n"; } else { print "LDAP updated\n"; } $ldap_master and $ldap_master->unbind; # Check if a $text element exists in @table # eg. exist_in_tab(\@table,$text); sub exist_in_tab { my($ref_tab,$text) = @_; my @tab = @$ref_tab; foreach my $elem (@tab) { if ( lc($elem) eq lc($text) ) { return 1; } } return 0; } ######################################## =head1 NAME smbldap-userinfo - change user real name, information and shell =head1 SYNOPSIS smbldap-userinfo [-f full_name] [-r room_no] [-w work_ph] [-h home_ph] [-o other] [-s login_shell] [-l] [-?] [-v] =head1 DESCRIPTION This command changes user gecos fields and login shell. The normal user can change only the fields for his own account, the super user may change the fiels for any account. If none of the options are selected, the command is run in an interactive mode for the current user account. User is asked for all fields. To accept a default value you should just press , otherwise write text and press . posixAccount objectClasses has to be present in the modified entry. If inetOrgPerson objectClass is also present additional attributes will be changed (givenName,sn,roomNumber,telephoneNumber, homePhone) -l Display users informations and password status. -f full_name affected attributes: 'gecos', 'cn' (and 'givenName', 'sn' if inetOrgPerson is present) -r room_number affected attributes: 'gecos' (and 'roomNumber' if inetOrgPerson is present) -w work_phone affected attributes: 'gecos' (and 'telephoneNumber' if inetOrgPerson is present) -h home_phone affected attributes: 'gecos' (and 'homePhone' if inetOrgPerson is present) -o other affected attributes: 'gecos' -s login_shell affected attributes: 'loginShell' -? show the help message -v verbose - show modified user entry =cut #' # The End smbldap-tools-0.9.9/smbldap.conf0000664000175000017500000001721112010174006016511 0ustar fumiyasfumiyas# $Id: smbldap.conf 139 2012-08-07 11:11:37Z fumiyas $ # # smbldap-tools.conf : Q & D configuration file for smbldap-tools # This code was developped by IDEALX (http://IDEALX.org/) and # contributors (their names can be found in the CONTRIBUTORS file). # # Copyright (C) 2001-2002 IDEALX # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, # USA. # Purpose : # . be the configuration file for all smbldap-tools scripts ############################################################################## # # General Configuration # ############################################################################## # Put your own SID. To obtain this number do: "net getlocalsid". # If not defined, parameter is taking from "net getlocalsid" return SID="S-1-5-21-2252255531-4061614174-2474224977" # Domain name the Samba server is in charged. # If not defined, parameter is taking from smb.conf configuration file # Ex: sambaDomain="IDEALX-NT" sambaDomain="DOMSMB" ############################################################################## # # LDAP Configuration # ############################################################################## # Notes: to use to dual ldap servers backend for Samba, you must patch # Samba with the dual-head patch from IDEALX. If not using this patch # just use the same server for slaveLDAP and masterLDAP. # Those two servers declarations can also be used when you have # . one master LDAP server where all writing operations must be done # . one slave LDAP server where all reading operations must be done # (typically a replication directory) # Slave LDAP server URI # Ex: slaveLDAP=ldap://slave.ldap.example.com/ # If not defined, parameter is set to "ldap://127.0.0.1/" slaveLDAP="ldap://ldap.example.com/" # Master LDAP server URI: needed for write operations # Ex: masterLDAP=ldap://master.ldap.example.com/ # If not defined, parameter is set to "ldap://127.0.0.1/" masterLDAP="ldap://ldap.example.com/" # Use TLS for LDAP # If set to 1, this option will use start_tls for connection # (you must also used the LDAP URI "ldap://...", not "ldaps://...") # If not defined, parameter is set to "0" ldapTLS="1" # How to verify the server's certificate (none, optional or require) # see "man Net::LDAP" in start_tls section for more details verify="require" # CA certificate # see "man Net::LDAP" in start_tls section for more details cafile="/etc/smbldap-tools/ca.pem" # certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details clientcert="/etc/smbldap-tools/smbldap-tools.example.com.pem" # key certificate to use to connect to the ldap server # see "man Net::LDAP" in start_tls section for more details clientkey="/etc/smbldap-tools/smbldap-tools.example.com.key" # LDAP Suffix # Ex: suffix=dc=IDEALX,dc=ORG suffix="dc=example,dc=com" # Where are stored Users # Ex: usersdn="ou=Users,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for usersdn usersdn="ou=Users,${suffix}" # Where are stored Computers # Ex: computersdn="ou=Computers,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for computersdn computersdn="ou=Computers,${suffix}" # Where are stored Groups # Ex: groupsdn="ou=Groups,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for groupsdn groupsdn="ou=Groups,${suffix}" # Where are stored Idmap entries (used if samba is a domain member server) # Ex: idmapdn="ou=Idmap,dc=IDEALX,dc=ORG" # Warning: if 'suffix' is not set here, you must set the full dn for idmapdn idmapdn="ou=Idmap,${suffix}" # Where to store next uidNumber and gidNumber available for new users and groups # If not defined, entries are stored in sambaDomainName object. # Ex: sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" # Ex: sambaUnixIdPooldn="cn=NextFreeUnixId,${suffix}" sambaUnixIdPooldn="sambaDomainName=${sambaDomain},${suffix}" # Default scope Used scope="sub" # Unix password hash scheme (CRYPT, MD5, SMD5, SSHA, SHA, CLEARTEXT) # If set to "exop", use LDAPv3 Password Modify (RFC 3062) extended operation. password_hash="SSHA" # if password_hash is set to CRYPT, you may set a salt format. # default is "%s", but many systems will generate MD5 hashed # passwords if you use "$1$%.8s". This parameter is optional! password_crypt_salt_format="%s" ############################################################################## # # Unix Accounts Configuration # ############################################################################## # Login defs # Default Login Shell # Ex: userLoginShell="/bin/bash" userLoginShell="/bin/bash" # Home directory # Ex: userHome="/home/%U" userHome="/home/%U" # Default mode used for user homeDirectory userHomeDirectoryMode="700" # Gecos userGecos="System User" # Default User (POSIX and Samba) GID defaultUserGid="513" # Default Computer (Samba) GID defaultComputerGid="515" # Skel dir skeletonDir="/etc/skel" # Treat shadowAccount object or not shadowAccount="1" # Default password validation time (time in days) Comment the next line if # you don't want password to be enable for defaultMaxPasswordAge days (be # careful to the sambaPwdMustChange attribute's value) defaultMaxPasswordAge="45" ############################################################################## # # SAMBA Configuration # ############################################################################## # The UNC path to home drives location (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon home' # directive and/or disable roaming profiles # Ex: userSmbHome="\\PDC-SMB3\%U" userSmbHome="\\PDC-SRV\%U" # The UNC path to profiles locations (%U username substitution) # Just set it to a null string if you want to use the smb.conf 'logon path' # directive and/or disable roaming profiles # Ex: userProfile="\\PDC-SMB3\profiles\%U" userProfile="\\PDC-SRV\profiles\%U" # The default Home Drive Letter mapping # (will be automatically mapped at logon time if home directory exist) # Ex: userHomeDrive="H:" userHomeDrive="H:" # The default user netlogon script name (%U username substitution) # if not used, will be automatically username.cmd # make sure script file is edited under dos # Ex: userScript="startup.cmd" # make sure script file is edited under dos userScript="logon.bat" # Domain appended to the users "mail"-attribute # when smbldap-useradd -M is used # Ex: mailDomain="idealx.com" mailDomain="example.com" ############################################################################## # # SMBLDAP-TOOLS Configuration (default are ok for a RedHat) # ############################################################################## # Allows not to use smbpasswd (if with_smbpasswd="0" in smbldap.conf) but # prefer Crypt::SmbHash library with_smbpasswd="0" smbpasswd="/usr/bin/smbpasswd" # Allows not to use slappasswd (if with_slappasswd="0" in smbldap.conf) # but prefer Crypt:: libraries with_slappasswd="0" slappasswd="/usr/sbin/slappasswd" # comment out the following line to get rid of the default banner # no_banner="1" smbldap-tools-0.9.9/smbldap-upgrade-0.9.6.pl0000664000175000017500000000304011725100200020264 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . use strict; use warnings; use smbldap_tools; my $base_attr = "sambaAlgorithmicRidBase"; my $base_value = 1000; my $ldap = eval { connect_ldap_master(); }; if ($@) { ## Not configured? die "$0: ERROR: Connecting to LDAP master failed: $@\n"; } my $search = $ldap->search( base => $config{suffix}, filter => "(objectClass=sambaDomain)", scope => "sub", attrs => [$base_attr], ); if ($search->code) { ## Not configured? die "$0: ERROR: Searching for sambaDomain object failed: " . $search->error . "\n"; } for my $entry ($search->entries) { next if (defined($entry->get_value($base_attr))); print "$0: Adding $base_attr to " . $entry->dn . " ...\n"; my $modify = $ldap->modify($entry->dn, add => [$base_attr => $base_value]); if ($modify->code) { die "$0: ERROR: Cannot add $base_attr to " . $entry->dn . ": " . $modify->error . "\n"; } } exit(0); smbldap-tools-0.9.9/Makefile.in0000664000175000017500000001147311725100200016266 0ustar fumiyasfumiyas# $Id: Makefile.in 122 2011-10-13 10:15:30Z mm1 $ SOURCE_DIR= . SOURCE_BUILD= $(SOURCE_DIR)/build ## ====================================================================== RELEASE= 1 DESTARCH= smbldap-tools-$(PACKAGE_VERSION) # where to build the rpm TOPDIR= $$HOME/redhat GPG_PATH= $$HOME/.gnupg RPMBUILD_COMMAND= rpmbuild -ba --sign BUILD_TARGETS= \ $(BUILD_PERL_MOD_TARGETS) \ $(BUILD_PERL_CMD_TARGETS) \ $(BUILD_PERL_MAN_TARGETS) \ smbldap-config.cmd \ smbldap-upgrade-0.9.6.cmd \ doc/smb.conf.example \ doc/smb.smbldap.conf.example \ # INSTALL_DIR= $(PERL_LIBDIR) INSTALL_FILES= $(BUILD_PERL_MOD_TARGETS) INSTALL_CMD_DIR= $(sbindir) INSTALL_CMDS= $(BUILD_PERL_CMD_TARGETS) PERL_MOD_SOURCES= smbldap_tools.pl PERL_CMD_SOURCES= \ smbldap-groupadd.pl \ smbldap-groupdel.pl \ smbldap-grouplist.pl \ smbldap-groupmod.pl \ smbldap-groupshow.pl \ smbldap-passwd.pl \ smbldap-populate.pl \ smbldap-useradd.pl \ smbldap-userdel.pl \ smbldap-userinfo.pl \ smbldap-userlist.pl \ smbldap-usermod.pl \ smbldap-usershow.pl PERL_MAN_SECTION= 8 BUILD_PERL_MOD_TARGETS= $(PERL_MOD_SOURCES:.pl=.pm) BUILD_PERL_CMD_TARGETS= $(PERL_CMD_SOURCES:.pl=.cmd) BUILD_PERL_MAN_TARGETS= $(BUILD_PERL_CMD_TARGETS:.cmd=.$(PERL_MAN_SECTION)) ## ====================================================================== include $(SOURCE_BUILD)/Makefile.common include $(SOURCE_BUILD)/Makefile.top ## ====================================================================== .SUFFIXES: .cmd .$(PERL_MAN_SECTION) .cmd.$(PERL_MAN_SECTION): @echo "Building $@ from $< ..." @$(POD2MAN_COMMAND) --section=$(PERL_MAN_SECTION) $< >$@.tmp @mv $@.tmp $@ ## ====================================================================== all: build build:: install:: install-files install-cmds ## ====================================================================== build_dir: @echo '%_topdir $(TOPDIR)' > $(HOME)/.rpmmacros @echo '%_signature gpg' >> $(HOME)/.rpmmacros @echo '%_gpg_name Jerome Tournier ' >> $(HOME)/.rpmmacros @echo '%_gpg_path $(GPG_PATH)' >> $(HOME)/.rpmmacros @mkdir -p $(TOPDIR)/BUILD @mkdir -p $(TOPDIR)/RPMS/i386 @mkdir -p $(TOPDIR)/SOURCES @mkdir -p $(TOPDIR)/SPECS @mkdir -p $(TOPDIR)/SRPMS rpm: dist build_dir @cp -f $(DESTARCH).tgz $(TOPDIR)/SOURCES/ @cp -f smbldap-tools.spec $(TOPDIR)/SPECS/ @perl -i -pe's@^\%define version(.*)@\%define version $(VERSION)@' $(TOPDIR)/SPECS/smbldap-tools.spec @perl -i -pe's@^\%define release(.*)@\%define release $(RELEASE)@' $(TOPDIR)/SPECS/smbldap-tools.spec @perl -i -pe's@^Source0(.*)@Source0: smbldap-tools-$(VERSION).tgz@' $(TOPDIR)/SPECS/smbldap-tools.spec @cd $(TOPDIR)/SPECS/ && $(RPMBUILD_COMMAND) smbldap-tools.spec @echo "Signing packages smbldap-tools-$(VERSION)-$(RELEASE).noarch.rpm" @cd $(TOPDIR)/RPMS/noarch && gpg --detach smbldap-tools-$(VERSION)-$(RELEASE).noarch.rpm @echo "Signing packages smbldap-tools-$(VERSION)-$(RELEASE).src.rpm" @cd $(TOPDIR)/SRPMS/ && gpg --detach smbldap-tools-$(VERSION)-$(RELEASE).src.rpm @echo "Signing packages smbldap-tools-$(VERSION).tgz" @cd $(TOPDIR)/SOURCES/ && gpg --detach smbldap-tools-$(VERSION).tgz @echo "Arch: $(DESTARCH).tgz" home_devel: rpm @mkdir -p iallanis/{docs/{smbldap-tools,samba-ldap-howto},old,development_release} @cp -f iallanis/development_release/ChangeLog "/tmp/ChangeLog-homedevel-`date`" @cp -f ChangeLog iallanis/development_release/ @cp $(TOPDIR)/SOURCES/smbldap-tools-$(VERSION){.tgz,.tgz.sig} iallanis/development_release/ @cp $(TOPDIR)/RPMS/noarch/smbldap-tools-$(VERSION)-$(RELEASE).noarch{.rpm,.rpm.sig} iallanis/development_release/ @cp $(TOPDIR)/SRPMS/smbldap-tools-$(VERSION)-$(RELEASE).src{.rpm,.rpm.sig} iallanis/development_release/ @rsync -avz --delete --delete-excluded --exclude .svn -e "ssh -p 443" iallanis/ 192.168.10.1:/home/www/html/smbldap-tools home: rpm @cp -f iallanis/ChangeLog "/tmp/ChangeLog-home-`date`" @cp -f ChangeLog iallanis/ @cp doc/smbldap-tools/smbldap-tools.html iallanis/docs/smbldap-tools/index.html @cp doc/samba-ldap-howto/smbldap-howto.html iallanis/docs/samba-ldap-howto/index.html @cp $(TOPDIR)/SOURCES/smbldap-tools-$(VERSION){.tgz,.tgz.sig} iallanis/ @cp $(TOPDIR)/RPMS/noarch/smbldap-tools-$(VERSION)-$(RELEASE).noarch{.rpm,.rpm.sig} iallanis/ @cp $(TOPDIR)/SRPMS/smbldap-tools-$(VERSION)-$(RELEASE).src{.rpm,.rpm.sig} iallanis/ rsync -avz --delete --delete-excluded --exclude .svn -e "ssh -p 443" iallanis/ 192.168.10.1:/home/www/html/smbldap-tools gna: @cp -f ChangeLog GNA/packages/ @cp $(TOPDIR)/SOURCES/smbldap-tools-$(VERSION){.tgz,.tgz.sig} GNA/packages/ @cp $(TOPDIR)/RPMS/noarch/smbldap-tools-$(VERSION)-$(RELEASE).noarch{.rpm,.rpm.sig} GNA/packages/ @cp $(TOPDIR)/SRPMS/smbldap-tools-$(VERSION)-$(RELEASE).src{.rpm,.rpm.sig} GNA/packages/ rsync -avz -e ssh --delete --delete-excluded --exclude .svn GNA/ download.gna.org:/upload/smbldap-tools/ smbldap-tools-0.9.9/smbldap-groupdel.pl0000664000175000017500000000423711725100200020017 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-groupdel.pl 121 2011-10-07 05:40:06Z fumiyas $ # This code was developped by Jerome Tournier (jtournier@gmail.com) and # contributors (their names can be found in the CONTRIBUTORS file). # This was first contributed by IDEALX (http://www.opentrust.com/) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Purpose of smbldap-groupdel : group (posix) deletion use strict; use warnings; use smbldap_tools; ##################### use Getopt::Std; my %Options; my $ok = getopts('?', \%Options); if ( (!$ok) || (@ARGV < 1) || ($Options{'?'}) ) { print_banner; print "Usage: $0 groupname\n"; print " -? show this help message\n"; exit (1); } my $_groupName = $ARGV[0]; my $ldap_master=connect_ldap_master(); my $dn_line; if (!defined($dn_line = get_group_dn($_groupName))) { print "$0: group $_groupName doesn't exist\n"; exit (6); } my $dn = get_dn_from_line($dn_line); group_del($dn); nsc_invalidate("group"); #if (defined($dn_line = get_group_dn($_groupName))) { # print "$0: failed to delete group\n"; # exit (7); #} # take down session $ldap_master->unbind; exit (0); ############################################################ =head1 NAME smbldap-groupdel - Delete a group =head1 SYNOPSIS smbldap-groupdel group =head1 DESCRIPTION The smbldap-groupdel command modifies the system account files, deleting all entries that refer to a group. The named group must exist. You must manually check all filesystems to insure that no files remain with the named group as the file group ID. =head1 SEE ALSO groupdel(1) =cut #' smbldap-tools-0.9.9/COPYING0000664000175000017500000004325411725100200015256 0ustar fumiyasfumiyas GNU GENERAL PUBLIC LICENSE Version 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software--to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Lesser General Public License instead.) You can apply it to your programs, too. When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things. To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it. For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights. We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software. Also, for each author's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors' reputations. Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone's free use or not licensed at all. The precise terms and conditions for copying, distribution and modification follow. GNU GENERAL PUBLIC LICENSE TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 0. This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The "Program", below, refers to any such program or work, and a "work based on the Program" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term "modification".) Each licensee is addressed as "you". Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does. 1. You may copy and distribute verbatim copies of the Program's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program. You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee. 2. You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions: a) You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change. b) You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License. c) If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.) These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it. Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program. In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License. 3. You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following: a) Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, b) Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or, c) Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.) The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable. If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code. 4. You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance. 5. You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it. 6. Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License. 7. If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program. If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances. It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice. This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License. 8. If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License. 9. The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns. Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and "any later version", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation. 10. If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally. NO WARRANTY 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. END OF TERMS AND CONDITIONS How to Apply These Terms to Your New Programs If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms. To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the "copyright" line and a pointer to where the full notice is found. Copyright (C) This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program 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. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Also add information on how to contact you by electronic and paper mail. If the program is interactive, make it output a short notice like this when it starts in an interactive mode: Gnomovision version 69, Copyright (C) year name of author Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. This is free software, and you are welcome to redistribute it under certain conditions; type `show c' for details. The hypothetical commands `show w' and `show c' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than `show w' and `show c'; they could even be mouse-clicks or menu items--whatever suits your program. You should also get your employer (if you work as a programmer) or your school, if any, to sign a "copyright disclaimer" for the program, if necessary. Here is a sample; alter the names: Yoyodyne, Inc., hereby disclaims all copyright interest in the program `Gnomovision' (which makes passes at compilers) written by James Hacker. , 1 April 1989 Ty Coon, President of Vice This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. smbldap-tools-0.9.9/INFRA0000664000175000017500000000553611725100200015006 0ustar fumiyasfumiyas# $Id: INFRA 85 2011-07-14 09:24:46Z fumiyas $ # ## Some notes about the architecture Global Architecture for smbdlap-tools =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= smbldap-tools help you manage users and groups for Unix and Samba, using LDAP. They may be used in any context, and are kept relatively simplier enought to let you customize them to you needs. They need the following objectClasses to work: . sambaSamAccount: from samba.schema for Samba 3.2 or later . posixAccount and posixGroup : from nis.schema . organizationalUnit and dcObject: from core.schema They will probably use in a near future some additional objectClasses to support : . mail features (sendmail/postfix/qmail/courier). . conform to RFC2307 best practices (and so some maps too like merging NetBIOS computers (sambaSamAccount) with ipHosts For ease of visualization of the LDAP objects by human standards, we used a DIT like this one : . dc=example,dc=com : the company/organization suffix . ou=Users : to store users accounts . ou=Computers : to store computers accounts . ou=Groups : to store system groups Of course, you're free to use a different naming scheme and DIT (see smbldap.conf). Built in groups initial population =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= smbldap-populate populate the LDAP directory with some built in groups using gidNumber according to Well Know RID of Windows NT 4 Server. In fact, As far a Samba 3 is concerned, only the 'Domain Admins' (gidNumber 512) have real inpact on the Samba and Windows population. To activate this group as the Domain Administrators Group, use the following smb.conf directive (see man smb.conf for more): domain admin group = " @"Domain Admins" " Other built in groups are really cosmetic ones with Samba 2.2.x. We did not removed them because one of these days, we whish to use Samba 3.0 where Windows Group Support should be operational. Why these specific gidNumbers ? It's about Unix/Windows mapping of numerical IDs with Samba. IDs below 1024 are NT special IDs. In fact, 512 is the RID (Windows UID/GID) for the "Domain Administrators" NT group. The magic number is found in Samba sources and possibly other Samba/Windows documentations. The goal is to have a set of Unix users who are Domain Administrators and can modify Samba datas (eg. LDAP content), with commandline tools or within Windows via Samba. Say you want to add a Windows to an NT domain (controlled by a Samba/LDAP server). You give the domain administrator's login and password in the appropriate Windows settings, then the Windows contacts the Samba server, which checks the credentials and use them as unix user to run the smbldap-tools (if I remember). Giving 512 as a RID to a LDAP entry marks it as a domain admin for Samba (thus Windows). Using nss_ldap, you also have an account with GID 512. Known BUGS and WORKAROUND used =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= Not known. smbldap-tools-0.9.9/smbldap-usermod.pl0000664000175000017500000010776611725100200017667 0ustar fumiyasfumiyas#!@PERL_COMMAND@ # $Id: smbldap-usermod.pl 128 2012-03-05 08:00:09Z fumiyas $ # This code was developped by Jerome Tournier (jtournier@gmail.com) and # contributors (their names can be found in the CONTRIBUTORS file). # This was first contributed by IDEALX (http://www.opentrust.com/) # This program is free software: you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation, either version 2 of the License, or # (at your option) any later version. # # This program 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. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program. If not, see . # Purpose of smbldap-usermod : user (posix,shadow,samba) modification use strict; use warnings; use FindBin qw($RealBin); use smbldap_tools; use Time::Local; ##################### use Getopt::Long; my %Options; Getopt::Long::Configure('bundling'); my $ok = GetOptions( "A|sambaPwdCanChange=s" => \$Options{A}, "B|sambaPwdMustChange=s" => \$Options{B}, "C|sambaHomePath=s" => \$Options{C}, "D|sambaHomeDrive=s" => \$Options{D}, "E|sambaLogonScript=s" => \$Options{E}, "F|sambaProfilePath=s" => \$Options{F}, "G|group=s" => \$Options{G}, "H|sambaAcctFlags=s" => \$Options{H}, "I|sambaDisable" => \$Options{I}, "J|sambaEnable" => \$Options{J}, "L|shadowLock" => \$Options{L}, "M|mail=s" => \$Options{M}, "N|givenName=s" => \$Options{N}, "O|mailLocalAddress=s" => \$Options{O}, "P" => \$Options{P}, "U|shadowUnlock" => \$Options{U}, "S|surname=s" => \$Options{S}, "T|mailToAddress=s" => \$Options{T}, "X|inputEncoding=s" => \$Options{X}, "Z|attr=s@" => \$Options{Z}, "a|addsambaSAMAccount" => \$Options{a}, "c|gecos=s" => \$Options{c}, "d|homedir=s" => \$Options{d}, "e|expire=s" => \$Options{e}, "sambaExpire=s" => \$Options{sambaExpire}, "g|gid=s" => \$Options{g}, "h|?|help" => \$Options{h}, "o|canBeNotUnique" => \$Options{o}, "ou=s" => \$Options{ou}, "r|rename=s" => \$Options{r}, "s|shell=s" => \$Options{s}, "shadowExpire=s" => \$Options{shadowExpire}, "shadowMax=s" => \$Options{shadowMax}, "shadowMin=s" => \$Options{shadowMin}, "shadowInactive=s" => \$Options{shadowInactive}, "shadowWarning=s" => \$Options{shadowWarning}, "u|uid=s" => \$Options{u} ); if ( ( !$ok ) || ( @ARGV < 1 ) || ( $Options{'h'} ) ) { print_banner; print "Usage: $0 [options] username\n\n"; print "Available UNIX options are:\n"; print " -c|--gecos gecos\n"; print " -d|--homedir home directory\n"; print " -r|--rename username\n"; print " -u|--uid uid\n"; print " -o|--canBeNotUnique uid can be non unique\n"; print " -g|--gid supplementary groups (comma separated)\n"; print " -s|--shell shell\n"; print " -N|--givenName given name (first name)\n"; print " -S|--surname surname (family name)\n"; print " -P ends by invoking smbldap-passwd\n"; print " -M|--mail e-mail addresses (comma seperated)\n"; print " -O|--mailLocalAddress mailLocalAddress (comma separated)\n"; print " -T|--mailToAddress mailToAddress (forward address) (comma separated)\n"; print " -e|--expire Sets both shadow and samba expiration date: like \"YYYY-MM-DD(HH:MM:SS)\", or \"yYmMdD\" to extend y year,m months and d days\n"; print " --shadowExpire Shadow expiration date (like \"YYYY-MM-DD\") or 'n' days from today\n"; print " --shadowMax User must change the password, at least, every 'n' days\n"; print " --shadowMin user must wait 'n' days once the password has changed before changing it again\n"; print " --shadowInactive number of days of inactivity allowed for the specified user\n"; print " --shadowWarning User is warned that the password must be changed four days before the password expires\n"; print " -L|--shadowLock lock unix user's password\n"; print " -U|--shadowUnlock unlock unix user's password\n"; print " -Z add custom attributes, as name=value pairs comma separated\n"; print "\n"; print "Available SAMBA options are:\n"; print " -a|--addsambaSAMAccount add sambaSAMAccount objectclass\n"; print " --sambaExpire expire date (\"YYYY-MM-DD HH:MM:SS\")\n"; print " -A|--sambaPwdCanChange can change password ? 0 if no, 1 if yes\n"; print " -B|--sambaPwdMustChange must change password ? 0 if no, 1 if yes\n"; print " -C|--sambaHomePath sambaHomePath (SMB home share, like '\\\\PDC-SRV\\homes')\n"; print " -D|--sambaHomeDrive sambaHomeDrive (letter associated with home share, like 'H:')\n"; print " -E|--sambaLogonScript